基于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地址来进行访问。