Redis集群分為主節點Master和從節點Slave,主節點只有1個,而從節點可以有多個,這樣從節點和主節點可以進行數據的傳輸,Redis集群的性能將比單機環境更高,接下來是配置的過程
首先配置Master節點,主節點的配置和之前Redis單機配置完全一樣,並不需要額外的其他任何配置
然后配置Slave節點,這里使用一台主節點,一台從節點做演示,Slave節點釋放安裝過程完全一樣,redis.conf配置首先保證和之前的配置參數一樣,即daemonize要設置為yes、logfile日志位置正確設置,dir數據目錄正確設置,然后在這個基礎上繼續添加下面的配置:
找到slave-read-only這一項,默認是yes,這里不用修改,是指Slave只能從Master上讀數據
然后再找到# slaveof <masterip> <masterport>這個位置,根據提示這里是設置master的ip地址和端口號,slave就是根據這個設置去和master通信的,所以去掉注釋設置為:slaveof 192.168.1.14 6379
補充完這些設置,保存並退出redis.conf即可,然后分別手動建立數據目錄和日志目錄
這時候執行命令 redis-server redis.conf 就可以啟動slave的redis服務了,然后使用 redis-cli 就可以進入redis客戶端了
然后我們輸入: keys * 查看所有存在的key,默認情況下因為我們沒有添加任何數據,所以應該返回空,但是之前在主節點我們添加過數據,所以在集群環境下會從master讀取數據,這里返回並不是空:
到這里最簡單的redis集群就算部署完成了,接下來補充一下安裝Sentinel這個工具來監控redis集群,Sentinel就是redis自帶的一個組件,我們可以在另外一台服務器上重新安裝redis和Sentinel監控節點,這里為了簡單就直接使用上面這一個Slave節點繼續補充安裝Sentinel
在Redis釋放安裝的目錄下,這里是/usr/redis/redis-3.0.7,這下面除了redis.conf之外,還有一個sentinel.conf就是用來配置Sentinel的,執行 vim sentinel.conf 編輯配置文件
首先在某一位置添加配置:daemonize yes,這個配置是默認沒有的,仍然表示Sentinel服務后台運行
然后找到sentinel monitor mymaster 127.0.0.1 6379 2這樣的一個默認配置,其中mymater是服務名稱127.0.0.1要改成master節點IP,我這里就是:sentinel monitor mymaster 192.168.1.14 6379 1 注意最后的2要改成1,這個表示哨兵的隊列,如果多個哨兵,那么可以依次往后排,這里是單哨兵,所以必須改為1,否則故障無法轉移;默認sentinel不打印日志,所以建議設置一下日志目錄,方面觀察集群的變動情況,設置比如:logfile "/usr/redis/sentinel.log" 指定一個日志文件位置即可,具體如下圖所示:
配置這些,保存並退出sentinel.conf
然后使用命令 redis-sentinel sentinel.conf 啟動Sentinel服務,
然后測試服務是否正常,執行命令 redis-cli -h localhost -p 26379 進入監控管理,26379就是Sentinel服務的端口號,在配置文件可以看到
進入管理界面之后,執行: sentinel master mymaster 可以查看master的信息
執行 sentinel slaves mymaster 可以查看slave的信息
到這里,監控服務Sentinel也部署完畢了,生產中可以專門有一台機器用於運行Sentinel和其他redis節點分開
另外可以擴展上面的sentinel配置至多個,來管理多個redis的集群或者主從,只是服務名不再是mymaster而是多個,比如master1,master2....等,非常簡單
現在可以簡單驗證故障轉移是否好用,在主節點執行 redis-cli -p 6379 shutdown 停止master節點
這時候查看sentinel.log日志可以看到主節點從14轉移到15,可以通過上面的命令查看或者在sentinel節點使用命令: redis-cli -p 26379 info Sentinel 查看管理信息,這時候就會看到主節點變為15,狀態仍然是良好,現在如果再次啟動14上面的redis,那么會被sentinel重新加入到管理,只是此時變為從節點了
到這里redis集群故障轉移是好用的,下面是常用到的一些命令:
查看本機redis節點的信息: redis-cli -p 6379 info Replication 如果端口默認,那么可以省略-p參數,作用和上面sentinel看到的類似
查看遠程redis節點信息,比如從主節點查看從節點信息: redis-cli -h 192.168.1.22 -p 26379 info Replication # -h后跟遠程ip地址
停止遠程主機redis服務: redis-cli -p 26379 -h 192.168.1.22 shutdown
連接遠程客戶端redis命令行: redis-cli -p 6379 -h 192.168.1.22 默認端口時-p同樣可以省略