当前位置:嗨网首页>书籍在线阅读

14-哨兵的部署

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

8.2.4 哨兵的部署

哨兵以独立进程的方式对一个主从系统进行监控,监控的效果好坏与否取决于哨兵的视角是否有代表性。如果一个主从系统中配置的哨兵较少,哨兵对整个系统的判断的可靠性就会降低。极端情况下,当只有一个哨兵时,哨兵本身就可能会发生单点故障。整体来讲,相对稳妥的哨兵部署方案是使得哨兵的视角尽可能地与每个节点的视角一致,即:

(1)为每个节点(无论是主数据库还是从数据库)部署一个哨兵;

(2)使每个哨兵与其对应的节点的网络环境相同或相近。

这样的部署方案可以保证哨兵的视角拥有较高的代表性和可靠性。举例一个例子:当网络分区后,如果哨兵认为某个分区是主要分区,即意味着从每个节点观察,该分区均为主分区。

同时设置 quorum 的值为 N/2 + 1 (其中N为哨兵节点数量),这样使得只有当大部分哨兵节点同意后才会进行故障恢复。

当系统中的节点较多时,考虑到每个哨兵都会和系统中的所有节点建立连接,为每个节点分配一个哨兵会产生较多连接,尤其是当进行客户端分片时使用多个哨兵节点监控多个主数据库会因为Redis不支持连接复用而产生大量冗余连接,具体可以见此issue:https://github.com/antirez/redis/issues/2257;同时如果Redis节点负载较高,会在一定程度上影响其对哨兵的回复以及与其同机的哨兵与其他节点的通信。所以配置哨兵时还需要根据实际的生产环境情况进行选择。