Redis Sentinel部署规则和API使用

 

如何监控多个主节点


Redis Sentinel可以同时监控多个主节点, 具体拓扑图类似于图。配置方法也比较简单, 只需要指定多个masterName来区分不同的主节点即可, 例如下面的配置监控monitor master-business-1(10.10.xx.1: 6379) 和monitor master-business-2(10.10.xx.2: 6379) 两个主节点:

sentinel monitor master-business-1 10.10.xx.1 6379 2
sentinel down-after-milliseconds master-business-1 60000
sentinel failover-timeout master-business-1 180000
sentinel parallel-syncs master-business-1 1

sentinel monitor master-business-2 10.16.xx.2 6380 2
sentinel down-after-milliseconds master-business-2 10000
sentinel failover-timeout master-business-2 180000
sentinel parallel-syncs master-business-2 1

调整配置


和普通的Redis数据节点一样, Sentinel节点也支持动态地设置参数, 而且和普通的Redis数据节点一样并不是支持所有的参数, 具体使用方法如下:

sentinel set <param> <value>

有几点需要注意一下:
1) sentinel set命令只对当前Sentinel节点有效。
2) sentinel set命令如果执行成功会立即刷新配置文件, 这点和Redis普通数据节点设置配置需要执行config rewrite刷新到配置文件不同。
3) 建议所有Sentinel节点的配置尽可能一致, 这样在故障发现和转移时比较容易达成一致。
4) 表9-3中为sentinel set支持的参数, 具体可以参考源码中的sentinel.c的sentinelSetCommand函数。
5) Sentinel对外不支持config命令。
 

部署技巧


到现在有关Redis Sentinel的配置和部署方法相信读者已经基本掌握了,但在实际生产环境中都有哪些部署的技巧? 本节将总结一下。
1) Sentinel节点不应该部署在一台物理“机器”上

这里特意强调物理机是因为一台物理机做成了若干虚拟机或者现今比较
流行的容器, 它们虽然有不同的IP地址, 但实际上它们都是同一台物理机,同一台物理机意味着如果这台机器有什么硬件故障, 所有的虚拟机都会受到影响, 为了实现Sentinel节点集合真正的高可用, 请勿将Sentinel节点部署在同一台物理机器上。

2) 部署至少三个且奇数个的Sentinel节点

3个以上是通过增加Sentinel节点的个数提高对于故障判定的准确性, 因为领导者选举需要至少一半加1个节点, 奇数个节点可以在满足该条件的基础上节省一个节点。 

3) 只有一套Sentinel, 还是每个主节点配置一套Sentinel?
Sentinel节点集合可以只监控一个主节点, 也可以监控多个主节点, 也就意味着部署拓扑可能是如图两种情况。

那么在实际生产环境中更偏向于哪一种部署方式呢, 下面分别分析两种方案的优缺点。

方案一: 一套Sentinel, 很明显这种方案在一定程度上降低了维护成本, 因为只需要维护固定个数的Sentinel节点, 集中对多个Redis数据节点进行管理就可以了。 但是这同时也是它的缺点, 如果这套Sentinel节点集合出现异常, 可能会对多个Redis数据节点造成影响。 还有如果监控的Redis数据节点较多, 会造成Sentinel节点产生过多的网络连接, 也会有一定的影响。

方案二: 多套Sentinel, 显然这种方案的优点和缺点和上面是相反的,每个Redis主节点都有自己的Sentinel节点集合, 会造成资源浪费。 但是优点也很明显, 每套Redis Sentinel都是彼此隔离的。

 

Sentinel API


Sentinel节点是一个特殊的Redis节点, 它有自己专属的API,以图进行说明: Sentinel节点集合监控着两组主从模式的Redis数据节点。

1.sentinel masters
展示所有被监控的主节点状态以及相关的统计信息, 例如:

127.0.0.1:26379> sentinel masters
1) 1) "name"
2) "mymaster-2"
3) "ip"
4) "127.0.0.1"
5) "port"
6) "6382"
.........忽略............
2) 1) "name"
2) "mymaster-1"
3) "ip"
4) "127.0.0.1"
5) "port"
6) "6379"
.........忽略............

 2.sentinel master<master name>
展示指定<master name>的主节点状态以及相关的统计信息, 例如:

127.0.0.1:26379> sentinel master mymaster-1
1) "name"
2) "mymaster-1"
3) "ip"
4) "127.0.0.1"
5) "port"
6) "6379"
.........忽略............

猜你喜欢

转载自blog.csdn.net/qq_34556414/article/details/106795381