redis 哨兵集群

 

redis哨兵集群依赖主从复制集群,目前主从复制集群是1主2从,单机部署测试,目录分别为

/usr/local/redis-7.0.15-master

/usr/local/redis-7.0.15-slave

/usr/local/redis-7.0.15-slave2

redis部署包自带哨兵程序/usr/local/redis-7.0.15-master/src/redis-sentinel和哨兵配置/usr/local/redis-7.0.15-master/sentinel.conf,因此分别在这3个目录启动3个哨兵

 

slave-priority 100

当本机为从角色时, 读取 从的 等级,该数值 越小,等级越大, 在主从切换时,

哨兵读取该配置,并选取值最小的从节点作为新主

 

3个哨兵都监控主节点,通过主节点可以知道有哪些slave,所以sentinel monitor mymaster配置都一样

1、修改master的哨兵配置

复制代码
vim /usr/local/redis-7.0.15-master/sentinel.conf

#17行,关闭保护模式
protected-mode no
#21行,Redis哨兵默认的监听端口
port 26379
#26行,指定sentinel为后台启动
daemonize yes
pidfile "/var/run/redis-sentinel_26379.pid"
#36行,指定日志存放路径
logfile "/var/log/sentinel_26379.log"
#65行,指定数据库存放路径
dir "/var/lib/redis/26379"
#84行,修改 指定该哨兵节点监控主节点
sentinel monitor mymaster 192.168.18.14 6379 2
# mymaster是自定义的,192.168.18.14:6379这个主节点,该主节点的名称是mymaster,最后的2的含义与主节点的故障判定有关:表示至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移

#主节点的登录密码
sentinel auth-pass mymaster sykj@2025
复制代码

2、修改第一个slave的哨兵配置

复制代码
vim /usr/local/redis-7.0.15-slave/sentinel.conf

#17行,关闭保护模式
protected-mode no
#21行,Redis哨兵默认的监听端口
port 26380
#26行,指定sentinel为后台启动
daemonize yes
pidfile "/var/run/redis-sentinel_26380.pid"
#36行,指定日志存放路径
logfile "/var/log/sentinel_26380.log"
#65行,指定数据库存放路径
dir "/var/lib/redis/26380"
#84行,修改 指定该哨兵节点监控主节点
sentinel monitor mymaster 192.168.18.14 6379 2
# mymaster是自定义的,192.168.18.14:6379这个主节点,该主节点的名称是mymaster,最后的2的含义与主节点的故障判定有关:表示至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移

#主节点的登录密码
sentinel auth-pass mymaster sykj@2025
复制代码

3、修改第二个slave的哨兵配置

复制代码
vim /usr/local/redis-7.0.15-slave2/sentinel.conf

#17行,关闭保护模式
protected-mode no
#21行,Redis哨兵默认的监听端口
port 26381
#26行,指定sentinel为后台启动
daemonize yes
pidfile "/var/run/redis-sentinel_26381.pid"
#36行,指定日志存放路径
logfile "/var/log/sentinel_26381.log"
#65行,指定数据库存放路径
dir "/var/lib/redis/26381"
#84行,修改 指定该哨兵节点监控主节点
sentinel monitor mymaster 192.168.18.14 6379 2
# mymaster是自定义的,192.168.18.14:6379这个主节点,该主节点的名称是mymaster,最后的2的含义与主节点的故障判定有关:表示至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移

#主节点的登录密码
sentinel auth-pass mymaster sykj@2025
复制代码

 

4、创建3个哨兵的数据目录

mkdir /var/lib/redis/26379
mkdir /var/lib/redis/26380
mkdir /var/lib/redis/26381

5、启动3个哨兵

/usr/local/redis-7.0.15-master/src/redis-sentinel /usr/local/redis-7.0.15-master/sentinel.conf
/usr/local/redis-7.0.15-slave/src/redis-sentinel /usr/local/redis-7.0.15-slave/sentinel.conf
/usr/local/redis-7.0.15-slave2/src/redis-sentinel /usr/local/redis-7.0.15-slave2/sentinel.conf

6、哨兵的配置文件自动生成了一些主从复制状态的信息,此后主从复制状态会由哨兵接管

7、查看sentinel状态

 8、实时查看某个Sentinel的日志,等下kill掉master

tail -f /var/log/sentinel_26380.log

9、测试,kill掉master查看某个Sentinel日志。通过日志查看新的master变成192.168.18.14:6381,挂掉的master变成slave。并且已经挂掉的master的配置也被修改成slave角色的配置

 第一个slave的master也变成了192.168.18.14:6381

 再次查看sentinel状态,显示的master也变成了192.168.18.14:6381

 

10、恢复之前挂掉的master

恢复前查看现在master的状态

 启动6379端口的之前挂掉的master,恢复后查看现在master的状态

 已经挂掉的master重启后变成slave,这是因为已经挂掉的master的配置也被修改成slave角色的配置

 

posted @   苦逼yw  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示