High-Availability

Redis sentinel:強制切換到另一個master

  • February 15, 2019

語境:

我有 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 將是首選。

有關選擇從站的方式的更多資訊,請查看本文件的從站選擇和優先級部分。

引用自:https://serverfault.com/questions/954115