Redis Sentinel 幫dataset提供 high availability機制,可設定master node自動複寫至各slave,
且當master node failure時,可自動failover to slave,減少人工管理成本。
這篇記錄自己安裝設定Redis 3 node cluster
架構
修改ricolab.redis.6379.conf (from master)
bind 0.0.0.0#允許所有IP
port 6379 #設定port
logfile "ricolab_server_log.txt" #設定log檔案名稱
dbfilename "dump_ricolab.rdb" #設定rdb檔案名稱
dir "c:\\Redis" #設定初始目錄
maxmemory 1gb #設定最大記憶體
maxmemory-policy allkeys-lru #維護database大小
protected-mode no #關閉
slaveof 192.167.121 6379 # for replication in the slave
下載sample sentinel.conf並修改
port 26379
bind 0.0.0.0
dir "C:\\Redis\\tmp"
loglevel notice
logfile "server_log_ricolab_sentinel.txt"
syslog-enabled yes
syslog-ident "redisricolab"
sentinel monitor redisricolab 192.167.1.121 6379 2
sentinel down-after-milliseconds redisricolab 3000
設定好後,把這兩個檔案複製到其他slave node。
安裝redis config(each server)
redis-server --service-install ricolab.redis.6379.conf --service-name redisricolab --port 6379
redis-server --service-install ricolab.redis.6380.conf --service-name redisricolab --port 6380
redis-server --service-install ricolab.redis.6381.conf --service-name redisricolab --port 6381
redis-server --service-install ricolab.sentinel.26379.conf --sentinel --service-name redisricolabsentinel
啟動redis service(each server)
redis-server --service-start --service-name redisricolab
redis-server --service-start --service-name redisricolabsentinel
查看replication設定
info replication
Test replication
在master node 新增string datatype
這時我們可以從log看到複寫同步成功
Test automatic failover
確認master node
SENTINEL get-master-addr-by-name redisricolab
停止master node的redis service 30秒
redis-cli -p 6379 DEBUG sleep 30
再次確認master node
可以看到failover to 192.167.1.122
現在停止192.167.1.122 redis services
再次failover to 192.167.1.123
現在我要回復原本架構,所以我在原本兩個slave node停止redis service
redis-cli -p 6380 DEBUG sleep 30
redis-cli -p 6381 DEBUG sleep 30
再次確認master node
Master node又回到最原本的192.167.1.121
參考