redis-sentinel主从切换

本文介绍了如何配置Redis Sentinel实现主从切换。通过设置3个Sentinel节点监控3个Redis节点,当master宕机时,Sentinel会自动将一个slave提升为master。配置过程涉及Sentinel配置文件的修改,包括端口、日志文件路径等,并展示了启动Sentinel服务后配置文件的更新内容。最后,文章提到了测试主从切换的方法,包括杀掉master进程以触发切换,并确认新的master角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上篇我们搭建了redis主从,那么如果redis的master宕掉之后,sentinel可以切换一台slave为master

上篇我们搭建redis主从是一主二从在一台机器上,所以现在需要3个sentinel服务来监控三个redis节点

主:127.0.0.1:6379

从:127.0.0.1:6380,127.0.0.1:6381

sentinel:127.0.0.1:26379,127.0.0.1:26380,127.0.0.1:26381
开始配置:

修改sentinel的配置文件(sentinel的配置文件在redis的包中,是sentinel.conf):只修改以下几项

redis_6379的sentinel.conf:

    port 26379
    daemonize yes
    dir "/export/work/redis_6379/data"
    logfile "/export/work/redis_6379/log/26379.log"

    sentinel monitor mymaster 127.0.0.1 6379 2

redis_6380的sentinel.conf:

     port 26380
    daemonize yes
    dir "/export/work/redis_6380/data"
    logfile "/export/work/redis_6380/log/26380.log"

    sentinel monitor mymaster 127.0.0.1 6379 2

redis_6381的sentinel.conf:

     port 26381
    daemonize yes
    dir "/export/work/redis_6381/data"
    logfile "/export/work/redis_6380/log/26381.log"

    sentinel monitor mymaster 127.0.0.1 6379 2

修改好配置文件就可以启动sentinel服务了:

[root@localhost redis_6379]# bin/redis-sentinel conf/sentinel.conf

[root@localhost redis_6380]# bin/redis-sentinel conf/sentinel.conf

[root@localhost redis_6381]# bin/redis-sentinel conf/sentinel.conf

启动之后,sentinel的配置文件sentinel.conf会多下面这些内容:

redis_6379的sentinel.conf:

    sentinel known-slave mymaster 127.0.0.1 6381

    sentinel known-slave mymaster 127.0.0.1 6380
    sentinel known-sentinel mymaster 127.0.0.1 26381 e35d72a566891cbbf419f3189ab5f17a9176b661

    sentinel known-sentinel mymaster 127.0.0.1 26380 425a2cdaa7c402a25a3a0845a2009db7d8875704

redis_6380的sentinel.conf:

    sentinel known-slave mymaster 127.0.0.1 6381
    sentinel known-slave mymaster 127.0.0.1 6380
    sentinel known-sentinel mymaster 127.0.0.1 26379 1917ab844524ccb067b97776b6e13f4a5115bb0d
    sentinel known-sentinel mymaster 127.0.0.1 26381 e35d72a566891cbbf419f3189ab5f17a9176b661

redis_6381的sentinel.conf:

    sentinel known-slave mymaster 127.0.0.1 6380
    sentinel known-slave mymaster 127.0.0.1 6381
    sentinel known-sentinel mymaster 127.0.0.1 26379 1917ab844524ccb067b97776b6e13f4a5115bb0d

    sentinel known-sentinel mymaster 127.0.0.1 26380 425a2cdaa7c402a25a3a0845a2009db7d8875704

接下来我们测试主从切换:

先看下redis的进程:


杀掉现在的redis的master6379:

    [root@localhost redis_6379]# kill -9 838

检查:


master此时就切换到了6380,同学们还可以去看配置文件,也有变化

这样就算6379重新启动了,他也是slave

### Redis Sentinel 配置与管理 #### 一、Redis Sentinel 架构概述 Redis Sentinel 是一种用于监控和提供高可用性的解决方案,能够自动执行故障检测并触发故障转移操作。其工作原理在于通过一组Sentinel进程来持续监视主从实例的状态,在发生故障时选举新的主节点以维持系统的正常运行[^1]。 #### 二、安装准备 在开始配置之前,需确认已搭建好至少一套完整的Redis主从集群,并且这些节点最好分布在不同物理机上以提高可靠性。对于生产环境中部署而言,建议设置三个以上的Sentinel节点来保障投票机制的有效性,从而更好地遵循过半数原则[^4]。 #### 三、基本配置步骤 ##### 创建必要的目录结构 首先应建立相应的文件夹用来存放各个组件所需的资源: ```bash mkdir -p /data/redisMaster cd /data/redisMaster touch myredis.conf vim myredis.conf ``` 上述命令将创建一个名为`myredis.conf`的配置文件以及对应的路径[^3]。 ##### 编辑sentinel.conf 文件 接着编辑或新建sentinel专用配置文件(通常命名为`sentryinel.conf`),其中包含但不限于以下参数设定: - `port`: 定义监听端口,默认为26379; - `dir`: 工作目录位置; - `sentinel monitor <master-name> <ip> <port> <quorum>` : 设置要监测的目标master名称及其访问信息;此处<quorum>表示多少个sentinels同意才算有效判断; - `sentinel down-after-milliseconds <master-name> <milliseconds>` :指定多长时间内未收到回复视为下线; - `sentinel failover-timeout <master-name> <milliseconds>`:定义整个failover过程的最大超时时长; - `sentinel parallel-syncs <master-name> <numslaves>`:控制一次最多有多少个slave同步新选出来的master。 例如: ```plaintext port 26379 dir "/tmp" sentinel monitor mymaster 127.0.0.1 6379 2 sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 60000 sentinel parallel-syncs mymaster 1 ``` 此部分具体数值可根据实际需求调整优化。 #### 四、启动服务 完成以上准备工作之后就可以依次开启各节点上的Redis Server 和 Sentinel 进程了。一般情况下只需简单输入如下指令即可: ```bash redis-server /path/to/myredis.conf --sentinel ``` 这会依据给定的配置项启动相应守护进程。 #### 五、验证功能有效性 为了测试所建集群能否正确响应异常情况下的切换请求,可以通过模拟关闭当前正在工作的master来看看其他成员是否会按照预期选出新的领导者继续对外提供读写支持。如果一切顺利,则说明整个体系已经具备了一定程度上的容错能力和自我修复特性[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值