Redis哨兵Sentinel
標籤:python dir disco redis3 工作 狀態 多少 monit mil
一、Sentinel說明
在主從複製中,master 掛掉了,那麼整個就崩掉了,因為 slave 不能寫資料。
所以哨兵的作用就是讓 Redis 的主從複製高可用
在 master 掛掉後,Sentinel 在選一個 slave 當做 master,就算之前的那個 master 啟動起來了,也只能當 slave。
工作流程:
- 多個 Sentinel 發現並確認 master 有問題
- 選舉一個 Sentinel 作為領導
- 選取一個 slave 作為新的 master
- 通知其餘 slave 成為新的 master 的 slave
- 通知客戶端主從變化
- 等待老的 master 復活成為新的 master 的 slave
二、配置
1、這裡以一主兩從的形式配置,以三個程序的方式演示,先啟動三個 Redis 配置如下:
主配置檔案
pidfile /var/run/redis.pid
dir "/root/redis/data"
logfile "6379.log"
daemonize yes
port 6379
從配置檔案1
pidfile /var/run/redis2.pid
dir "/root/redis/data2"
logfile "6380.log"
daemonize yes
port 6380
slaveof 127.0.0.1 6379
slave-read-only yes
從配置檔案2
pidfile /var/run/redis3.pid
dir "/root/redis/data3"
logfile "6381.log"
daemonize yes
port 6381
slaveof 127.0.0.1 6379
slave-read-only yes
啟動三個Redis
redis-server redis_6379.conf
redis-server redis_6380.conf
redis-server redis_6381.conf
2、搭建哨兵,哨兵也可以當做一個 Redis 伺服器,分別建立三個哨兵配置檔案:sentinel_26379.conf sentinel_26380.conf sentinel_26381.conf
配置檔案:sentinel_26379.conf
port 26379
daemonize yes
dir "/root/redis/sentinel_data"
protected-mode no
bind 0.0.0.0
logfile "redis_sentinel.log"
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
配置檔案:sentinel_26380.conf
port 26380
daemonize yes
dir "/root/redis/sentinel2_data"
protected-mode no
bind 0.0.0.0
logfile "redis_sentinel2.log"
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
配置檔案:sentinel_26381.conf
port 26381
daemonize yes
dir "/root/redis/sentinel3_data"
protected-mode no
bind 0.0.0.0
logfile "redis_sentinel3.log"
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
啟動三個哨兵
redis-sentinel sentinel_26379.conf
redis-sentinel sentinel_26380.conf
redis-sentinel sentinel_26381.conf
3、哨兵更多配置引數
sentinel monitor mymaster 127.0.0.1 6379 2sentinel down-after-milliseconds mymaster 30000sentinel parallel-syncs mymaster 1sentinel failover-timeout mymaster 180000sentinel monitor <master-name> <ip> <redis-port> <quorum># 告訴sentinel去監聽地址為ip:port的一個master,這裡的master-name可以自定義,quorum是一個數字,指明當有多少個sentinel認為一個master失效時,master才算真正失效 sentinel auth-pass <master-name> <password># 設定連線master和slave時的密碼,注意的是sentinel不能分別為master和slave設定不同的密碼,因此master和slave的密碼應該設定相同。sentinel down-after-milliseconds <master-name> <milliseconds> # 這個配置項指定了需要多少失效時間,一個master才會被這個sentinel主觀地認為是不可用的。 單位是毫秒,預設為30秒sentinel parallel-syncs <master-name> <numslaves> # 這個配置項指定了在發生failover主備切換時最多可以有多少個slave同時對新的master進行 同步,這個數字越小,完成failover所需的時間就越長,但是如果這個數字越大,就意味著越 多的slave因為replication而不可用。可以通過將這個值設為 1 來保證每次只有一個slave 處於不能處理命令請求的狀態。sentinel failover-timeout <master-name> <milliseconds>"""failover-timeout 可以用在以下這些方面: 1. 同一個sentinel對同一個master兩次failover之間的間隔時間。 2. 當一個slave從一個錯誤的master那裡同步資料開始計算時間。直到slave被糾正為向正確的master那裡同步資料時。 3.當想要取消一個正在進行的failover所需要的時間。 4.當進行failover時,配置所有slaves指向新的master所需的最大時間。不過,即使過了這個超時,slaves依然會被正確配置為指向master,但是就不按parallel-syncs所配置的規則來了。"""
三、python客戶端連線哨兵
import redisfrom redis.sentinel import Sentinel# 連線哨兵伺服器(主機名也可以用域名)sentinel = Sentinel([(‘127.0.0.1‘, 26379), (‘127.0.0.1‘, 26380), (‘127.0.0.1‘, 26381) ], socket_timeout=5)print(sentinel)# 獲取主伺服器地址master = sentinel.discover_master(‘mymaster‘)print(master)# 獲取從伺服器地址slave = sentinel.discover_slaves(‘mymaster‘)print(slave)
Redis哨兵Sentinel
標籤:python dir disco redis3 工作 狀態 多少 monit mil
原文地址:https://www.cnblogs.com/XiaoYang-sir/p/15068757.html
上一篇:你有沒有亂用“leader”,擔當是個好東西
下一篇:整理下部分基礎的Redis面試題
最新發布:
- 貓咪身上常見的寄生蟲有哪些?如何正確驅蟲?鏟屎官別再做無用功
- 泰迪不跟別的狗玩怎麼辦
- 2個多月的金毛吃什麼(金毛幼犬吃什麼)
- 比熊眼睛什麼顏色(比熊有些什麼顏色)
- 世界上最大的10種狗狗,有長得跟熊一樣壯的,有比馬還高的
- 小貓咪下巴腫怎麼辦(小貓咪下巴腫起來了怎麼回事兒)
- 狗狗月子拉稀能吃什麼(狗狗消化不良拉稀吃什麼藥最好)
- 2個月茶杯犬每頓吃多少粒狗糧
- 白貴賓吃什麼維它命
- 貓牙齒黑黑的是什麼(牙齒上有黑黑的是什麼)
- 身上白色捲毛的是什麼狗毛很短小(身上白色頭上咖啡色捲毛是什麼狗)
- 標系藏獒是什麼意思(夢見藏獒追我是什麼意思)
- 貓掉鬍子怎麼回事(貓掉鬍子怎麼回事會有什麼不好嗎)
- 小貓怎麼清理(小貓怎麼清理眼)
- 小博美拉稀吃什麼藥(博美拉稀帶血吃什麼藥)