redis5集群如何主動(dòng)手工切換主從節(jié)點(diǎn)命令
redis5集群主動(dòng)手工切換主從節(jié)點(diǎn)命令
以集群模式登錄到待切換的從節(jié)點(diǎn),然后執(zhí)行CLUSTER FAILOVER命令,執(zhí)行成功則顯示OK,即完成主從切換
示例:
9003是切換之前的從節(jié)點(diǎn):
redis-cli -p 9003 -c 127.0.0.1:9003> CLUSTER FAILOVER OK
如果不小心登錄到了主節(jié)點(diǎn),也沒有關(guān)系
節(jié)點(diǎn)會提示如下錯(cuò)誤:
redis-cli -p 9007 -c
127.0.0.1:9007> CLUSTER FAILOVER
(error) ERR You should send CLUSTER FAILOVER to a replica
如果執(zhí)行報(bào)錯(cuò)或者master連接不上,還可以嘗試在命令后追加FORCE和TAKEOVER參數(shù)用于強(qiáng)制切換,F(xiàn)ORCE需要多數(shù)masters同意,TAKEOVER則不需要多數(shù)masters同意。
詳見官方《CLUSTER FAILOVER [FORCE|TAKEOVER]》
redis集群主從復(fù)制不生效的問題
集群信息
Redis版本:5.0
集群規(guī)模:三主三從
基本情況
在項(xiàng)目中為了達(dá)到高可用的目的,使用了Redis集群,搭建過程同Redis Cluster集群原理+三主三從交叉復(fù)制實(shí)戰(zhàn)+故障切換。
但是在實(shí)際使用中發(fā)現(xiàn),集群方式比單點(diǎn)模式故障率還要高,集群高可用配置似乎未生效。
在開發(fā)環(huán)境模擬單節(jié)點(diǎn)故障時(shí),發(fā)現(xiàn)集群不具備單節(jié)點(diǎn)故障自動(dòng)恢復(fù)功能,手動(dòng)恢復(fù)故障節(jié)點(diǎn)后,節(jié)點(diǎn)最新信息未同步,必須將所有節(jié)點(diǎn)殺掉重新搭建才能恢復(fù)正常。
在分析的過程中確認(rèn)了以下問題:
1.搭建后的集群通過cluster info/nodes指令查看,均顯示集群信息正常;
2.單個(gè)主節(jié)點(diǎn)故障后,對應(yīng)的從節(jié)點(diǎn)未切換,集群不可用;
3.從節(jié)點(diǎn)數(shù)據(jù)量為0,在主節(jié)點(diǎn)的任何操作,均未同步至從節(jié)點(diǎn),主從節(jié)點(diǎn)復(fù)制未實(shí)現(xiàn)。
4.各節(jié)點(diǎn)服務(wù)器防火墻均關(guān)閉,各節(jié)點(diǎn)端口間通信正常。
5.在從節(jié)點(diǎn)使用指令info replication查看時(shí)發(fā)現(xiàn),其與主節(jié)點(diǎn)間連接狀態(tài)為“down”,在對應(yīng)的主節(jié)點(diǎn)查看發(fā)現(xiàn)主節(jié)點(diǎn)連接的從節(jié)點(diǎn)數(shù)量為0。說明集群的主從關(guān)系并未建立成功。
問題分析
查看從節(jié)點(diǎn)日志發(fā)現(xiàn),在從節(jié)點(diǎn)與主節(jié)點(diǎn)建立連接的過程中,身份認(rèn)證未通過。
但是該Redis集群中所有節(jié)點(diǎn)的配置中均通過requirepass字段設(shè)置了相同的密碼,這個(gè)錯(cuò)誤出現(xiàn)的似乎沒有道理。
MASTER aborted replication with an error: NOAUTH Authentication required
參考以上內(nèi)容發(fā)現(xiàn)需要在從節(jié)點(diǎn)中配置“masterauth”字段。
問題解決
在所有從、主(主節(jié)點(diǎn)故障后可能成為從節(jié)點(diǎn))節(jié)點(diǎn)的配置文件即redis.conf中配置“masterauth”字段,內(nèi)容與各節(jié)點(diǎn)的requirepass字段(各節(jié)點(diǎn)requirepass字段內(nèi)容一致)一致。
配置完成后,重啟從節(jié)點(diǎn),查看從節(jié)點(diǎn)日志,主從復(fù)制正常。
再次在從節(jié)點(diǎn)執(zhí)行info replication發(fā)現(xiàn),從節(jié)點(diǎn)與主節(jié)點(diǎn)通信正常,集群狀態(tài)正常。
集群實(shí)現(xiàn)主從復(fù)制。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Redis和springboot 整合redisUtil類的示例代碼
這篇文章主要介紹了Redis和springboot 整合redisUtil類的示例代碼,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12redis cluster支持pipeline的實(shí)現(xiàn)思路
本文給大家介紹redis cluster支持pipeline的實(shí)現(xiàn)思路,在 cluster 上執(zhí)行 pipeline 可能會由于 redis 節(jié)點(diǎn)擴(kuò)縮容 中途 redirection 切換連接導(dǎo)致結(jié)果丟失,具體細(xì)節(jié)問題請參考下本文2021-06-06