1. 程式人生 > >4. Redis-主從複製+哨兵

4. Redis-主從複製+哨兵

4.1 主從複製

  1. master可以擁有多個 slave
  2. 多個 slave 可以連線同一個 master 外,還可以連線到其他的 slave
  3. 主從複製不會阻塞 master 在同步資料時,master可以繼續處理client請求
  4. 提供系統的伸縮性

4.2 主從複製過程

  1. slave 與 master 建立連線,傳送 sync 同步命令。
  2. master 會開啟一個後臺程序,將資料庫快照儲存到檔案中,同事 master 主程序會開始收集新的寫命令並快取
  3. 後臺完成儲存後,就將檔案傳送給 slave
  4. slave 將此檔案儲存到本地上

4.3 主從複製配置

主從複製方案

角色 ip
master 192.168.136.175 6379
slave 192.168.136.176 6379
slave 192.168.136.178 6379

1. 安裝redis

2. 配置 redis.conf 檔案,master 不要修改配置,只需要修改 slave 的。slaveof 192.168.136.175 6379

3. 重啟三臺伺服器,在 master 進入redis-cli,輸入 info 命令,看到以下資訊,證明配置成功。

4.4 哨兵

有了主從複製的實現以後,我們如果想對主從伺服器進行監控,那麼在 redis2.6 之後提供了,一個哨兵的機制,在2.6版本中為哨兵1.0版本。在2.8之後哨兵功能,穩定起來。

哨兵的含義就是監控 redis 的執行情況,其主要功能有兩點:

  1. 監控主資料庫和從資料庫是否正常執行。
  2. 主資料庫出現故障時,可以自動將從資料庫轉為主資料庫,實現自動切換。

4.4.1 哨兵實現步驟:

在任意一臺從伺服器(slave)啟動 sentinel.conf (其實應該在第四臺機器上啟動)

1. 複製 sentinel.conf 檔案到 /opt/redis/etc 中。sentinel.conf 檔案在redis的原始碼包下

2. 修改 sentinel.conf 檔案

sentinel monitor mymaster 192.168.136.175 6379 1 

sentinel down-after-milliseconds mymaster 10000

sentinel parallel-syncs mymaster 2

sentinel failover-timeout mymaster 30000

3. 啟動三臺 redis 伺服器

4. 啟動哨兵 ./redis-server /opt/redis/etc/sentinel.conf --sentinel &

配置完成!!!

檢視哨兵監控的資訊,在任意一臺機器都可以檢視。 ./redis-cli -h 192.168.136.176 -p 26379 info Sentinel

關閉 主節點伺服器 (192.168.136.175),配置了哨兵的伺服器上自動打印出提示。

重新開啟 175,但是節點不會把主節點切回175上。

關閉 176,主節點切回 175