解決redis sentinel 頻繁主備切換的問題

問題描述

操作redis發現原有Master變成slave,其他slave成master,切換較頻繁

問題分析

查看redis服務器sentinel日志,發現主機頻繁在凌晨左右sentinel哨兵檢查到master掛瞭,主備切換,排查為每天凌晨左右對hash:sms:qxt:mobile:content:day隊列進行刪除觸發的切機,隊列量級過大,刪除時導致redis服務器卡住,切機。

問題處理

隊列改用分批刪除,避免對大數據量隊列進行刪除而引起切機

補充:redis一主一從一哨兵,第一次主從切換成功,再次主從切換無法正常執行?

自己在服務器學著搭建redis主從復制和哨兵模式。為瞭簡單,一開始隻是搭建瞭一主(port 9001),一從(port 6379),一哨兵(26379)

主從哨兵都在一臺服務器上,並且主從服務器均設置瞭密碼:123456

先按照 主–>從—>哨兵 的順序依次啟動,日志和執行命令都沒有問題,然後shutdown 9001服務器,哨兵模式順利將主節點切換到6379,然後在啟動9001的redis,發現9001的服務器變為slave ;

但是再次將6379(當前的master)宕機,無法繼續切換

如下:

一開始是以為配置文件有問題,來回檢查瞭幾遍,後來發現這個情形(6379為master ,9001為slave),哪怕在master存放新的key-value,也無法同步到9001

查看瞭一下9001的redis的info配置發現

我的6379的服務器是正常運行的,但是9001沒法連接到相關的6379服務器,自然也就沒法對master(6379)的服務器進行同步瞭

想到6379設置瞭服務密碼,我就在9001的redis裡加瞭如下配置

修改完配置之後,重啟服務,再次模擬剛剛的情形,二次切換也成功瞭

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。