zoukankan      html  css  js  c++  java
  • redis哨兵

    • 将宕机的master下线
    • 找一个slave作为master
    • '通知所有的slave连接新的master
    • 启动新的master与slave
    • 全量复制*N+部分复制*N

    1. 简介

    哨兵(sentinel)是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master

    2. 哨兵的作用

    • 监控

      不断的检查master和slave是否正常运行

      master存活检测、master与slave运行情况检测

    • 通知(提醒)

      当被监控的服务器出现问题时,向其他(哨兵间,客户端)发送通知

    • 自动故障转移

      断开master与slave连接,选取一个slave作为master,将其他slave连接到新的master,并告知客户端新的服务器地址

    注意:哨兵也是一台redis服务器,只是不提供数据服务

    ​ 通常哨兵配置数量是单数

    3. 启动哨兵模式

    1. 配置哨兵

    • 配置一拖二的主从结构

    • 配置三个哨兵(配置相同,端口不同)

      ​ 参看sentinel.conf

    • 启动哨兵

    redis-sentinel sentinel-端口号.conf
    

    在一台机器上启动一主多从,主6379,从6380,6381

    启动哨兵26379,26380,26381

    2. 实例演示

    哨兵配置文件

    [root@node1 etc]# cat sentinel-26379.conf 
    port 26379
    daemonize yes
    pidfile /var/run/redis-sentinel-26379.pid
    logfile "/usr/local/redis/log/26379.log"
    dir /usr/local/redis/data
    sentinel monitor mymaster 127.0.0.1 6379 2
    sentinel down-after-milliseconds mymaster 30000
    sentinel parallel-syncs mymaster 1
    sentinel failover-timeout mymaster 180000
    sentinel deny-scripts-reconfig yes
    [root@node1 etc]# cat sentinel-26380.conf 
    port 26380
    daemonize yes
    pidfile /var/run/redis-sentinel-26380.pid
    logfile "/usr/local/redis/log/26380.log"
    dir /usr/local/redis/data
    sentinel monitor mymaster 127.0.0.1 6379 2
    sentinel down-after-milliseconds mymaster 30000
    sentinel parallel-syncs mymaster 1
    sentinel failover-timeout mymaster 180000
    sentinel deny-scripts-reconfig yes
    [root@node1 etc]# cat sentinel-26381.conf 
    port 26381
    daemonize yes
    pidfile /var/run/redis-sentinel-26381.pid
    logfile "/usr/local/redis/log/26381.log"
    dir /usr/local/redis/data
    sentinel monitor mymaster 127.0.0.1 6379 2
    sentinel down-after-milliseconds mymaster 30000
    sentinel parallel-syncs mymaster 1
    sentinel failover-timeout mymaster 180000
    sentinel deny-scripts-reconfig yes
    [root@node1 etc]# 
    

    启动redis一主两从

    启动哨兵

    此时会发现redis-sentinel的配置文件中会增加对redis主从信息

    测试哨兵是否可以起作用

    杀死redis6379主服务器进程,看能否选举出新的master

    可以看到6380服务器已经变成主服务器,同时哨兵配置文件中的redis master信息也发生修改

    4. 工作原理

    • 哨兵在进行主从切换过程中经历三个阶段
      • 监控
      • 通知
      • 故障转移

    1. 阶段一:监控阶段

    • 用于同步各个节点的状态信息

      • 获取各个sentinel的状态(是否在线)
      • 获取master的状态
        • master属性
          • runid
          • role:master
      • 各个slave的详细信息
      • 获取所有slave的状态(根据master中的slave信息)
        • slave属性
          • runid
          • role: slave
          • master_host、master_port
          • offset
          • ......



  • 相关阅读:
    Scalaz(15)- Monad:依赖注入-Reader besides Cake
    Scalaz(14)- Monad:函数组合-Kleisli to Reader
    Scalaz(13)- Monad:Writer
    Scalaz(12)- Monad:再述述flatMap,顺便了解MonadPlus
    Scalaz(11)- Monad:你存在的意义
    Scalaz(10)- Monad:就是一种函数式编程模式-a design pattern
    Scalaz(9)- typeclass:checking instance abiding the laws
    Scalaz(8)- typeclass:Monoid and Foldable
    Scalaz(7)- typeclass:Applicative-idomatic function application
    Scalaz(6)- typeclass:Functor-just map
  • 原文地址:https://www.cnblogs.com/ifme/p/12330341.html
Copyright © 2011-2022 走看看