美文网首页
SpringBoot + Redis Sentinel 实现HA

SpringBoot + Redis Sentinel 实现HA

作者: 阿能是一只猫 | 来源:发表于2017-06-06 16:40 被阅读2116次

    先看完这个,然后很简单的弄一个master和一个slave。然后按顺序启动。
    https://redis.io/topics/replication
    其实就是配置slaveof,然后分别配置requirepass和master-auth。

    再看完这个,
    https://redis.io/topics/sentinel
    然后启动(最佳实践是3或者更多的奇数个)哨兵服务,可能用到的配置文件如下。

    Sentinel 配置

    bind 0.0.0.0
    port 5000    #Sentinel 服务的端口
    daemonize yes
    logfile "/var/log/redis/sentinel.log"
    sentinel monitor mymaster 127.0.0.1 6379 1  # Quorum取比总数/2大的最小整数即可,这里是1
    sentinel down-after-milliseconds mymaster 5000
    sentinel failover-timeout mymaster 60000
    sentinel auth-pass mymaster toor  # Redis服务的密码
    

    然后通过tailf /var/log/redis/sentinel.log来观察服务的主备切换和各种状态之类的。

    应用方面,SpringBoot 的配置如下。

    spring.redis.database=0
    spring.redis.password=toor
    spring.redis.pool.max-idle=8
    spring.redis.pool.min-idle=0
    spring.redis.pool.max-active=8
    spring.redis.pool.max-wait=-1
    spring.redis.sentinel.master=mymaster
    spring.redis.sentinel.nodes=127.0.0.1:5000  # 把需要连接的Sentinel全列在这里即可
    

    然后就正常的用RedisTemplate来操作就行了。

    当Redis_6379(主服务)挂掉的时候,sentinel会将Redis_6380作为Master启动,这个可以从sentinel的日志中观察到。然后SpringBoot方面,会看到类似于Created JedisPool to master之类的信息重新连到新的Master上面,然后一次failover的切换就完成了。

    后续

    通过CLI登录到6380服务上,把slaveof的指令取消(毕竟这时候已经是master了嘛),然后将6379作为slave重新启动即可,这样子下次6380挂了的话,6379就会继续作为Master来提供服务了。

    相关文章

      网友评论

          本文标题:SpringBoot + Redis Sentinel 实现HA

          本文链接:https://www.haomeiwen.com/subject/cvxnfxtx.html