【Redis】哨兵机制搭建(详细步骤)
阅读须知:
本文主要内容为 Redis 哨兵机制搭建的详细步骤(以三哨兵为例)。
想要了解如何安装 Redis 的同学可以前往:【Redis】基于Docker安装Redis(详细步骤)
想要了解如何搭建 Redis 主从的同学可以前往:【Redis】基于Docker搭建Redis主从(详细步骤)
本文在前两文的基础上,进一步搭建起 Redis 的哨兵机制。
操作步骤
1. 创建配置文件
- 在
/usr/local/software/redis/6379/sentinel
目录下创建配置文件 sentinel.conf- 由于是三哨兵机制,因此在
/usr/local/software/redis/6380/sentinel
、/usr/local/software/redis/6380/sentinel
目录下,均要建立对应的配置文件 sentinel.conf
演示图例如下:
2. 编辑配置文件
- 通过 vim 编辑器编辑配置文件内容,同样三个配置文件均需要分别编辑
- 按下
i
,进入输入模式,粘贴如下内容- 按下
:
,输入wq,保存并退出
哨兵1:跟踪 Redis(主)
# 所以无需担心端口重复使用
# 如果需要在单机
port 26379
# 设定密码认证
# requirepass 123456
# 配置哨兵的监控参数
# 格式:sentinel monitor <master-name> <ip> <redis-port> <quorum>
# master-name是为这个被监控的master起的名字
# ip是被监控的master的IP或主机名。因为Docker容器之间可以使用容器名访问,所以这里写master节点的容器名
# redis-port是被监控节点所监听的端口号
# quorom设定了当几个哨兵判定这个节点失效后,才认为这个节点真的失效了
sentinel monitor redis_6379 172.18.12.10 6379 2
# 连接主节点的密码
# 格式:sentinel auth-pass <master-name> <password>
# sentinel auth-pass local-master 123456
# master在连续多长时间无法响应PING指令后,就会主观判定节点下线,默认是30秒
# 格式:sentinel down-after-milliseconds <master-name> <milliseconds>
sentinel down-after-milliseconds redis_6379 30000
哨兵2:跟踪 Redis(从1)
# 所以无需担心端口重复使用
# 如果需要在单机
port 26380
# 设定密码认证
# requirepass 123456
# 配置哨兵的监控参数
# 格式:sentinel monitor <master-name> <ip> <redis-port> <quorum>
# master-name是为这个被监控的master起的名字
# ip是被监控的master的IP或主机名。因为Docker容器之间可以使用容器名访问,所以这里写master节点的容器名
# redis-port是被监控节点所监听的端口号
# quorom设定了当几个哨兵判定这个节点失效后,才认为这个节点真的失效了
sentinel monitor redis_6379 172.18.12.10 6379 2
# 连接主节点的密码
# 格式:sentinel auth-pass <master-name> <password>
# sentinel auth-pass local-master 123456
# master在连续多长时间无法响应PING指令后,就会主观判定节点下线,默认是30秒
# 格式:sentinel down-after-milliseconds <master-name> <milliseconds>
sentinel down-after-milliseconds redis_6379 30000
哨兵3:跟踪 Redis(从2)
# 所以无需担心端口重复使用
# 如果需要在单机
port 26381
# 设定密码认证
# requirepass 123456
# 配置哨兵的监控参数
# 格式:sentinel monitor <master-name> <ip> <redis-port> <quorum>
# master-name是为这个被监控的master起的名字
# ip是被监控的master的IP或主机名。因为Docker容器之间可以使用容器名访问,所以这里写master节点的容器名
# redis-port是被监控节点所监听的端口号
# quorom设定了当几个哨兵判定这个节点失效后,才认为这个节点真的失效了
sentinel monitor redis_6379 172.18.12.10 6379 2
# 连接主节点的密码
# 格式:sentinel auth-pass <master-name> <password>
# sentinel auth-pass local-master 123456
# master在连续多长时间无法响应PING指令后,就会主观判定节点下线,默认是30秒
# 格式:sentinel down-after-milliseconds <master-name> <milliseconds>
sentinel down-after-milliseconds redis_6379 30000
演示图例如下:
3. 创建容器
输入对应指令,创建运行哨兵的容器。
创建第一个哨兵(26379):
docker run -it \
--name sentinel_26379 \
--privileged \
--network my_docker_net \
--ip 172.18.12.20 \
-p 26379:26379 \
-v /usr/local/software/redis/6379/sentinel/sentinel.conf:/data/redis-sentinel.conf \
-d redis \
redis-sentinel redis-sentinel.conf
创建第二个哨兵(26380):
docker run -it \
--name sentinel_26380 \
--privileged \
--network my_docker_net \
--ip 172.18.12.21 \
-p 26380:26380 \
-v /usr/local/software/redis/6380/sentinel/sentinel.conf:/data/redis-sentinel.conf \
-d redis \
redis-sentinel redis-sentinel.conf
创建第三个哨兵(26381):
docker run -it \
--name sentinel_26381 \
--privileged \
--network my_docker_net \
--ip 172.18.12.22 \
-p 26381:26381 \
-v /usr/local/software/redis/6381/sentinel/sentinel.conf:/data/redis-sentinel.conf \
-d redis \
redis-sentinel redis-sentinel.conf
演示图例如下:
4. 测试哨兵机制
a. 启动容器
- 输入
docker ps -a
,查看容器创建情况- 输入
docker start 容器名/容器id
,启动对应容器
演示图例如下:
b. 查看对应哨兵状态
依次进入6379、6380、6381容器,查看对应哨兵状态
演示图例如下:
进入redis_6379:
进入redis_6380:
进入redis_6381:
c. 关闭 master
输入
docker stop redis_6379
,关闭主机,模拟主机宕机的情况
演示图例如下:
d. 查看从机状态
等待一会后,依次进入两个从机查看对应从机状态
演示图例如下:
进入redis_6380:
进入redis_6381:
从演示图例中可以看到,本该为从机的6381成为了主机,由此可以看出哨兵机制已经搭建成功!