Redis之哨兵模式
一 哨兵模式原理
说明:
- Sentinel具有三个作用:监控,故障转移和通知
- Sentinel如何判断Redis是否健康
① 每隔1秒发送一次ping命令,如果超过一定时间没有响应则认为主观下线
② 如果超过一半以上的sentinel认为实例主观下线,则判断为客户下线 - 故障转移的步骤
① 选定一个slave为新的master,执行salve no one
② 让所有节点都执行salve of新的master节点
③ 修改故障节点配置为salve
二 哨兵集群搭建
- 在sentinel.conf文件下添加一下内容:
#端口
port 27001
sentinel announce-ip 192.168.158.101
# mymaster 主节点名称,主节点ip 2:选举master的quorum值
sentinel monitor mymaster 192.168.158.101 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
三 使用RedisTemplate实现
- 配置依赖
<dependency>
<groupId>org.springframework.book</groupId>
<artifactId>spring-boot-starter-data-redis</artifacId>
</dependency>
- 配置setinel集群配置
srping:
redis:
setinel:
master:mymaster
nodes:
- 192.168.150.101:27001
- 192.168.150.101:27002
- 192.168.150.101:27003
- 配置读写分离
@Bean
public LettuceClientConfigurationBuilderCustomizer clientConfigurationBuilderCustomizer(){
@Override
public void customize(LettuceClientConfiguration.LettuceClientConfigurationbuilder clientConfugurationBuilder){
clientConfugurationBuilder.readFrom(ReadFrom.REPLICA_PREFERRED);
}
}