開發與維運

docker redis哨兵模式(sentinel)

redis集群-哨兵模式(sentinel)

哨兵模式:基於redis主從複製,增加sentinel服務用於監聽服務狀態,並在發生異常時重新選取主服務器 使用版本,redis6.25

配置文件

下面只列出主要配置,需查看詳細配置請查看關聯項目 redis登陸密碼如配置則需要統一

master配置

requirepass 登陸密碼
# 發生故障時會重新指定主服務器,所以需要指定密碼
masterauth 主服務器登陸密碼

slave配置

在docker環境執行,避免重複修改配置文件所以使用redis01(機器名),此處別名對應docker啟動時指定的別名

requirepass 登陸密碼
masterauth 主服務器登陸密碼
# 指定主服務器
replicaof redis01 6379

sentinel配置

mymaster 為sentinel監控的別名,

sentinel monitor mymaster redis01 6379 2
sentinel auth-pass mymaster sbsb1234
# 6.2之後才支持使用機器名默認是關閉,此處打開
SENTINEL resolve-hostnames yes

docker 啟動

結構為3個redis節點,1主2從,3個sentinel服務

準備環境

# 下載redis最新鏡像
docker pull redis
#新建一個網絡使其它節點連接此網絡,避免通信問題
docker network create testnet

啟動redis服務

命令說明 *. -p 6380:6379 指定外內端口 *. --name redis01 指定容器名稱 *. -v /home/docker/redis/master.conf:/etc/redis/redis.conf 映射配置文件 *. --privileged=true 提升docker容器權限避免容器中操作權限不夠 *. --network testnet 指定容器使用網絡 *. --network-alias redis01 指定網絡中機器名 *. -d redis 後臺執行容器 *. redis-server /etc/redis/redis.conf 執行的cmd命令,指定配置文件否則不會使用映射配置文件

docker run -p 6380:6379 --name redis01 -v /home/docker/redis/master.conf:/etc/redis/redis.conf  --privileged=true --network testnet --network-alias redis01  -d  redis redis-server /etc/redis/redis.conf 
docker run -p 6381:6379 --name redis02 -v /home/docker/redis/slave.conf:/etc/redis/redis.conf  --privileged=true --network testnet --network-alias redis02  -d  redis redis-server /etc/redis/redis.conf 
docker run -p 6382:6379 --name redis03 -v /home/docker/redis/slave.conf:/etc/redis/redis.conf  --privileged=true --network testnet --network-alias redis03  -d  redis redis-server /etc/redis/redis.conf

啟動完成後可使用redis客戶端連接或使用命令行驗證主從是否正常

# 查看主從配置信息
info replication

啟動sentinel服務

命令說明 *. redis-server /etc/redis/sentinel.conf --sentinel 表示啟動sentinel服務

docker run -p 26379:26379 --name sentinel01 -v /home/docker/redis/sentinel.conf:/etc/redis/sentinel.conf  --privileged=true --network testnet --network-alias sentinel01  -d  redis redis-server /etc/redis/sentinel.conf --sentinel
docker run -p 26380:26379 --name sentinel02 -v /home/docker/redis/sentinel.conf:/etc/redis/sentinel.conf  --privileged=true --network testnet --network-alias sentinel02  -d  redis redis-server /etc/redis/sentinel.conf --sentinel
docker run -p 26381:26379 --name sentinel03 -v /home/docker/redis/sentinel.conf:/etc/redis/sentinel.conf  --privileged=true --network testnet --network-alias sentinel03  -d  redis redis-server /etc/redis/sentinel.conf --sentinel

啟動成功後可在主服務器控制檯輸入如下命令驗證

# 執行休眠120s的任務
DEBUG SLEEP 120s
# 再次查看主從信息查看是否已一切換為從服務器
info replication

相關項目

https://gitee.com/MeiJM/spring-cram/tree/master/redis/redisConfig

參考資料

https://www.cnblogs.com/shenh/p/9714547.html

https://cloud.tencent.com/developer/article/1343834

Leave a Reply

Your email address will not be published. Required fields are marked *