Redis哨兵機制,一主二從
注:Redis哨兵切換,建議一主多從
一、一主二從
教程步驟:https://www.cnblogs.com/zwcry/p/9046207.html
二、哨兵配置(sentinel.conf)
cd /usr/local/redis-ms/
1.創建哨兵目錄
mkdir -p ./sentinel/26001/tmp
cp /usr/local/redis/sentinel.conf ./sentinel/26001/
2.修改./sentinel/.conf
cd /usr/local/redis-ms/sentinel/
vim ./26001/sentinel.conf
#修改如下鍵值對
# bind 127.0.0.1 192.168.1.1#注釋掉或者值為0.0.0.0
protected-mode no#關閉保護模式
port 26001#端口號
daemonize yes#后台運行
dir /usr/local/redis-ms/sentinel/26001/tmp#解除掛載信息目錄
sentinel monitor mymaster 192.168.194.131 6381 1#設置 主名稱 ip地址 端口號 參入選舉的哨兵數
sentinel down-after-milliseconds mymaster 3000#sentinel心跳檢測主3秒內無響應,視為掛掉,開始切換其他從為主
sentinel parallel-syncs mymaster 1#每次最多可以有1個從同步主。一個從同步結束,另一個從開始同步。
sentinel failover-timeout mymaster 18000#主從切換超時時間
三、啟動哨兵配置
1.先啟主從redis
/usr/local/redis/src/redis-server /usr/local/redis-ms/6381/redis.conf
/usr/local/redis/src/redis-server /usr/local/redis-ms/6382/redis.conf
/usr/local/redis/src/redis-server /usr/local/redis-ms/6383/redis.conf
ps -ef|grep redis
如圖已經啟動
且信息正確
/usr/local/redis/src/redis-cli -p 6381
info
2.啟動哨兵
/usr/local/redis/src/redis-sentinel /usr/local/redis-ms/sentinel/26001/sentinel.conf
ps -ef|grep redis
如圖已經啟動
且信息正確
/usr/local/redis/src/redis-cli -p 26001
info
3.測試
1)主6381停掉后變成從,原有的兩個從,有一個升級為主。
/usr/local/redis/src/redis-cli -p 6381 shutdown
/usr/local/redis/src/redis-cli -p 26001
info
2)6381再次啟動后,依然是從
/usr/local/redis/src/redis-server /usr/local/redis-ms/6381/redis.conf
/usr/local/redis/src/redis-cli -p 6381
info
五、哨兵集群
cd /usr/local/redis-ms/sentinel/
1.復制26001
cp -r 26001 26002
2.修改26002/sentinel.conf
vim 26002/sentinel.conf
#將文本中26001替換為26002
:%s/26001/26002/g
3.啟動
/usr/local/redis/src/redis-sentinel /usr/local/redis-ms/sentinel/26002/sentinel.conf
info
/usr/local/redis/src/redis-cli -p 26002
6.哨兵開機啟動
注:redis開機啟動參照https://www.cnblogs.com/zwcry/p/9046207.html
1.創建sh腳本目錄
mkdir /usr/local/redis-ms/sentinel/script
cd /usr/local/redis-ms/sentinel/script/
2.編輯start.sh
vim start.sh
#!/bin/sh
/usr/local/redis/src/redis-sentinel /usr/local/redis-ms/sentinel/26001/sentinel.conf /usr/local/redis/src/redis-sentinel /usr/local/redis-ms/sentinel/26002/sentinel.conf
3.編輯stop.sh
vim stop.sh
#!/bin/sh
/usr/local/redis/src/redis-cli -p 26001 shutdown /usr/local/redis/src/redis-cli -p 26002 shutdown
4.編輯restart.sh
vim restart.sh
#!/bin/sh systemctl stop redis-sentinel systemctl start redis-sentinel
5.編寫redis-sentinel.service
cd /usr/lib/systemd/system/
vim redis-sentinel.service
[Unit] Description=redis-sentinel After=redis-ms.service [Service] Type=forking ExecStart=/usr/local/redis-ms/sentinel/script/start.sh ExecStop=/usr/local/redis-ms/sentinel/script/stop.sh ExecReload=/usr/local/redis-ms/sentinel/script/restart.sh [Install] WantedBy=multi-user.target
#建議啟動redis服務后,再啟動哨兵
6.命令行
改變權限
chmod 777 redis-sentinel.service
chmod 777 /usr/local/redis-ms/sentinel/script/*
進程服務重加載
systemctl daemon-reload
開機啟動哨兵
systemctl enable redis-sentinel.service
啟動哨兵
systemctl start redis-sentinel.service
關閉哨兵
systemctl stop redis-sentinel.service
重啟哨兵
systemctl restart redis-sentinel.service
備注:哨兵集群服務自主關聯響應,如果需要更多哨兵集群,按照26002的方式復制26003...26006即可