0
点赞
收藏
分享

微信扫一扫

SFP+高速线缆VS 10G SFP+电口模块VS SFP+光模块区别比较

代码小姐 2023-05-08 阅读 40

Redis 哨兵集群

哨兵集群的多实例 : 共同判断,能降低对主库下线的误判率

配置哨兵 :

sentinel monitor <master-name> <ip> <redis-port> <quorum> 

哨兵实例的相互发现 : 基于 pub/sub 机制 (发布 / 订阅机制)

  1. 哨兵和主库建立连接,就在主库上发布消息,如 : 发布连接信息 (IP , 端口)
  2. 并从主库上订阅消息,获得其他哨兵发布的连接信息
  3. 哨兵发布/订阅了主库的 sentinel:hello 频道,之间知道 IP , 端口

哨兵互相发现例子 :

  • 哨兵 1 把 IP , 端口发布到 sentinel:hello 频道上,哨兵 2 和 3 订阅该频道
  • 哨兵 2、3 与哨兵 1 建立网络连接

image.png

哨兵与从库建立连接 :

  1. 哨兵向主库发送 INFO 命令
  2. 主库收到该命令后,就把从库列表返回给哨兵
  3. 哨兵根据从库列表的信息,和每个从库建立连接

image.png

当主从库切换后,哨兵会把新主库信息发给客户端

客户端事件通知

每个哨兵也提供 pub/sub 机制 :

  • 客户端能从哨兵订阅消息
事件频道含义
主库下线+sdown进入主观下线状态
-sdown退出主观下线状态
+odown进入客观下线状态
-odown退出客观下线状态
从库重新配置+slave-reconf-sent哨兵发 slaveof 重新配置从库
+slave-reconf-inprog从库配置新主库, 但没同步
+slave-reconf-done从库配置新主库, 完成同步
新主库切换switch-master主库地址变化

订阅所有实例进入客观下线状态的事件 :

subscribe +odown

订阅所有事件 :

psubscribe *

客户端看到 switch-master 事件 : 主库已切换

switch-master <master name> <oldip> <oldport> <newip> <newport>

主从切换

哨兵判断 :

  1. 哨兵判断主库为主观下线后,会给其他哨兵发送 is-master-down-by-addr
  2. 其他哨兵会根据与主库的连接情况,响应 Y 或 N
  3. 当 Y数 >= quorum 时 , 就认为主库为 客观下线
  4. 哨兵发给其他哨兵要进行主从切换 , 商议后选出 Leader

image.png

Leader 的哨兵的条件 :

  • 拿半数以上的 Y
  • 拿的 Y 数 >= quorum

3 个哨兵 , quorum=2 的选举过程 :

时间哨兵1(S1)哨兵2 (S2)哨兵3 (S3)
T1给自己投1 票 Y, 向 S2, S3 发投票请求 , 表示要成为 Leader
T2给自己投1 票 Y, 向 S1, S2 发投票请求 , 表示要成为 Leader
T3收到 S3 请求 , 回 N收到 S3 请求 , 回 Y
T4收到 S3 请求 , 回 N
T51票 Y , 1票 N2票 Y , 成为 Leader
举报

相关推荐

0 条评论