redis哨兵机制

哨兵的作用和原理

监控:Sentinel会不断检查您的master和slave
是否按预期工作
自动故障恢复:如果masteri故障,Sentinel:会将
一个slave:提升为master。.当故障实例恢复后也
以新的master为主
通知:Sentinel?充当Redis客户端的服务发现来
源,当集群发生故障转移时,会将最新信息推送
给Redis的客户端

Sentinel基于心跳监测服务

主观下线:如果某sentinel-节点发现某实例未在规定时间响应,则认为该实例主观下线。
客观下线:若超过指定数量(quorum)的sentinel都认为该实例主观下线,则该实例客观下线quorum值最好超过Sentinels实例数量的一半。

如果主节点死掉,选举谁当主节点的过程
1.首先会判断slave节点与master-节点断开时间长短,如果超过指定值                                (down-after-.milliseconds*10)则会排除该slave节点
2.然后判断slave节点的slave-priority值,越小优先级越高,如果是O则永不参与选举
3.如果slave-prority一样,则判断slave节点的offset值,越大说明数据越新,优先级越高
4.最后是判断slave节点的运行id大小,越小优先级越高。

如何实现故障转移

1.首先将被选中的slave节点变成主节点 slave no one 

2.通过广播将其他节点认被选举的为主 slave ip port

3.将死掉的节点变成从节点 slave ip port


搭建哨兵集群

配置配置文件


port 27001
sentinel announce-ip 192.168.241.134
sentinel monitor mymaster 192.168.241.134 7001 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
dir "/opt/s1"

  • port 27001:是当前sentinel实例的端口

  • sentinel monitor mymaster 192.168.150.101 7001 2:指定主节点信息

    • mymaster:主节点名称,自定义,任意写

    • 192.168.150.101 7001:主节点的ip和端口

    • 2:选举master时的quorum值


RedisTemplatel的哨兵模式

//在pom中导入依赖
 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
 </dependency>
//修改yaml文件

spring:
  redis:
    sentinel:
      master: mymaster
      nodes:
        - 192.168.241.134:27001
        - 192.168.241.134:27002
        - 192.168.241.134:27003






//添加bean来选择模式

@Bean
public LettuceClientConfigurationBuilderCustomizer clientConfigurationBuilderCustomizer(){
    return new LettuceClientConfigurationBuilderCustomizer() {
        @Override
        public void customize(LettuceClientConfiguration.LettuceClientConfigurationBuilder clientConfigurationBuilder) {
                    clientConfigurationBuilder.readFrom(ReadFrom.REPLICA_PREFERRED);     
        }
    };
}

MASTER:从主节点读取
MASTER PREFERRED:优先从master节点读取,master不可用才读取replica
REPLICA从slave(replica)节点读取
REPLICA PREFERRED:优先从slave(replica)节点读取,所有的slave都不可用才读取master

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值