參考並感謝
下載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@123456docker 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 60PS:
啓動容器以前,須要建立好對應的宿主機的文件目錄,宿主機缺乏文件會致使容器啓動失敗html
《(六) Docker 部署 Redis 高可用集羣 (sentinel 哨兵模式)》CSDN地址:https://blog.csdn.net/madmarszff/article/details/100902662git
《(六) Docker 部署 Redis 高可用集羣 (sentinel 哨兵模式)》博客園地址:http://www.javashuo.com/article/p-czcqiats-ke.htmlgithub