Docker搭建Redis哨兵集群
Redis提供了哨兵机制实现主从集群下的故障转移,其中包含了对主从服务的检测、自动故障恢复和通知。
1.环境
centos7、redis6.2.4、MobaXterm
目的:
搭建redis的主从同步+哨兵集群(一主一从三哨兵)
2.步骤
1.主从集群的搭建
主从集群搭建https://blog.csdn.net/m0_74808313/article/details/149283482?spm=1011.2124.3001.6209
2.创建挂载目录和添加配置文件
使用命令创建挂载目录:
mkdir -p redis-demo/sentinel7001/conf
mkdir -p redis-demo/sentinel7001/data
mkdir -p redis-demo/sentinel7002/conf
mkdir -p redis-demo/sentinel7002/data
mkdir -p redis-demo/sentinel7002/conf
mkdir -p redis-demo/sentinel7002/data
添加配置文件sentinel.conf:
vim /home/hl/redis-demo/sentinel7001/conf/sentinel.conf
将以下内容复制到文件中:
port 27001
# 统一虚拟机ip
sentinel announce-ip 192.168.206.180
# 指定主节点以及哨兵的quonum
sentinel monitor mymaster 192.168.206.180 7001 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
剩余两个哨兵同样的操作,记得改端口号。
3.创建并启动sentinel容器
docker run -d \--name sentinel1 \--net redis-net \-p 27001:27001 \--privileged=true \-v /home/hl/redis-demo/sentinel7001/conf:/etc/redis \-v /home/hl/redis-demo/sentinel7001/data:/data \redis:6.2.4 \redis-sentinel /etc/redis/sentinel.conf
docker run -d \--name sentinel2 \--net redis-net \-p 27002:27002 \--privileged=true \-v /home/hl/redis-demo/sentinel7002/conf:/etc/redis \-v /home/hl/redis-demo/sentinel7002/data:/data \redis:6.2.4 \redis-sentinel /etc/redis/sentinel.conf
docker run -d \--name sentinel3 \--net redis-net \-p 27003:27003 \--privileged=true \-v /home/hl/redis-demo/sentinel7003/conf:/etc/redis \-v /home/hl/redis-demo/sentinel7003/data:/data \redis:6.2.4 \redis-sentinel /etc/redis/sentinel.conf
使用docker ps命令查看是否启动成功:
出现信息则表示启动成功
使用docker exec -it sentinel1 redis-cli -p 27001 sentinel master mymaster命令查看sentinel信息:
出现以上信息则表示连接成功。
执行docker logs sentinel1命令查看打印的日志信息:
我们可以看到哨兵检测的主从集群:
3.自动故障转移测试
我们来模拟哨兵的自动故障转移,关闭master容器来模拟宕机,来查看slave会不会成为新的master,恢复旧的master,来查看是否成为了slave。
docker stop redis-7001
等待几秒后再查看sentinel日志:
我们可以看到有超过quonum的哨兵都认为master主观下线了,master节点由原来的7001转移到了7002,也就是slave节点成为了新的master
重新启动docker容器,可以看到恢复连接后master仍是7002
docker start redis-7001