?一、環境及版本說明
如果服務器已經安裝了docker,則忽略此步驟,如果沒有安裝,則可以按照一下方式安裝:
? ? ? ? 1. 在線安裝(有互聯網環境):?請看我這篇文章 傳送陣>>?點我查看
? ? ? ? 2. 離線安裝(內網環境):請看我這篇文章 傳送陣>>?點我查看
說明:假設每臺服務器已經安裝好了Docker軟件,并且redis集群的安裝目錄在/home/redis下面
操作系統 | IP | 操作系統版本 | docker版本 | redis版本 |
---|---|---|---|---|
Linux | 192.168.100.101 | CentOS7.6(1810) | 18.09.9 | 6.0.8 |
Linux | 192.168.100.102 | CentOS7.6(1810) | 18.09.9 | 6.0.8 |
Linux | 192.168.100.103 | CentOS7.6(1810) | 18.09.9 | 6.0.8 |
二、哨兵模式的優缺點
優點?:
- ?自動故障轉移?:主節點故障時自動選舉新主節點
- ?高可用性?:服務連續性保障更強
- ?監控告警?:實時監測節點狀態并通知
?缺點?:
- ?配置復雜?:需額外部署哨兵節點
- ?寫擴展性差?:仍存在主節點寫瓶頸
- ?數據分片不支持?:無法突破單節點內存限制
?適用場景?:
- 對自動容災有要求的業務(如電商核心服務)
- 需要7×24小時穩定運行的系統
三、基于一主兩從模式搭建三臺服務器均添加哨兵
說明:哨兵模式實際上是redis主從模式的高可用的實現,因此,必須先搭建主從架構(至少1主1從),哨兵才能監控主從節點狀態并執行故障轉移。哨兵節點本身不存儲數據,僅負責監控和協調。
重要:如果當前你還沒有搭建redis的1主2從模式,那么請先看我的這篇文章:
使用docker在3臺服務器上搭建基于版本redis 6.x的一主兩從模式?https://blog.csdn.net/langmeng110/article/details/148521426?spm=1011.2415.3001.5331
四、配置文件
?說明:三臺服務器都需要配置,路徑是:/home/redis/sentinel.conf
#sentinel.conf配置文件內容
port 26379
daemonize yes
sentinel monitor mymaster 192.168.100.101 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 180000
# 哨兵訪問主節點的密碼
sentinel auth-pass mymaster 123456
# 哨兵自身管理密碼
requirepass 123456
?五、創建啟動腳本create_redis_sentinel.sh或編輯create_redis_master.sh
#create_redis_sentinel.sh腳本內容
docker run -d --restart=always --name redis-master \
-p 6379:6379 -p 26379:26379 --privileged=true \
-v /home/redis/sentinel.conf:/sentinel.conf \
-v /home/redis/master.conf:/redis.conf \
-v /home/redis/data:/data \
redis:6.0.8 redis-server /redis.conf
其中,-v /home/redis/sentinel.conf:/sentinel.conf 是先將哨兵配置文件映射到容器內
-p 26379:26379 是哨兵模式啟動時,所需的端口。
六、啟動
1. 執行如下腳本,以啟動主節點:
#執行創建腳本
sh create_redis_sentinel.sh#然后查看容器狀態
docker ps
出現如下圖所示內容,表示啟動成功:
2. 進入主節點容器中,?并啟動哨兵命令:
#進入容器
docker exec -it redis-master /bin/bash
#啟動哨兵命令
redis-sentinel /sentinel.conf
啟動后,是沒有任何輸出的
?如果想檢驗是否啟動成功,輸入如下命令查看:
#在redis-master容器中執行如下命令
redis-cli -p 26379 -a 123456#輸入如下命令查看哨兵狀態
info sentinel
輸入命令后,將會如下圖所示:
?七、創建從節點哨兵
以102節點為例,103與102的操作是完全一樣的,這里就不在贅述
1.?創建啟動腳本create_redis_sentinel.sh或編輯create_redis_slave.sh
#create_redis_sentinel.sh腳本內容
docker run -d --restart=always --name redis-slave \
-p 6379:6379 -p 26379:26379 --privileged=true \
-v /home/redis/sentinel.conf:/sentinel.conf \
-v /home/redis/slave.conf:/redis.conf \
-v /home/redis/data:/data \
redis:6.0.8 redis-server /redis.conf
2. 執行如下腳本,以啟動102從節點:
#執行創建腳本
sh create_redis_sentinel.sh#然后查看容器狀態
docker ps
出現如下圖所示內容,表示啟動成功:
3. 進入102從節點容器中,?并啟動哨兵命令:
#進入容器
docker exec -it redis-slave /bin/bash
#啟動哨兵命令
redis-sentinel /sentinel.conf
啟動后,是沒有任何輸出的
?如果想檢驗是否啟動成功,輸入如下命令查看:
#在redis-master容器中執行如下命令
redis-cli -p 26379 -a 123456#輸入如下命令查看哨兵狀態
info sentinel
輸入命令后,將會如下圖所示:
4. 將103從節點按照上述步驟,再操作一次,即可。
八、驗證哨兵模式是否正常?
1. 關閉101主節點
2.10秒后,再次查看102從節點的狀態
如圖所示,主節點已經從101服務器,變成了102服務器。
3. 恢復101主節點的程序
?4. 重新啟動哨兵模式(這一步很重要,容器重新啟動的時候,哨兵是不會自動啟動的,需要手動啟動)
5. 進入哨兵命令行
6. 查看哨兵狀態
?如上圖所示,主節點依舊是102服務器,101服務器變成了從節點。
到此,哨兵模式的搭建就完成了,喜歡的朋友點個關注再走吧~~