首页 » 网站建设 » php尖兵技巧_Redis哨兵机制详解

php尖兵技巧_Redis哨兵机制详解

访客 2024-11-21 0

扫一扫用手机浏览

文章目录 [+]

一旦主节点宕机,写做事无法利用,就须要手动去切换,重新选取主节点,手动设置主从关系。

那么如何办理呢?如果我们有一个监控程序能够监控各个机器的状态及时作出调度,将手动的操作变成自动的。
Sentinel的涌现便是为理解决这个问题。

php尖兵技巧_Redis哨兵机制详解

哨兵机制的事理及实现

Redis Sentinel

php尖兵技巧_Redis哨兵机制详解
(图片来自网络侵删)

Redis Sentinel 是一个分布式架构,个中包含多少个 Sentinel 节点和 Redis 数据节点,每个 Sentinel 节点会对数据节点和别的 Sentinel 节点进行监控,当它创造节点不可达时,会对节点做下线标识。
如果被标识的是主节点,它还会和其他 Sentinel 节点进行“协商”,昔时夜多数 Sentinel 节点都认为主节点不可达时,它们会选举出一个 Sentinel 节点来完成自动故障转移的事情,同时会将这个变革实时关照给 Redis 运用方。
全体过程完备是自动的,不须要人工来参与,以是这套方案很有效地办理了 Redis 的高可用问题。

如图所示:

基本的故障转移流程

1)主节点涌现故障,此时两个从节点与主节点失落去连接,主从复制失落败。

2)每个 Sentinel 节点通过定期监控创造主节点涌现了故障

3)多个 Sentinel 节点对主节点的故障达成同等会选举出个中一个节点作为领导者卖力故障转移。

4)Sentinel 领导者节点实行了故障转移,全体过程基本是跟我们手动调度同等的,只不过是自动化完成的。

5)故障转移后全体 Redis Sentinel 的构造,重新选举了新的主节点。

实例

利用docker创建如下redis容器,这里可以参考[进阶篇]docker编排PHP开拓坏境、Linux docker-compose 实战学习下容器技能

redis-sentinel1 172.10.0.9 22530 -> 22530 sentinelredis-sentinel2 172.10.0.10 22531 -> 6379 sentinelredis-sentinel3 172.10.0.11 22532 -> 6379 sentinelredis-master2 172.10.0.5 6383 -> 6379 Masterredis-slave2 172.10.0.6 6384 -> 6379 Slaveredis-slave3 172.10.0.7 6385 -> 6379 Slave

配置

Sentinel 的核心配置

sentinel monitor mymaster 127.0.0.1 7000 2

监控的主节点的名字、IP 和端口,末了一个2的意思是有几台 Sentinel 创造有问题,就会发生故障转移,例如 配置为2,代表至少有2个 Sentinel 节点认为主节点不可达,那么这个不可达的剖断才是客不雅观的。
对付设置的越小,那么达到下线的条件越宽松,反之越严格。
一样平常建议将其设置为 Sentinel 节点的一半加1。

sentinel down-after-millseconds mymaster 30000

这个是超时的韶光(单位为毫秒)。
打个比方,当你去 ping 一个机器的时候,多永劫光后仍 ping 不通,那么就认为它是有问题。

sentinel parallel-syncs mymaster 1

当 Sentinel 节点凑集对主节点故障剖断达成同等时,Sentinel 领导者节点会做故障转移操作,选出新的主节点,原来的从节点会向新的主节点发起复制操作,parallel-syncs 便是用来限定在一次故障转移之后,每次向新的主节点发起复制操作的从节点个数,指出 Sentinel 属于并发还是串行。
1代表每次只能复制一个,可以减轻 Master 的压力。

sentinel auth-pass <master-name> <password>

如果 Sentinel 监控的主节点配置了密码,sentinel auth-pass 配置通过添加主节点的密码,防止 Sentinel 节点对主节点无法监控。

sentinel failover-timeout mymaster 180000

表示故障转移的韶光。

技巧

1)Sentinel 节点不应该支配在一台物理“机器”上。

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

2)支配至少三个且奇数个的 Sentinel 节点。

3个以上是通过增加 Sentinel 节点的个数提高对付故障剖断的准确性,由于领导者选举须要至少一半加1个节点,奇数个节点可以在知足该条件的根本上节省一个节点。

转自:https://segmentfault.com/a/1190000018278099

相关文章

微信第三方登录便捷与安全的完美融合

社交平台已成为人们日常生活中不可或缺的一部分。微信作为我国最受欢迎的社交软件之一,拥有庞大的用户群体。为了方便用户在不同平台间切换...

网站建设 2025-02-18 阅读0 评论0

广东高速代码表解码高速公路管理智慧

高速公路作为国家交通动脉,连接着城市与城市,承载着巨大的物流和人流。广东作为我国经济大省,高速公路网络密布,交通流量巨大。为了更好...

网站建设 2025-02-18 阅读0 评论0