Redis的哨兵机制的配置

本文深入解析Redis哨兵(sentinel)系统,介绍其监控、提醒及自动故障迁移功能,阐述哨兵如何确保Redis集群的高可用性和稳定性,包括哨兵的工作原理、配置步骤及与Zookeeper的相似之处。

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

什么是哨兵机制

Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务:

·        监控(Monitoring)哨兵(sentinel) 会不断地检查你的MasterSlave是否运作正常。

·        提醒(Notification):当被监控的某个 Redis出现问题时哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。

·        自动故障迁移(Automatic failover):当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作,它会将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master; 当客户端试图连接失效的Master,集群也会向客户端返回新Master的地址,使得集群可以使用Master代替失效Master

哨兵(sentinel) 是一个分布式系统,你可以在一个架构中运行多个哨兵(sentinel) 进程,这些进程使用流言协议(gossipprotocols)来接收关于Master是否下线的信息,并使用投票协议(agreement protocols)来决定是否执行自动故障迁移,以及选择哪个Slave作为新的Master.

每个哨兵(sentinel) 会向其它哨兵(sentinel)masterslave定时发送消息,以确认对方是否,如果发现对方在指定时间(可配置)内未回应,则暂时认为对方已挂(所谓的主观认为宕机” Subjective Down,简称sdown).

哨兵群中的多数sentinel,都报告某一master没响应,系统才认为该master"彻底死亡"(:客观上的真正down,Objective Down,简称odown),通过一定的vote算法,从剩下的slave节点中,选一台提升为master,然后自动修改相关配置.

虽然哨兵(sentinel) 释出为一个单独的可执行文件 redis-sentinel ,但实际上它只是一个运行在特殊模式下的 Redis 服务器,你可以在启动一个普通 Redis 服务器时通过给定 --sentinel 选项来启动哨兵(sentinel).

哨兵(sentinel) 的一些设计思路和zookeeper非常类似

单个哨兵(sentinel)

哨兵模式修改配置

实现步骤:

1、在你所设定的哨兵服务器,把sentinel.conf 拷贝到 etc 目录下

cp sentinel.conf /usr/local/redis/etc

2.修改sentinel.conf配置文件

sentinel monitor mymaster 192.168.161.134 6379 1  #主节点 名称 IP 端口号 选举次数

sentinel auth-pass mymaster 123456 # 名称  密码

3、修改心跳检测 30秒 表示实时监测 默认为30秒 

4.修改合格节点: 默认为1 如果你有多个节点的话 可以进行修改

sentinel parallel-syncs mymaster 1  做多多少合格节点

5、. 启动哨兵模式

./redis-server /usr/local/redis/etc/sentinel.conf --sentinel & 

看到图中效果表示哨兵配置成功:

 

 

### Spring Boot Redis Sentinel 集群配置指南 在分布式环境中,为了提高系统的可用性和可靠性,通常会采用Redis哨兵(Sentinel)机制来监控和管理Redis实例。对于Spring Boot应用程序来说,与Redis哨兵集群集成涉及几个重要方面。 #### 1. 添加依赖项 要在项目中启用对Redis的支持,在`pom.xml`或者`build.gradle`文件里加入相应的starter包[^1]: 对于Maven构建工具而言: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` 而对于Gradle,则应添加如下语句: ```groovy implementation 'org.springframework.boot:spring-boot-starter-data-redis' ``` #### 2. 配置Sentinel节点信息 编辑application.properties或application.yml文件以指定多个sentinels地址以及master名称。下面是一个YAML格式的例子[^2]: ```yaml spring: redis: sentinel: master: mymaster nodes: localhost:26379,localhost:26380,localhost:26381 ``` 这里假设存在三个运行在同一台机器上的sentinel进程监听不同端口;实际部署时应当替换为真实的IP地址及端口号组合。 #### 3. 自定义RedisConnectionFactory Bean (可选) 如果需要更细粒度地控制连接行为,比如设置超时时长等参数,可以通过创建自定义bean实现这一点。这一步不是必需的,但在某些场景下可能会有所帮助[^3]: ```java @Configuration public class RedisConfig { @Bean public LettuceConnectionFactory redisConnectionFactory() { RedisSentinelConfiguration sentinelConfig = new RedisSentinelConfiguration() .master("mymaster") .sentinel("host1", port1) .sentinel("host2", port2); return new LettuceConnectionFactory(sentinelConfig); } } ``` 上述代码片段展示了如何利用Lettuce作为客户端库建立到Redis哨兵集群的安全可靠链接。 通过遵循这些指导原则,能够有效地将基于Spring Boot的应用程序同Redis哨兵集群结合起来,从而增强服务稳定性和响应速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值