redis主從複製和故障切換
1)當啓動一個Slave進程後,它會向Master發送一個SYNC Command,請求同步連接。
2)無論是第一次連接還是重新連接,Master都會啓動一個後臺進程,將數據快照保存到數據文件中,同時Master會記錄所有修改數據的命令並緩存在數據文件中。
3)後臺進程完成緩存操作後,Master就發送數據文件給Slave,Slave端將數據文件保存到硬盤上,然後將其在加載到內存中,接着Master就會所有修改數據的操作,將其發送給Slave端。
3)若Slave出現故障導致宕機,恢復正常後會自動重新連接,Master收到Slave的連接後,將其完整的數據文件發送給Slave
4)如果Mater同時收到多個Slave發來的同步請求,Master只會在後臺啓動一個進程保存數據文件,然後將其發送給所有的Slave,確保Slave正常。
server13的配置以及redis安裝不贅述了,有需要的話移步 基於redis緩存數據庫實現lnmp架構高速訪問
server11:
安裝redis
vim /etc/redis/6379.conf
slaveof 172.25.8.13 6379 從redis配置
bind 127.0.0.1 172.25.88.11 綁定自己的IP,讓別人可以訪問
看看redis能否正常運行....
server12:
安裝redis
配置redis的sentinel
cd /mnt/redis/redis-3.2.5
cp sentinel.conf /etc/redis/
vim sentinel.conf
17 protected-mode no 一定要關閉保護模式,否則主從切換不成功,這個很容易忽略!
21 port 26379 管理端口
98 sentinel monitor mymaster 172.25.88.33 6379 2 #2個崗哨(選舉的時候會用到),配置master
106 sentinel down-after-milliseconds mymaster 5000
#master或slave多長時間不能使用後標記爲s_down狀態
131 sentinel failover-timeout mymaster 90000
#若sentinel(崗哨)在該時間值內未能完成failover操作(即故障時master/slave自動切換),則認爲本次failover失敗。
vim /etc/redis/6379.conf
268 slaveof 172.25.88.13 6379 從redis配置
bind 127.0.0.1 172.25.88.12
scp sentinel.conf 172.25.88.13:/etc/redis/
scp sentinel.conf 172.25.88.11:/etc/redis/
server11,12,13
redis-server /etc/redis/sentinel.conf --sentinel
檢測
1.一主雙重是否成功
[kiosk@miaomiao ~]$ ssh [email protected]
[root@server12 ~]# redis-cli -p 26379
127.0.0.1:26379> info master0:name=mymaster,status=ok,address=172.25.88.13:6379,slaves=2,sentinels=3
2.主從切換( failover )
[root@server11 redis]# redis-cli -h 172.25.88.13 shutdown
serve13先主動down,自己發現服務異常,但主動down不切換,
之後被動down,開始選舉new master ,先確定兩個崗哨的狀態,之後爲下一任master投票,最後11當選下一任master
server13已經下馬,servre11現在是master,同時每個配置中的主從配置,也在原來的地方文件也更改了...