基於docker實現Redis哨兵模式
下載docker Redis鏡像
docker pull redis
運行容器
sudo docker run -d --name redis-0 -p 6380:6379 redis redis-server # 作爲主機
sudo docker run -d --name redis-1 -p 6381:6379 redis redis-server # 作爲從機
sudo docker run -d --name redis-2 -p 6382:6379 redis redis-server # 作爲從機
docker 容器之間的網絡互連默認使用的bridge模式,簡單理解爲 各個容器之間處在一個局域網內,與外界隔離。外界想要訪問可以通過宿主機端口映射的方式。
查看容器信息
docker inspect redis-1
設置主機與從機
,Redis的主從配置十分簡單,主機不用做任何配置,而從機也只需要一條命令就好。
使用redis-cli 工具連接運行在docker 容器裏面的redis server。此時用的是主機映射過去的端口號,所以是 6381因爲docker會將對於宿主機6381端口的請求轉發到這個容器的6379端口。如果使用容器的IP地址連接 則應該爲 ./redis-cli -h 172.17.0.3 -p 6379
驗證
給主機設置數據
在從機上取數據
新建sentinel.conf文件
在文件中只需簡單配置一句話,完整的配置文件可以參考redis安裝目錄下的sentinel.conf文件。
sentinel monitor host6380 172.17.0.2 6379 1
sentinel monitor <maseter-name> <ip> <redis-port> <quorum>
<maseter-name> : 給主機起個名字
<ip> : 主機的IP地址與端口號
<quorum> : 當主機掛了以後,從機要獲取多少票才能成爲主機。
開啓哨兵監控
./redis-sentinel /home/crxk/Documents/redis/sentinel.conf
查看主機信息
查看從機信息
把主機直接關閉,此時查看運行哨兵程序的那個命令框,稍等一會發現系統自動進行選舉,然後確定新的主機
此時過程中應該注意,對於容器之間的互連,以及宿主機與容器之間的互連,要多通過容器的局域網IP地址來進行訪問。