容器化redis-cluster使用(一)集羣自身ip變化更新問題

      最近把redis-cluster集羣遷移到了k8s上後發生了一個問題,當一個pod重啓後,java程序報錯,連不上redis服務器。我們查看集羣狀態後發現,當pod重啓後,pod的ip發生了改變(我們並沒有固定redis-cluster的pod的ip),去非重啓pod使用cluster nodes查看集羣信息,一切正常,但在重啓pod節點查看集羣信息,發現集羣信息中使用的還是重啓前的pod的ip。也就是說,當pod重啓後,該pod中的redis實例通知了集羣中其他成員更新了Cluster topology,但自身卻沒有更新,截圖如下:

這是redis集羣信息,大家注意redis-0的ip地址,我們重啓redis-0後,redis-0的ip地址如下:

pod啓動了47s,其他都是25m,證明重啓了,重啓後ip地址爲172.255.211.7,我們進去redis-0查看集羣信息:

發現還是使用重啓前的pod的ip,並沒更新,再去其他redis節點查看集羣信息:

發現集羣信息正常,那怎麼讓他通知自己也更新Cluster topology呢?

參考:https://github.com/antirez/redis/issues/4289這個issue,在啓動參數中加入選項

--cluster-announce-ip

最後yaml文件中啓動參數如下:


          - "/etc/redis.conf"
          - "--protected-mode"
          - "no"
          - "--cluster-announce-ip"
          - "$(POD_IP)"

再重啓pod節點,問題解決。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章