天天看點

Redis Sentinel(哨兵模式)配置

前言:

     redis在主從模式下,如果master節點出現故障,redis不會進行切換主節點。如果要測試redis sentinel,首先要啟動redis主從,看我的另一篇部落格。

     redis sentinel主要功能:監控redis的運作狀态,若master節點出現問題,能夠選舉一個slave為主節點,并修改其他從節點的主節點位址。單個sentinel是不可靠的,sentinel也是支援叢集的,因為50%以上投票才生效,是以至少要3個sentinel節點。

配置:

port端口号

bind 192.168.94.151    和redis的bind一樣

daemonize yes 背景運作

sentinel monitor mymaster 192.168.94.151 7051 2     mymaster為自己起的叢集的名字,192.168.94.151 master的ip   7051master的端口号  2 當有兩個sentinel節點認為主節點出問題是,就可以發起failover,如果50%以上節點同意,就切換主節點成功

sentinel auth-pass mymaster xuhaixing  redis主節點的密碼

sentinel down-after-milliseconds <master-name> <milliseconds>  在一定的時間内,沒有PING通master節點,這個節點就認為master已經down,将其标記為主觀下線

sentinel failover-timeout <master-name> <milliseconds>  在該時間内未完成failover,則failover失敗

sentinel parallel-syncs <master-name> <numslaves>  在執行故障轉移時最多可以有多少個從節點同步新的主master

sentinel notification-script <master-name> <script-path> 在異常時可以執行調用腳本

啟動redis(主從部署看我另一篇文章)

[[email protected] redis-replicate]# redis-cli -h 192.168.94.151 -p 7051 -a xuhaixing
192.168.94.151:7051> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.94.151,port=7052,state=online,offset=56,lag=1
slave1:ip=192.168.94.151,port=7050,state=online,offset=56,lag=1
master_replid:dd924d2fb0001b41eca962f2030aa4694d572235
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:56
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:56
192.168.94.151:7051> 
           

啟動sentinel

[[email protected] redis-replicate]# cat sentinel-start.sh 
cd /usr/local/redis-replicate/7050
./redis-sentinel ./sentinel.conf
cd /usr/local/redis-replicate/7051
./redis-sentinel ./sentinel.conf
cd /usr/local/redis-replicate/7052
./redis-sentinel ./sentinel.conf
[[email protected] redis-replicate]# sh sentinel-start.sh 
1764:X 26 Jul 06:08:53.076 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1764:X 26 Jul 06:08:53.076 # Redis version=4.0.0, bits=64, commit=00000000, modified=0, pid=1764, just started
1764:X 26 Jul 06:08:53.076 # Configuration loaded
1766:X 26 Jul 06:08:53.099 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1766:X 26 Jul 06:08:53.099 # Redis version=4.0.0, bits=64, commit=00000000, modified=0, pid=1766, just started
1766:X 26 Jul 06:08:53.099 # Configuration loaded
1771:X 26 Jul 06:08:53.122 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1771:X 26 Jul 06:08:53.122 # Redis version=4.0.0, bits=64, commit=00000000, modified=0, pid=1771, just started
1771:X 26 Jul 06:08:53.122 # Configuration loaded
           
[[email protected] redis-replicate]# ps -ef|grep redis
root       1005      1  0 04:44 ?        00:00:07 /usr/local/redis/bin/redis-server 0.0.0.0:6379
root       1741      1  0 06:06 ?        00:00:00 ./redis-server 192.168.94.151:7050
root       1746      1  0 06:06 ?        00:00:00 ./redis-server 192.168.94.151:7051
root       1751      1  0 06:06 ?        00:00:00 ./redis-server 192.168.94.151:7052
root       1765      1  0 06:08 ?        00:00:00 ./redis-sentinel 192.168.94.151:27050 [sentinel]
root       1770      1  0 06:08 ?        00:00:00 ./redis-sentinel 192.168.94.151:27051 [sentinel]
root       1775      1  0 06:08 ?        00:00:00 ./redis-sentinel 192.168.94.151:27052 [sentinel]
root       1783   1537  0 06:10 pts/0    00:00:00 grep --color=auto redis
[[email protected] redis-replicate]# 
           
[[email protected] redis-replicate]# redis-cli -h 192.168.94.151 -p 27051 -a xuhaixing
192.168.94.151:27051> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.94.151:7051,slaves=2,sentinels=3
           

可以通過kill -9 程序号,幹掉redis主節點,等一會,再重新查叢集資訊,會發現主節點已經變了

如果因為網絡中斷,會出現兩個master的原因,可通過該redis配置

min-slaves-to-write 1
min-slaves-max-lag 10
           

min-slaves-to-write表示至少一個從庫時主庫才可以寫,否則傳回錯誤

min-slaves-max-lag表示允許從庫失去連接配接的時間

實時内容請關注微信公衆号,公衆号與部落格同時更新:程式員星星

Redis Sentinel(哨兵模式)配置

繼續閱讀