Redis主從自動切換(無密碼認證)(centos8)

服務器 IP
Redis服務器(主) 192.168.1.210
Redis服務器(從) 192.168.1.220
Redis服務器(哨兵) 192.168.1.230

一、服務器安裝redis服務

參考博客:https://blog.csdn.net/renfeigui0/article/details/103182585

二、服務器210、220配置主從,使主從複製工作正常運行

參考博客:https://blog.csdn.net/renfeigui0/article/details/103182516

1、服務器220查找並編輯redis.conf,在下圖位置**“JUST COMMENT THE FOLLOWING LINE.”**下方,增加redis服務器本機IP(192.168.1.220),設置後其他主機也可以遠程訪問本機的redis服務,未設置則只能本機127.0.0.1纔可訪問redis服務。
在這裏插入圖片描述
2、確保服務器210、220,開放防火牆6379端口。

firewall-cmd --zone=public --add-port=6379/tcp --permanent  
firewall-cmd --reload
firewall-cmd --zone=public --query-port=6379/tcp

三、服務器230開啓sentinel(哨兵)服務,監控主從複製運行狀態

1、編輯sentinel的配置文件,修改後如下圖。

find / -name sentinel.conf
cp  /usr/local/redis/sentinel.conf     /usr/local/redis/sentinel26379.conf    #備份sentinel配置文件
vi /usr/local/redis/sentinel26379.conf
protected-mode  no    #關閉保護模式,允許遠程主機訪問
port 26379          #sentinel端口
daemonize yes				# 設置sentinel服務後臺啓動
sentinel monitor mymaster 192.168.1.210  6379 2   #監控主節點的IP地址端口,監控的master的名字叫做mymaster,2表示當有2個sentinel認爲master已經不可用時,纔可以自動進行主從切換。**若只有一個sentinel實例,則設置爲1**。

在這裏插入圖片描述
在這裏插入圖片描述

2、啓動26379端口sentinel服務。

/usr/local/redis/src/redis-sentinel      /usr/local/redis/sentinel26379.conf
netstat -anp |grep redis

在這裏插入圖片描述

3、啓動客戶端,登錄26379端口,查看sentinel信息,ok表明已正常監控,如下圖。

/usr/local/redis/src/redis-cli -p 26379
info sentinel

在這裏插入圖片描述

四、測試210、220服務器主從自動切換

1、關閉210服務器redis服務。

/usr/local/redis/src/redis-cli -p 6379 shutdown
netstat -anp |grep redis

2、服務器220打開客戶端,查看redis身份信息,自動的切換成master(需等待30秒纔會自動切換)。
在這裏插入圖片描述
3、服務器230,打開端口26379客戶端,查看sentinel信息,也可看到master的IP變化。

在這裏插入圖片描述
4、再次啓動210服務器redis服務,打開客戶端,查看redis身份信息,自動的切換成slave(需等待30秒纔會自動切換)。

在這裏插入圖片描述

4、如果在同一服務器啓動多個sentinel實例,需爲每個sentinel實例單獨創建配置文件,配置不同端口,除端口號外,其他配置相同。啓動26379、26380、26381端口sentinel服務。啓動客戶端,登錄26381端口,查看sentinel信息,如下圖。

在這裏插入圖片描述

五、sentinel服務總結

一、sentinel的作用

一、redis的sentinel哨兵系統用於管理多個redis服務器,該系統主要執行三個任務:監控、提醒、自動故障轉移。
1、監控(Monitoring): Redis Sentinel實時監控主服務器和從服務器運行狀態,並且實現自動切換。
2、提醒(Notification):當被監控的某個 Redis 服務器出現問題時, Redis Sentinel 可以向系統管理員發送通知, 也可以通過 API 向其他程序發送通知。
3、自動故障轉移(Automatic failover): 當一個主服務器不能正常工作時,Redis Sentinel 可以將一個從服務器升級爲主服務器, 並對其他從服務器進行配置,讓它們使用新的主服務器。當應用程序連接Redis 服務器時, Redis Sentinel會告之新的主服務器地址和端口。

二、sentinel部署建議

1、按奇數個部署,至少要部署3個,哨兵之間、Redis實例之間物理機獨立。
2、sentinel monitor master xxx.xxx.xxx.xxx xxxx 1,哨兵的這個配置最好不要配置爲1。quorum的值爲1意味着只要一個sentinel發現master節點無響應就可以標記爲客觀下線,從而發起主從切換。quorum最好設置超過sentinel個數的一半向上取整。
3、條件允許的情況下儘可能縮短這個切換間隔吧。entinel failover-timeout master 900000 //毫秒級

三、sentinel主從切換失敗的原因

1、如果是因爲大部分sentinel都掛了,不足以選舉出leader,選擇一個存活的sentinel強制執行sentinel failover,如果有備選slave成功被提升爲master,客戶端應用不需重啓。
2、如果是因爲哨兵沒有選舉成功,看等待時間是否還能忍,能忍就等待下次failover,否則同1步驟。
3、如果是因爲沒有slave通過篩選,建議停止全部哨兵,將某個slave提升爲master,修改哨兵配置指向這個新的master,重啓哨兵,重啓客戶端應用。

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