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

Step5:在故障转移阶段,哨兵和主从节点的配置文件都会被改写。
对于主从节点,主要是slaveof配置的变化:新的主节点没有了slaveof配置,其从节点则slaveof新的主节点。
对于哨兵节点,除了主从节点信息的变化,纪元(epoch)也会变化,下图中可以看到纪元相关的参数都+1了。

4.总结
哨兵系统的搭建过程,有几点需要注意:
-
哨兵系统中的主从节点,与普通的主从节点并没有什么区别,故障发现和转移是由哨兵来控制和完成的。
-
哨兵节点本质上是Redis节点。
-
每个哨兵节点,只需要配置监控主节点,便可以自动发现其他的哨兵节点和从节点。
-
在哨兵节点启动和故障转移阶段,各个节点的配置文件会被重写(Config Rewrite)。
-
本章的例子中,一个哨兵只监控了一个主节点;实际上,一个哨兵可以监控多个主节点,通过配置多条sentinel monitor即可实现。
三、客户端访问哨兵系统
上一小节演示了哨兵的两大作用:监控和自动故障转移,本小节则结合客户端演示哨兵的另外两个作用:配置提供者和通知。
1.代码示例
在介绍客户端的原理之前,先以Java客户端Jedis为例,演示一下使用方法:下面代码可以连接我们刚刚搭建的哨兵系统,并进行各种读写操作:
- public static void testSentinel throws Exception {
- String masterName = "mymaster";
- Set<String> sentinels = new HashSet<>;
- sentinels.add("192.168.92.128:26379");
- sentinels.add("192.168.92.128:26380");
- sentinels.add("192.168.92.128:26381");
- JedisSentinelPool pool = new JedisSentinelPool(masterName, sentinels); //初始化过程做了很多工作
- Jedis jedis = pool.getResource;
- jedis.set("key1", "value1");
- pool.close;
- }
(注:代码中只演示如何连接哨兵,异常处理、资源关闭等未考虑)
2.客户端原理 (编辑:西安站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|