(六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)


參考並感謝

下載redis鏡像(不帶tag標簽則表示下載latest版本)

docker pull redis

從github 下載最新的redis.conf,注意重要參數

# 端口
port 6379
# 密碼
requirepass Mypwd@123456
# 支持數據持久化
appendonly yes
# 關閉守護進程
daemonize no
# 默認多少個數據庫
databases 16

# 從庫時需要增加主庫配置
# 主庫密碼(一個集群密碼需要保持一致)
masterauth Mypwd@123456
# 主庫地址和端口
slaveof 172.17.0.1 6379

啟動 redis6379 主庫

docker run -d \
-p 6379:6379 \
--name redis6379 \
--mount type=bind,source=/var/docker/configs/redis/6379/redis.conf,target=/usr/local/etc/redis/redis.conf \
--mount type=bind,source=/var/docker/datas/redis/6379,target=/data \
--restart always \
redis:latest \
redis-server /usr/local/etc/redis/redis.conf

啟動 redis6380 從庫(需要修改redis.conf的port和從服務器相關配置)

docker run -d \
-p 6380:6380 \
--name redis6380 \
--mount type=bind,source=/var/docker/configs/redis/6380/redis.conf,target=/usr/local/etc/redis/redis.conf \
--mount type=bind,source=/var/docker/datas/redis/6380,target=/data \
--restart always \
redis:latest \
redis-server /usr/local/etc/redis/redis.conf

啟動 redis6381 從庫(需要修改redis.conf的port和從服務器相關配置)

docker run -d \
-p 6381:6381 \
--name redis6381 \
--mount type=bind,source=/var/docker/configs/redis/6381/redis.conf,target=/usr/local/etc/redis/redis.conf \
--mount type=bind,source=/var/docker/datas/redis/6381,target=/data \
--restart always \
redis:latest \
redis-server /usr/local/etc/redis/redis.conf

從github 下載最新的sentinel.conf,注意重要參數

# 端口
port 26379
# 關閉守護進程
daemonize no
# 設定監聽的redis集群的名稱(mymaster)+IP+主庫端口+最少從庫數量
sentinel monitor mymaster 172.17.0.1 6379 2
# 設定監聽的redis集群的密碼(集群中主庫和從庫密碼需要保持一致)
sentinel auth-pass mymaster Mypwd@123456

開放redis和sentinel端口並立即生效

firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --zone=public --add-port=6380/tcp --permanent
firewall-cmd --zone=public --add-port=6381/tcp --permanent
firewall-cmd --zone=public --add-port=26379/tcp --permanent
firewall-cmd --zone=public --add-port=26380/tcp --permanent
firewall-cmd --zone=public --add-port=26381/tcp --permanent
firewall-cmd --reload

不修改redis.conf,通過命令方式使從庫加入集群

docker exec -it redis6380 bash
redis-cli -a Mypwd@123456 -p 6380
slaveof 172.17.0.1 6379
config set masterauth Mypwd@123456
docker exec -it redis6381 bash
redis-cli -a Mypwd@123456 -p 6381
slaveof 172.17.0.1 6379
config set masterauth Mypwd@123456

主容器查詢集群狀態

docker exec -it redis6379 bash
redis-cli -a Mypwd@123456 -p 6379
info Replication

查看哨兵監控情況(不同的哨兵登錄不同的容器使用客戶端26379 26380 26381)

redis-cli -p 26379
# 查看集群主庫情況
sentinel master mymaster
# 查看集群從庫情況
sentinel slaves mymaster

從庫退出集群並保持原先數據(通過bash登錄從庫容器后,使用redis-cli客戶端)

slaveof no one

驗證哨兵模式+集群是否高可用(通過bash登錄從庫容器后,使用redis-cli客戶端)

redis-cli -a Mypwd@123456 -p 6379 DEBUG sleep 60

PS:
啟動容器之前,需要創建好對應的宿主機的文件目錄,宿主機缺少文件會導致容器啟動失敗

《(六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)》CSDN地址:https://blog.csdn.net/madmarszff/article/details/100902662

《(六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)》博客園地址:https://www.cnblogs.com/godzff/p/11530290.html

《(六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)》簡書地址:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM