Redis(6)-設定Redis Sentinel & Replication

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

 

參考

Redis Sentinel Documentation

Replication

Redis Sentinel: Make your dataset highly available