docker搭建redis集群
- 2019 年 12 月 6 日
- 筆記
運行redis鏡像 首先使用docker啟動3個redis容器服務,分別使用到6379、6380、6381端口 docker run –name redis-6379 -p 6379:6379 -d docker.io/redis redis-server docker run –name redis-6380 -p 6380:6379 -d docker.io/redis redis-server docker run –name redis-6381 -p 6381:6379 -d docker.io/redis redis-server 查看運行 docker ps -a 使用如下命令查看容器內網的ip地址等信息 docker inspect containerid(容器id) 3個redis的內網ip地址為: redis-6379:172.17.0.2:6379 redis-6380:172.17.0.3:6379 redis-6381:172.17.0.4:6379 進入docker容器內部,查看當前redis角色(主還是從) docker exec -ti 4934df3626d0 /bin/bash root@4934df3626d0:/data# redis-cli 127.0.0.1:6379> info replication # Replication role:master connected_slaves:0 master_replid:e7a53b1a1c968d28f0950feed7d630406283f612 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:0 second_repl_offset:-1 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 可以看到當前3台redis都是master角色,使用redis-cli命令修改redis-6380、redis-6381的主機為redis-6379 127.0.0.1:6379> SLAVEOF 172.17.0.2 6379 127.0.0.1:6379> info replication # Replication role:slave master_host:172.17.0.2 master_port:6379 master_link_status:up master_last_io_seconds_ago:2 master_sync_in_progress:0 slave_repl_offset:28 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:abbae95bc3fbe0c85832f8701f0daf15cd7f060e master_replid2:0000000000000000000000000000000000000000 master_repl_offset:28 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:28 6380 6381都這樣做 至此,redis下的主從配置就ok了。 配置Sentinel哨兵 Redis 的 Sentinel 系統用於管理多個 Redis 服務器(instance), 該系統執行以下三個任務: 監控(Monitoring): Sentinel 會不斷地檢查你的主服務器和從服務器是否運作正常。 提醒(Notification): 當被監控的某個 Redis 服務器出現問題時, Sentinel 可以通過 API 向管理員或者其他應用程序發送通知。 自動故障遷移(Automatic failover): 當一個主服務器不能正常工作時, Sentinel 會開始一次自動故障遷移操作, 它會將失效主服務器的其中一個從服務器升級為新的主服務器, 並讓失效主服務器的其他從服務器改為複製新的主服務器; 當客戶端試圖連接失效的主服務器時, 集群也會向客戶端返回新主服務器的地址, 使得集群可以使用新主服務器代替失效服務器。 具體介紹可參考:http://redisdoc.com/topic/sentinel.html 接下來直接進入3台redis容器內部進行配置 docker exec -ti 容器id /bin/bash 進入根目錄創建sentinel.conf文件 cd / && touch sentinel.conf apt-get update 安裝vim apt-get install -y vim 修改文件內容為: sentinel monitor mymaster 172.17.0.2 6379 1 最後,啟動Redis哨兵: 使用 redis-sentinel /sentinel.conf 啟動Redis哨兵監控 使用 ps –ef |grep redis 命令,可以看到redis-server和redis-sentinel正在運行 至此,Sentinel哨兵配置完畢。
測試驗證 首先查看哨兵監控情況

然後嘗試關閉主機

再查看剩餘2個從機,這裡會自動選舉產生新的主機

然後,我們再次將剛才停止的主機啟動起來,發現啟動後其自動成為從機

至此,redis的主從高可用模式已經全部配置完畢,持久化下次研究了再過來記錄吧,over…
出處:https://www.cnblogs.com/vipzhou