官網(wǎng): https://redis.io/topics/sentinel
參考: http://download.redis.io/redis-stable/sentinel.conf
上篇文章: http://www.reibang.com/p/e23c95f18dff
什么是Sentinel, 能做什么
Sentinel是Redis的高可用性解決方案, 主從復(fù)制解決了讀性能的優(yōu)化, 但是一旦Master宕機(jī)后, 其他的Slave的全部就變?yōu)椴豢捎? 因此Sentinel由此而生, 當(dāng)Master不可用時候, Sentinel就會用投票策略提升另外一臺可用的Slave作為Master, 當(dāng)Master重新恢復(fù)之后, 自動變?yōu)镾lave.
本文是在我的上一篇文章的基礎(chǔ)上進(jìn)行講解, 因為涉及到Master-slaver
1: 安裝
apt-get install redis-sentinel
2: 卸載
apt-get remove redis-sentinel
3: 配置文件
新建配置文件:sentinel.conf
參考官方的配置: http://download.redis.io/redis-stable/sentinel.conf
port 26379
sentinel monitor mymaster 10.0.0.99 6379 1
sentinel down-after-milliseconds mymaster 10000
sentinel failover-timeout mymaster 6000
sentinel auth-pass mymaster 111111
4: 依次啟動主(6379), 從(6380, 6381)
5: 啟動
redis-sentinel sentinel.conf
或者
redis-server sentinel.conf --sentinel
6: 觀察日志
從日志中可以觀察到, sentinel(6380,6381已經(jīng)被監(jiān)控)
# WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
# Sentinel ID is 0b53549b2b6d5d8c276d2cb3b2148fbc72008c0c
# +monitor master mymaster 10.0.0.99 6379 quorum 1
* +slave slave 10.0.0.99:6381 10.0.0.99 6381 @ mymaster 10.0.0.99 6379
* +slave slave 10.0.0.99:6380 10.0.0.99 6380 @ mymaster 10.0.0.99 6379
7: 停掉主的redis(6379)
kill
8: 觀察日志
從日志看, 已經(jīng)將6380提升為Master
# +monitor master mymaster 10.0.0.99 6379 quorum 1
# +sdown master mymaster 10.0.0.99 6379
# +odown master mymaster 10.0.0.99 6379 #quorum 1/1
# +new-epoch 1
# +try-failover master mymaster 10.0.0.99 6379
# +vote-for-leader 0b53549b2b6d5d8c276d2cb3b2148fbc72008c0c 1
# +elected-leader master mymaster 10.0.0.99 6379
# +failover-state-select-slave master mymaster 10.0.0.99 6379
# +selected-slave slave 10.0.0.99:6380 10.0.0.99 6380 @ mymaster 10.0.0.99 6379
* +failover-state-send-slaveof-noone slave 10.0.0.99:6380 10.0.0.99 6380 @ mymaster 10.0.0.99 6379
* +failover-state-wait-promotion slave 10.0.0.99:6380 10.0.0.99 6380 @ mymaster 10.0.0.99 6379
# +promoted-slave slave 10.0.0.99:6380 10.0.0.99 6380 @ mymaster 10.0.0.99 6379
# +failover-state-reconf-slaves master mymaster 10.0.0.99 6379
* +slave-reconf-sent slave 10.0.0.99:6381 10.0.0.99 6381 @ mymaster 10.0.0.99 6379
* +slave-reconf-inprog slave 10.0.0.99:6381 10.0.0.99 6381 @ mymaster 10.0.0.99 6379
# +failover-end-for-timeout master mymaster 10.0.0.99 6379
# +failover-end master mymaster 10.0.0.99 6379
* +slave-reconf-sent-be slave 10.0.0.99:6380 10.0.0.99 6380 @ mymaster 10.0.0.99 6379
* +slave-reconf-sent-be slave 10.0.0.99:6381 10.0.0.99 6381 @ mymaster 10.0.0.99 6379
# +switch-master mymaster 10.0.0.99 6379 10.0.0.99 6380
* +slave slave 10.0.0.99:6381 10.0.0.99 6381 @ mymaster 10.0.0.99 6380
* +slave slave 10.0.0.99:6379 10.0.0.99 6379 @ mymaster 10.0.0.99 6380
# +sdown slave 10.0.0.99:6379 10.0.0.99 6379 @ mymaster 10.0.0.99 6380
9: 連接6380,進(jìn)行讀寫操作
redis-cli -p 6380 -h 10.0.0.99
> keys *
1) "name"
> set age 112
OK