加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

实现故障恢复自动化:详解Redis哨兵技术

发布时间:2018-11-05 14:48:33 所属栏目:建站 来源:DBAplus社群
导读:副标题#e# 在前面分享的《读完这篇文章,就基本搞定了Redis主从复制》中我们曾提到,Redis主从复制的作用有数据热备、负载均衡、故障恢复等;但主从复制存在的一个问题是故障恢复无法自动化。本文将要介绍的哨兵,它基于Redis主从复制,主要作用便是解决主

Step4:重启6379节点,可以看到6379节点成为了6380节点的从节点。

实现故障恢复自动化:详解Redis哨兵技术

Step5:在故障转移阶段,哨兵和主从节点的配置文件都会被改写。

对于主从节点,主要是slaveof配置的变化:新的主节点没有了slaveof配置,其从节点则slaveof新的主节点。

对于哨兵节点,除了主从节点信息的变化,纪元(epoch)也会变化,下图中可以看到纪元相关的参数都+1了。

实现故障恢复自动化:详解Redis哨兵技术

4.总结

哨兵系统的搭建过程,有几点需要注意:

  • 哨兵系统中的主从节点,与普通的主从节点并没有什么区别,故障发现和转移是由哨兵来控制和完成的。

  • 哨兵节点本质上是Redis节点。

  • 每个哨兵节点,只需要配置监控主节点,便可以自动发现其他的哨兵节点和从节点。

  • 在哨兵节点启动和故障转移阶段,各个节点的配置文件会被重写(Config Rewrite)。

  • 本章的例子中,一个哨兵只监控了一个主节点;实际上,一个哨兵可以监控多个主节点,通过配置多条sentinel monitor即可实现。

三、客户端访问哨兵系统

上一小节演示了哨兵的两大作用:监控和自动故障转移,本小节则结合客户端演示哨兵的另外两个作用:配置提供者和通知。

1.代码示例

在介绍客户端的原理之前,先以Java客户端Jedis为例,演示一下使用方法:下面代码可以连接我们刚刚搭建的哨兵系统,并进行各种读写操作:

  1. public static void testSentinel throws Exception {  
  2. String masterName = "mymaster";  
  3. Set<String> sentinels = new HashSet<>;  
  4. sentinels.add("192.168.92.128:26379");  
  5. sentinels.add("192.168.92.128:26380");  
  6. sentinels.add("192.168.92.128:26381");  
  7. JedisSentinelPool pool = new JedisSentinelPool(masterName, sentinels); //初始化过程做了很多工作  
  8. Jedis jedis = pool.getResource;  
  9. jedis.set("key1", "value1");  
  10. pool.close;  

(注:代码中只演示如何连接哨兵,异常处理、资源关闭等未考虑)

2.客户端原理

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读