zoukankan      html  css  js  c++  java
  • Redis-Sentinel哨兵

     

    Redis-Sentinel是redis官方推荐的高可用性解决方案,
    当用redis作master-slave的高可用时,如果master本身宕机,redis本身或者客户端都没有实现主从切换的功能。
    而redis-sentinel就是一个独立运行的进程,用于监控多个master-slave集群,
    自动发现master宕机,进行自动切换slave > master。
    redis的一个进程,但是不存储数据,只是监控redis

     

    sentinel主要功能如下:

    • 不时的监控redis是否良好运行,如果节点不可达就会对节点进行下线标识
    • 如果被标识的是主节点,sentinel就会和其他的sentinel节点“协商”,如果其他节点也人为主节点不可达,就会选举一个sentinel节点来完成自动故障转义
    • 在master-slave进行切换后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改变,即master_redis.conf中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换

     

     

    准备:

    三个redis实例,一主两从

    三个redis-sentinel进程

     

    三个redis的实例配置文件分别为

    redis-6379.conf

    redis-6380.conf

    redis-6381.conf

     

    1.配置三个实例的配置文件,实现一主二从

    # redis-6379.conf

    port 6379 # 端口 daemonize yes # 后台模式 logfile "6379.log" # 日志文件夹 dbfilename "dump-6379.rdb" # rdb持久化 dir "/var/redis/data/" # 存放数据的文件夹
    # redis-6380.conf
    
    port 6380
    daemonize yes
    logfile "6380.log"
    dbfilename "dump-6380.rdb"
    dir "/var/redis/data/"
    slaveof 127.0.0.1 6379
    # redis-6381.conf
    
    port 6381
    daemonize yes
    logfile "6381.log"
    dbfilename "dump-6381.rdb"
    dir "/var/redis/data/"
    slaveof 127.0.0.1 6379

     

    2.启动三个实例

    [root@localhost conf]# redis-server redis-6379.conf 
    [root@localhost conf]# redis-server redis-6380.conf 
    [root@localhost conf]# redis-server redis-6381.conf 

     

     3.验证主从关系

     

    三个哨兵配置文件为:

    redis-26379.conf

    redis-26380.conf

    redis-26381.conf

     

    4.设置三个哨兵的配置文件

    # redis-26379.conf
    
    port 26379                           # 端口
    dir /var/redis/data/               # 数据存储的目录
    logfile "26379.log"                #  哨兵日志名称
    
    
    # 当前Sentinel节点监控 127.0.0.1:6379 这个主节点
    # 2代表判断主节点失败至少需要2个Sentinel节点节点同意
    # mymaster是主节点的别名
    sentinel monitor mymaster  127.0.0.1 6379 2
    
    # 每个Sentinel节点都要定期PING命令来判断Redis数据节点和其余Sentinel节点是否可达,如果超过30000毫秒30s且没有回复,则判定不可达
    sentinel down-after-milliseconds mymaster 30000
    
    # 当Sentinel节点集合对主节点故障判定达成一致时,Sentinel领导者节点会做故障转移操作,选出新的主节点,
    # 原来的从节点会向新的主节点发起复制操作,限制每次向新的主节点发起复制操作的从节点个数为1
    sentinel parallel-syncs mymaster 1
    
    # 故障转移超时时间为180000毫秒
    sentinel failover-timeout mymaster 180000
    
    # 后台运行
    daemonize yes 
        
    # redis-26380.conf
    
    port 26380  
    dir /var/redis/data/
    logfile "26380.log"
    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
    daemonize yes 
    # redis-26381.conf
    
    port 26381  
    dir /var/redis/data/
    logfile "26381.log"
    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
    daemonize yes 

     

    5.启动三个哨兵实例

    [root@localhost conf]# redis-sentinel redis-26379.conf 
    [root@localhost conf]# redis-sentinel redis-26380.conf 
    [root@localhost conf]# redis-sentinel redis-26381.conf 

     

    6.查看进程

     

     7.检测哨兵是否正常通信

    [root@localhost conf]# redis-cli -p 26379 info sentinel

     

     实验:结束主库进程,检测是否能自动切换主从模式

     

    1.杀掉主库进程

     

    2.查看是否已经切换

     

    3.查看配置文件

     

     4.启动redis-6379

    自动变更为从库

     

     

     

  • 相关阅读:
    (copy) Shell Script to Check Linux System Health
    HTML5 笔记1
    成年后更想要人懂
    端午不过节
    兜兜转转还是往前了一小步
    五月下旬这些天
    立陶宛话剧观后感
    杯子
    你学过的东西总会在某个时候用到
    初识理财记
  • 原文地址:https://www.cnblogs.com/st-st/p/10276921.html
Copyright © 2011-2022 走看看