400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

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

背景:

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`

名称栏目:【NoSQL】抛弃VIP,使用consul和sentinel构建redis的高可用系统
当前链接:http://mzwzsj.com/article/gggjds.html
  • 网站建设专属方案

  • 网站定制化设计

  • 7X24小时服务

  • N对管家服务

让你的专属顾问为你服务