【NoSQL】抛弃VIP,使用consul和sentinel构建redis的高可用系统

发布时间:2020-07-20 14:52:22 作者:对唔住
来源:网络 阅读:4110

背景:

1.传统redis高可用方案只加了sentinel,在主库故障后,虽然可以选主,然后切换只读参数,但是,对应用来说却需要更改连接的IP或者在hosts中更改解析。算得上是半自动。
2.利用consul系统的服务注册与服务健康检查功能可以实现全自动的故障切换与地址解析。

架构:

【NoSQL】抛弃VIP,使用consul和sentinel构建redis的高可用系统

搭建:

1.建立consul集群,在redis节点上布置consul agent
2.建立sentinel集群
3.注册服务(重点)


    情况1:redis2222为主实例,redis3333为从实例
          通过在脚本对redis的主从属性进行检查, "args":["/root/check/redis_role.sh","2222","master"],
    在脚本中,我们设置了读取传入的两个参数并进行使用,在consul配置文件中,对传入参数
    需要使用“,”分割,并且无论数字或者字符串都需要加上双引号。
    2222的实例中role为master,3333的实例role为 slave。分别满足了redis-master和redis-slave
    的健康检查,consul在解析redis-master.service.consul和redis-slave.service.consul时分别指向
    了redis2222的主机和redis3333的地址。
    此时:   ping redis-master.service.consul 》192.168.1.131
                  ping redis-slave.service.consul 》192.168.1.104
                  APP可以通过redis-master.service.consul:2222对redis进行写入,
                  通过redis-master.service.consul:3333对redis进行分散读请求
    consul web页面如图

【NoSQL】抛弃VIP,使用consul和sentinel构建redis的高可用系统
【NoSQL】抛弃VIP,使用consul和sentinel构建redis的高可用系统


情况2:redis2222节点故障,sentinel自动提升redis3333节点为主节点,2222重新上线后,被
    sentinel集群配置为指向3333的从节点。
         此时: ping redis-master.service.consul 》192.168.1.104
               ping redis-slave.service.consul 》192.168.1.131
    APP可以通过redis-master.service.consul:3333对redis进行写入,
    通过redis-master.service.consul:2222对redis进行分散读请求
    consul web页面如图

【NoSQL】抛弃VIP,使用consul和sentinel构建redis的高可用系统
【NoSQL】抛弃VIP,使用consul和sentinel构建redis的高可用系统


后记:   
    1.本文中为了显著区分两个redis实例,对端口进行了区分,实际应用推荐使用相同端口(如2222)
        这样每次访问redis-master.service.consul:2222都能访问到主实例
            每次访问redis-master.service.consul:2222都能访问到从实例
    2. consul定期执行健康检测脚本并接收返回值0作为服务处于正常的标志,返回值1作为服务处于警告
      状态,除此之外任何其他返回值都被认为服务处于故障状态。实际使用时根据自身情况设置健康检测脚本
      执行的频率
    3.这种切换架构的便利性建立在数据库端可以自洽的完成主从选举与切换的特性上,同理,这种思路还
      可以用在consul+MongoDB副本集,consul+PXC集群上。
    4.官方文档地址:`https://www.consul.io/docs/index.html`
      相关配置文件已放置在GitHub:`https://github.com/naughtyGitCat/HA_DB/tree/master/Consul`
推荐阅读:
  1. 如何构建MongoDB RepSet +Consul高可用切换系统
  2. redis高可用方案之sentinel(哨兵集群)

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

consul redis sentinel

上一篇:Maven如何搭建开发环境

下一篇:mongodb是不是内存数据库

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》