Centos7 安裝redis叢集哨兵模式
一:整體哨兵模式規劃
redis節點規劃:6381 (master), 6382 (slave),6383 (slave),6384 (slave)
sentinel模式節點規劃:26381 , 26382
二: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執行完後,就可以正常運行了
/usr/local/redis/bin/redis-server /usr/local/redis-sentinel/master-6381/redis.conf |
/usr/local/redis/bin/redis-server /usr/local/redis-sentinel/slave-6382/redis.conf |
/usr/local/redis/bin/redis-server /usr/local/redis-sentinel/slave-6383/redis.conf |
/usr/local/redis/bin/redis-server /usr/local/redis-sentinel/slave-6384/redis.conf |
10.啟動完成後,連線主伺服器客戶端,檢視主伺服器資訊 info
/usr/local/redis/bin/redis-cli -h 192.168.1.62 -p 6381 |
11.在主伺服器節點上新增一個值,看看是否能同步到從伺服器上去
三.在二完成的基礎上新增哨兵監控主節點
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.啟動哨兵,並檢視哨兵日誌
/usr/local/redis/src/redis-sentinel /usr/local/redis-sentinel/sentinel-26381/sentinel.conf |
/usr/local/redis/src/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日誌
1) 主節點從6381變成6384
2)把節點6384的程序殺掉,主節點變成6382了