一、整體哨兵模式規劃
redis節點規劃:6381 (master), 6382 (slave),6383 (slave),6384 (slave)
sentinel模式節點規劃:26381 , 26382
二、Redis主從安裝步驟
1、 Redis安裝
2、在/usr/local/目錄下創建 redis-sentinel文件夾
3、進入/usr/local/redis-sentinel目錄下,創建文件夾 master-6381 ,slave-6382 ,slave-6383 ,slave-6384 ,sentinel-26381 ,sentinel-26382
如圖所示:
4、把單機版安裝目錄下redis.conf拷貝到目錄下 master-6381 slave-6382 slave-6383 slave-6384
5、把單機版安裝目錄下 sentinel.conf 拷貝到 sentinel-26381 ,sentinel-26382
6、修改/usr/local/redis-sentinel/master-6381/目錄下 redis.conf 配置文件 (主服務器)
- bind 192.168.1.62 --修改成自己的IP地址
- port 6381 --主服務器的端口號
- daemonize yes --後臺啓動
- pidfile /var/run/redis_6381.pid – redis 後臺啓動的時候,會在/var/run/默認生成一個pid文件
- protected-mode no–保護模式關閉,否則啓動哨兵的時候,無法正常運行(還可以設置密碼的方式)
- dir /usr/local/redis-sentinel/master-6381/data --數據保存目錄
7、修改/usr/local/redis-sentinel/slave-6382/目錄下 redis.conf 配置文件 (從服務器)
- bind 192.168.1.62 --修改成自己的IP地址
- port 6382 --主服務器的端口號
- daemonize yes --後臺啓動
- pidfile /var/run/redis-6382.pid – redis 後臺啓動的時候,會在/var/run/默認生成一個pid文件
- protected-mode no–保護模式關閉,否則啓動哨兵的時候,無法正常運行(還可以設置密碼的方式)
- dir /usr/local/redis-sentinel/slave-6382/data --數據保存目錄
- slaveof 192.168.1.62 6381 --主服務器的IP 主服務器端口號,這句命令 手動添加在配置文件中
8、其他從服務器類似步驟7
9、一定要注意創建data,否則會報錯
10、步驟9執行完後,就可以正常運行了
#進入src目錄下,執行一下四條命令:
./redis-server /usr/local/redis-sentinel/master-6381/redis.conf
./redis-server /usr/local/redis-sentinel/slave-6382/redis.conf
./redis-server /usr/local/redis-sentinel/slave-6383/redis.conf
./redis-server /usr/local/redis-sentinel/slave-6384/redis.conf
查看進程:
11、啓動完成後,連接主服務器客戶端,查看主服務器信息 info
#在src目錄下,-p是指定端口號
./redis-cli -h 192.168.1.62 -p 6381
#進入以後輸入info
info
12、可以嘗試在主服務器節點上添加一個值,看看是否能同步到從服務器上去
三、在步驟二完成的基礎上添加哨兵監控主節點
1、修改/usr/local/redis-sentinel/sentinel-26381目錄下的sentinel.conf
- port 26381 – 指定sentinel端口號
- daemonize yes – 指定sentinel爲後臺啓動
- protected-mode no --關閉保護模式
- sentinel monitor mymaster [主服務器節點IP] [主服務器節點port] [幾個哨兵檢測到主節點失聯數量] – 至少有幾個哨兵檢測到主服務器故障了,才進行故障遷移 ,實例 sentinel monitor mymaster 192.168.1.62 6381 2
- sentinel down-after-milliseconds mymaster 30000 --指定Sentinel判定Master斷線的時間
- logfile “/usr/local/redis-sentinel/sentinel-26381/sentinel-26381.log”
- dir “/usr/local/redis-sentinel/sentinel-26381/data”
2、修改/usr/local/redis-sentinel/sentinel-26382目錄下的sentinel.conf
- port 26382 – 指定sentinel端口號
- daemonize yes – 指定sentinel爲後臺啓動
- protected-mode no --關閉保護模式
- sentinel monitor mymaster [主服務器節點IP] [主服務器節點port] [幾個哨兵檢測到主節點失聯數量] – 至少有幾個哨兵檢測到主服務器故障了,才進行故障遷移 ,實例 sentinel monitor mymaster 192.168.1.62 6381 2
- sentinel down-after-milliseconds mymaster 30000–指定Sentinel判定Master斷線的時間
- logfile “/usr/local/redis-sentinel/sentinel-26382/sentinel-26382.log”
- dir “/usr/local/redis-sentinel/sentinel-26382/data”
3、啓動哨兵,並查看哨兵日誌
#進入src目錄下
#啓動哨兵(可通過查看進程判斷是否啓動 ps -ef | grep sen)
./redis-sentinel /usr/local/redis-sentinel/sentinel-26381/sentinel.conf
./redis-sentinel /usr/local/redis-sentinel/sentinel-26382/sentinel.conf
#查看日誌
tail -f /usr/local/redis-sentinel/sentinel-26381/sentinel-26381.log
tail -f /usr/local/redis-sentinel/sentinel-26382/sentinel-26382.log
4、直接把master節點進程kill掉,再次觀看哨兵日誌
在殺掉主節點進程的時候,沒有發生主從切換,並且日誌打印如下,解決方法時 在sentinel.conf配置文件中添加 protected-mode no (這個的前提是redis.conf文件的配置也是 protected-mode no )
5、解決4的問題後,重新啓動sentinel,殺掉主節點進程和查看sentinel日誌
- 主節點從6381變成6384
- 把節點6384的進程殺掉,主節點變成6382了