[英]Is there a way to auto discover new cluster node IP in Redis Cluster with Lettuce
我有一個 Redis 集群(3 個主和 3 個從)在Kubernetes集群中運行。 集群通過Kubenetes-Service (Kube-Service)公開。
我的應用程序服務器通過 Redis 的 Lettuce java 客戶端連接到 Redis 集群(使用Kube-Service作為 URI)。 我還在生菜連接 object 上設置了以下客戶端選項:
ClusterTopologyRefreshOptions topologyRefreshOptions = ClusterTopologyRefreshOptions.builder()
.enablePeriodicRefresh(Duration.ofMinutes(10))
.enableAllAdaptiveRefreshTriggers()
.build();
ClusterClientOptions clusterClientOptions = ClusterClientOptions.builder()
.topologyRefreshOptions(topologyRefreshOptions)
.autoReconnect(true)
.disconnectedBehavior(ClientOptions.DisconnectedBehavior.REJECT_COMMANDS)
.build();
redisClient.setOptions(clusterClientOptions);
現在,當我通過殺死我的一個 Redis 主(pod)來測試此設置時,Kubernetes 通過重新安排新的 pod 來完成其工作。 但是新的 pod 有一個新的 IP 地址,它從未被 Lettuce 發現。 生菜如何處理重新發現。 上面的拓撲刷新邏輯似乎沒有為新 IP 再次執行 DNS 查找。
是否有任何樣品或任何處理過這個的人。 我已經閱讀了關於生菜本身的多個 Github 問題,這些問題並沒有明確說明它是如何處理的。
最好的
感謝對上述問題的第一條評論。
所以我能夠解決這個問題,如下所示。
disconnectedBehavior
設置為ACCEPT_COMMANDS
。 這確保了客戶端在故障轉移期間繼續與 Redis 進行操作。這是在下次嘗試讀取或寫入時協調的一種惰性方法。 但它有效,我相信它已經足夠好了。 我不確定是否有更好的方法來處理這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.