High-Availability
Redis sentinel:強制切換到另一個master
語境:
我有 3 個 redis 節點和 3 個哨兵。故障轉移正常工作。當我把主人打倒時,另一個主人被選舉了。
需要:
我需要一種測試行為的方法,以確保一切按預期工作。我希望我可以強制哨兵選擇一個特定的 redis 節點作為主節點。
我想我可以通過關閉兩個不應該成為主節點的節點來做到這一點,但我希望我可以向其中一個哨兵發出命令來解決我的問題。
tl;博士:
我可以指示我的哨兵選擇特定的 redis 節點作為主節點嗎?
您可能會導致您不想作為主伺服器的兩個 Redis 伺服器掛起,我認為(未經測試)Sentinel 會選擇剩下的一個。可能需要兩次選舉…
模擬 Redis 伺服器上的掛起:
redis-cli DEBUG sleep 30
或者
redis-cli DEBUG segfault
然後強制故障轉移:
SENTINEL failover
也許更好的方法是使用優先級選項。
來自https://redis.io/topics/sentinel
從站優先級
Redis 實例有一個名為 slave-priority 的配置參數。此資訊由 Redis 從屬實例在其 INFO 輸出中公開,Sentinel 使用它來從可用於故障轉移主實例的從屬實例中選擇一個:
如果從屬優先級設置為 0,則從屬永遠不會提升為主控。Sentinel 優先選擇具有較低優先級編號的從站。
例如,如果目前master的同一個數據中心有一個slave S1,另一個數據中心有另一個slave S2,可以設置S1的優先級為10,S2的優先級為100,這樣如果master 失敗並且 S1 和 S2 都可用,S1 將是首選。
有關選擇從站的方式的更多資訊,請查看本文件的從站選擇和優先級部分。