zoukankan      html  css  js  c++  java
  • Redis 哨兵机制和实现

    在前面的1主2从架构中Redis 主从架构实践

      CentOS 64-bit-basic  192.168.127.130    redis(主)

     CentOS 64-bit    192.168.127.128  redis(从) 

     CentOS 64-bit_2   192.168.127.129    redis(从)

    如果Redis主挂了,两个redis从不能进行写操作,将导致redis不可用。Redis从也不会自动转为Redis主。这时候哨兵机制就很好的解决了这个问题。

    一、哨兵机制原理

      哨兵模式(Sentinel): 哨兵会监控所有的redis主和redis从,当redis主挂了之后,会在redis从当中选择一个redis从作为redis主。新的redis主和redis从重新组成redis主从模式。

    往往一个哨兵是不够的,通常是一个哨兵集群。

    这样这能实现了Redis的高可用。

    二、Redis哨兵机制实践

    1、CentOS 64-bit-basic  192.168.127.130 redis(主) 配置sentinel.conf

    cd  /home/tools/redis-6.0.5

    cp sentinel.conf /usr/local/redis/

    cd /usr/local/redis/

    vi sentinel.conf

    1)  protected-mode no

    2) 哨兵后台运行

    daemonize yes 

    3) 配置日志文件

    logfile /usr/local/redis/sentinel/redis-sentinel.log

    4)哨兵工作路径

    dir /usr/local/redis/sentinel

    5) 配置哨兵监控

    sentinel monitor larry-master 192.168.127.130 6379 2

    larry-master 是redis主的昵称

    2 代表哨兵的数量

    6) 配置密码

    sentinel auth -pass larry-master larry123456

    7) 设置判定master失效的实践

    sentinel down-after-milliseconds larry-master 10000

    单位毫秒,也就是如果mater失效时间超过10秒,则认为master失效了。

    8)设置并行同步的数量

    sentinel parallel-syncs larry-master  1

    假设有5个slavel,如果master挂了,其中1个slave成功master,那么新的master要与其它4个slave进行同步,这4个slave是一个接着一个进行同步的。

    如果设置为2,则是2个接着2个进行同步。

    9)主备切换的超时时间设置。默认3分钟

    sentinel failover-timeout larry-master 180000 

    master主挂了,哨兵进行故障转移。如果超过3分钟哨兵还没处理好,由于哨兵也是集群,则由其它哨兵处理。

    启动哨兵

    cd /home/tools/redis-6.0.5/src/

    cp redis-sentinel  /usr/local/bin/

    cd /usr/local/redis/

    redis-sentinel sentinel.conf

    查看是否启动

     说明哨兵已经启动了

    2、 同理CentOS 64-bit 192.168.127.128 redis(从) 和redis主配置一致,并启动redis-sentinel

    3、 同理CentOS 64-bit_2 192.168.127.129  redis(从)和redis主配置一致,并启动redis-sentinel

    4、测试哨兵模式

    此时redis1主2从以及redis哨兵已经启动,现在停掉redis主

    1) CentOS 64-bit-basic  192.168.127.130 redis(主)

     2) CentOS 64-bit 192.168.127.128 redis(从) 

     3) CentOS 64-bit_2 192.168.127.129  redis(从)

     4) 停止redis主

    192.168.127.130(Redis主)服务器上查看日志

    cd /usr/local/redis/sentinel

      tail -f redis-sentinel.log

     从日志里可以看出  192.168.127.130所在的redis主已经停掉了,然后vote-for-leader 进行投票选择master

    130挂了之后,129被选为master,128是slave, 129和128构成redis1主1从。

    在129的redis-cli查看,128是slave

     在128的redis-cli查看,129是master

     然后关闭129,128被选为master。 开启129和130。最后是128是master,其它是slave

    此时129任然是master, 130是slave。

    注意: 由于redis主从配置时,刚开始redis主为130,后来它变为slave,未设置 masterauth larry123456,将导致最后同步master数据。解决方法: 加上masterauth。

  • 相关阅读:
    异步编程系列第04章 编写Async方法
    异步编程系列第03章 自己写异步代码
    异步编程系列第02章 你有什么理由使用Async异步编程
    异步编程系列第01章 Async异步编程简介
    初探asp.net异步编程之await
    Sql Server 覆盖索引
    把cookie以json形式返回,用js来set cookie.(解决手机浏览器未知情况下获取不到cookie)
    redis+cookies实现session机制(解决 手机浏览器不自动回传cookies导致session不可用问题)
    把阅读当作一种人生习惯来培养
    SAS中的剔除空格函数
  • 原文地址:https://www.cnblogs.com/linlf03/p/13235858.html
Copyright © 2011-2022 走看看