要訂閱Sentinel故障轉移,通道的名稱是什麼,以及如何檢測我需要刷新訂閱功能中的主控?如何在Sentinel和redis-py中使用Redis時故障切換到新主節點?
我有一個使用Redis Sentinel進行高可用性和故障轉移的多節點Redis設置。
我需要將Pub/Sub設置爲Redis來檢測Redis Master何時失敗並且系統選擇了新的Master。
_sentinel = redis.sentinel.Sentinel([(app.config["REDIS_HOSTNAME"],app.config["REDIS_SENTINEL_PORT"])])
_master = _sentinel.master_for(app.config["REDIS_SERVICE_NAME"])
def _sentinel_message_handler(message):
#TODO how do I detect that there is a new Redis Master?
_pubsub = _master.pubsub()
_pubsub.subscribe(**{app.config["TODO"]:_sentinel_message_handler})
頻道列表可以在這裏找到:https://redis.io/topics/sentinel#pubsub-messages – davissp14
我在這裏看到的一個問題是, REDIS_HOSTNAME應該通過一連串的Sentinel主機名連續嘗試,直到連接完成。這樣可以防止啓動時因一個哨兵節點關閉而崩潰。 – 0111001101110000