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

实现妨碍规复自动化:详解Redis哨兵技能

发布时间:2018-11-02 21:50:56 所属栏目:编程 来源:DBAplus社群
导读:在前面分享的《读完这篇文章,就根基搞定了Redis主从复制》中我们曾提到,Redis主从复制的浸染稀有据热备、负载平衡、妨碍规复等;但主从复制存在的一个题目是妨碍规复无法自动化。本文将要先容的哨兵,它基于Redis主从复制,首要浸染即是办理主节点妨碍恢

个中,sentinel monitor mymaster 192.168. 92.128 6379 2设置的寄义是:该哨兵节点监控192.168.92.128:6379这个主节点,该主节点的名称是mymaster,最后的2的寄义与主节点的妨碍鉴定有关:至少必要2个哨兵节点赞成,才气鉴定主节点妨碍并举办妨碍转移。

哨兵节点的启动有两种方法,二者浸染是完全沟通的:

  • redis-sentinel sentinel-26379.conf
  • redis-server sentinel-26379.conf --sentinel

凭证上述方法设置和启动之后,整个哨兵体系就启动完毕了。可以通过Redis-cli毗连哨兵节点举办验证,如下图所示:可以看出26379哨兵节点已经在监控mymaster主节点(即192.168.92.128:6379),并发明白其2个从节点和其它2个哨兵节点。

实现妨碍规复自动化:详解Redis哨兵技能

此时假如查察哨兵节点的设置文件,会发明一些变革,以26379为例:

实现妨碍规复自动化:详解Redis哨兵技能

个中,dir只是显式声明白数据和日记地址的目次(在哨兵语境下只有日记);known-slave和known-sentinel表现哨兵已经发明白从节点和其他哨兵;带有epoch的参数与设置纪元有关(设置纪元是一个从0开始的计数器,每举办一次率领者哨兵推举,城市+1;率领者哨兵推举是妨碍转移阶段的一个操纵,在后文道理部门会先容)。

3.演示妨碍转移

哨兵的4个浸染中,设置提供者和关照必要客户端的共同,本文将在下一章先容客户端会见哨兵体系的要领时具体先容。这一末节将演示当主节点产生妨碍时,哨兵的监控和自动妨碍转移成果。

Step1:起首,行使kill呼吁杀掉主节点:

实现妨碍规复自动化:详解Redis哨兵技能

Step2:假云云时当即在哨兵节点中行使info Sentinel呼吁查察,会发明主节点还没有切换过来,由于哨兵发明主节点妨碍并转移,必要一段时刻。

实现妨碍规复自动化:详解Redis哨兵技能

Step3:一段时刻往后,再次在哨兵节点中执行info Sentinel查察,发明主节点已经切换成6380节点。

实现妨碍规复自动化:详解Redis哨兵技能

可是同时可以发明,哨兵节点以为新的主节点如故有2个从节点,这是由于哨兵在将6380切换成主节点的同时,将6379节点置为其从节点;固然6379从节点已经挂掉,可是因为哨兵并不会对从节点举办客观下线(其寄义将在道理部门先容),因此以为该从节点一向存在。当6379节点从头启动后,会自动酿成6380节点的从节点。下面验证一下。

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.客户端道理

(编辑:湖南网)

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

热点阅读