Docker搭建Redis哨兵集群

发布于:2025-07-17 ⋅ 阅读:(21) ⋅ 点赞:(0)

                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


网站公告

今日签到

点亮在社区的每一天
去签到