Redis哨兵工作原理与部署

工作流程

1、监控阶段

  • 哨兵先连接master服务器,并获取、保存master的详细信息(包括master、slave以及sentinel的信息),连接会保持
  • 哨兵获取了master的信息后,又与master的slaves进行连接和信息的获取,连接同样会保持
  • master的各个哨兵互相建立连接,同步信息

2、通知阶段

​ 哨兵会不断获取它监听的主从服务器的状态,并与其他哨兵共享这些信息

3、故障转移阶段

  • 哨兵监听到master宕机,将master状态标记为SRI_S_DOWN(主观下线),将信息传递给其他哨兵

  • 其他哨兵收到这个消息后,判断master是否宕机

  • 超过一定数量(配置文件中定义这个数)哨兵认为服务器宕机,则将服务器状态标记为SRI_O_DOWN(客观下线),并重新选举主服务器

  • 哨兵投票选举出进行重新配置主服务器的哨兵

  • 进行配置的哨兵挑选出新的master

    选择原则:

    • 在线的
    • 响应快的
    • 与原master连接密切的
    • 优先级高的

    发送指令:

    • 向新master发送:slaveof no noe
    • 向其他slave发送:slave of 新master IP 端口

部署

  • 哨兵配置文件:sentinel.conf

    • 复制文件:cat sentinel.conf | grep -v "#" |grep -v "^$" > ./conf/sentinel-26379.conf
    • 配置信息:
      • port 26379 #哨兵端口
      • dir /tmp
      • sentinel monitor mymaster 127.0.0.1 6379 2 #哨兵主机名 主机IP 主机端口,2表示多少哨兵认为主机宕机,则确认主机宕机
      • sentinel down-after-milliseconds mymaster 30000 #连接30秒后无响应,则认为服务器宕机
      • sentinel parallel-syncs mymaster 1 #值越小,压力越小,速度越慢
      • sentinel failover-timeout mymaster 180000 #多长时间未完成同步,则认为服务器宕机
  • 启动命令:redis-sentinel 配置文件

    • 启动主从服务器以及其他哨兵后,哨兵获取master、slave以及其他sentinel信息,哨兵配置文件如下

      image

    • 关闭主服务器后,哨兵重新选出主服务器,下图选出端口号6381的slave作为其他salve的新的master
      image

    • 配置文件变化

image

posted @ 2021-06-12 15:32  杜zy  阅读(192)  评论(0)    收藏  举报