層層鏈路
當(dāng) 一個從節(jié)點(diǎn) 其 主節(jié)點(diǎn) 為 另一個主節(jié)點(diǎn)的從節(jié)點(diǎn) 時,后者依舊為從節(jié)點(diǎn).
刪除主從關(guān)系:
127.0.0.1:6380> slaveof no one # 刪除之前設(shè)置的主從關(guān)系,恢復(fù)為主節(jié)點(diǎn)
OK
哨兵模式
自動切換主從關(guān)系的模式.
主從切換的模式方法是:當(dāng)主服務(wù)器宕機(jī)后,需要手動把一臺服務(wù)器切換為主服務(wù)器 ,費(fèi)時.
而Redis2.8后支持Sentinel(哨兵)框架解決該問題.
哨兵模式能夠后臺監(jiān)控主機(jī)是否故障,如果故障了會根據(jù)投票數(shù)自動將從庫轉(zhuǎn)換為主庫.
哨兵模式是一個特殊的模式,是一個獨(dú)立的進(jìn)程,需要獨(dú)立運(yùn)行.
其原理是哨兵通過發(fā)送命令,等待Redis服務(wù)器響應(yīng),從而監(jiān)控多個Redis實(shí)例.
然而一個哨兵進(jìn)程監(jiān)控Redis服務(wù)器,也有可能出現(xiàn)問題,為此,可以使用多個哨兵進(jìn)行監(jiān)控. 各個哨兵之間還會進(jìn)行監(jiān)控,從而形成多哨兵模式.
配置哨兵模式:
1.配置哨兵配置文件 sentinel.conf
------- 簡易配置 ----------
# sentinel monitor 被監(jiān)控的名稱 主機(jī)地址 端口 1(投票制)
sentinel monitor myredis 127.0.0.1 6379 1
------- 全部默認(rèn) ----------
# 這個是Redis6379配置內(nèi)容,其他文件同理新增然后改一下端口即可囱修,26380
#當(dāng)前Sentinel服務(wù)運(yùn)行的端口
protected-mode no
port 26381
# 哨兵監(jiān)聽的主服務(wù)器 后面的1表示主機(jī)掛掉以后進(jìn)行投票吠卷,只需要1票就可以從機(jī)變主機(jī)
sentinel monitor mymaster 127.0.0.1 6379 2
# 3s內(nèi)mymaster無響應(yīng),則認(rèn)為mymaster宕機(jī)了 默認(rèn)為30s
sentinel down-after-milliseconds mymaster 3000
#如果10秒后,mysater仍沒啟動過來岛心,則啟動failover
sentinel failover-timeout mymaster 10000
# 執(zhí)行故障轉(zhuǎn)移時来破, 最多有1個從服務(wù)器同時對新的主服務(wù)器進(jìn)行同步
sentinel parallel-syncs mymaster 1
# 設(shè)置哨兵sentinel 連接主從的密碼 注意必須為主從設(shè)置一樣的驗(yàn)證密碼,沒有的話不用設(shè)置
sentinel auth-pass mymaster 123456
2.啟動哨兵.
# Windows下啟動哨兵模式
redis-server sentinel.conf --sentinel
# Linux下啟動哨兵模式
redis-sentinel sentinel.conf
如果此時Master節(jié)點(diǎn)斷開了,這是就會在其中從機(jī)中投票選出新主機(jī)(Master節(jié)點(diǎn)).
可以從哨兵日志查看出新主節(jié)點(diǎn)服務(wù)器.
[16196] 03 Apr 13:15:00.092 * +failover-state-wait-promotion slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6379 # 6379端口主節(jié)點(diǎn)斷開
[16196] 03 Apr 13:15:01.079 # +promoted-slave slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6379
[16196] 03 Apr 13:15:01.079 # +failover-state-reconf-slaves master myredis 127.0.0.1 6379
[16196] 03 Apr 13:15:01.150 * +slave-reconf-sent slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6379
[16196] 03 Apr 13:15:02.140 * +slave-reconf-inprog slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6379
[16196] 03 Apr 13:15:02.140 * +slave-reconf-done slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6379
[16196] 03 Apr 13:15:02.211 # +failover-end master myredis 127.0.0.1 6379
[16196] 03 Apr 13:15:02.211 # +switch-master myredis 127.0.0.1 6379 127.0.0.1 6381 # 主節(jié)點(diǎn)切換為6381端口服務(wù)器
[16196] 03 Apr 13:15:02.212 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6381
[16196] 03 Apr 13:15:02.212 * +slave slave 127.0.0.1:6379 127.0.0.1 6379 @ myredis 127.0.0.1 6381
如果原主節(jié)點(diǎn)服務(wù)器重啟后,其原主節(jié)點(diǎn)服務(wù)器只能當(dāng)做新主節(jié)點(diǎn)服務(wù)器的從機(jī).
哨兵模式總結(jié)
哨兵模式優(yōu)點(diǎn):
1.哨兵集群,基于主從復(fù)制的模式,所有的主從配置優(yōu)點(diǎn)它全都有.
2.主從可以切換,故障可以轉(zhuǎn)移,系統(tǒng)的可用性更好.
3.哨兵模式就是主從模式的升級,手動到自動.
哨兵模式缺點(diǎn):
1.Redis不好在線擴(kuò)容,集群容量一旦到達(dá)上限,在線擴(kuò)容就十分麻煩.
2.實(shí)現(xiàn)哨兵模式的配置很麻煩.