zoukankan      html  css  js  c++  java
  • 24_在项目中以经典的3节点方式部署哨兵集群

    1、哨兵的配置文件

    sentinel.conf

    最小的配置

    每一个哨兵都可以去监控多个maser-slaves的主从架构

    因为可能你的公司里,为不同的项目,部署了多个master-slaves的redis主从集群

    相同的一套哨兵集群,就可以去监控不同的多个redis主从集群

    你自己给每个redis主从集群分配一个逻辑的名称

    sentinel monitor mymaster 127.0.0.1 6379 2      #哨兵监控的master。
    sentinel down-after-milliseconds mymaster 60000    #master或者slave多少时间不能使用标记为down状态。
    sentinel failover-timeout mymaster 180000        #若哨兵在配置值内未能完成故障转移操作,则任务本次故障转移失败。

    sentinel auth-pass mymaster redispass    #如果redis配置了密码,那这里必须配置认证,否则不能自动切换


    sentinel parallel-syncs mymaster 1

    sentinel monitor resque 192.168.1.3 6380 4
    sentinel down-after-milliseconds resque 10000
    sentinel failover-timeout resque 180000
    sentinel parallel-syncs resque 5

    sentinel monitor mymaster 127.0.0.1 6379

    类似这种配置,来指定对一个master的监控,给监控的master指定的一个名称,因为后面分布式集群架构里会讲解,可以配置多个master做数据拆分

    sentinel down-after-milliseconds mymaster 60000
    sentinel failover-timeout mymaster 180000
    sentinel parallel-syncs mymaster 1

    上面的三个配置,都是针对某个监控的master配置的,给其指定上面分配的名称即可

    上面这段配置,就监控了两个master node

    这是最小的哨兵配置,如果发生了master-slave故障转移,或者新的哨兵进程加入哨兵集群,那么哨兵会自动更新自己的配置文件

    sentinel monitor master-group-name hostname port quorum

    quorum的解释如下:

    (1)至少多少个哨兵要一致同意,master进程挂掉了,或者slave进程挂掉了,或者要启动一个故障转移操作
    (2)quorum是用来识别故障的,真正执行故障转移的时候,还是要在哨兵集群执行选举,选举一个哨兵进程出来执行故障转移操作
    (3)假设有5个哨兵,quorum设置了2,那么如果5个哨兵中的2个都认为master挂掉了; 2个哨兵中的一个就会做一个选举,选举一个哨兵出来,执行故障转移; 如果5个哨兵中有3个哨兵都是运行的,那么故障转移就会被允许执行

    down-after-milliseconds,超过多少毫秒跟一个redis实例断了连接,哨兵就可能认为这个redis实例挂了

    parallel-syncs,新的master别切换之后,同时有多少个slave被切换到去连接新master,重新做同步,数字越低,花费的时间越多

    假设你的redis是1个master,4个slave

    然后master宕机了,4个slave中有1个切换成了master,剩下3个slave就要挂到新的master上面去

    这个时候,如果parallel-syncs是1,那么3个slave,一个一个地挂接到新的master上面去,1个挂接完,而且从新的master sync完数据之后,再挂接下一个

    如果parallel-syncs是3,那么一次性就会把所有slave挂接到新的master上去

    failover-timeout,执行故障转移的timeout超时时长

    2、在eshop-cache03上再部署一个redis

    只要安装redis就可以了,不需要去部署redis实例的启动

    wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
    tar -xzvf tcl8.6.1-src.tar.gz
    cd /usr/local/tcl8.6.1/unix/
    ./configure
    make && make install

    使用redis-3.2.8.tar.gz(截止2017年4月的最新稳定版)
    tar -zxvf redis-3.2.8.tar.gz
    cd redis-3.2.8
    make && make test
    make install

    2、正式的配置

    哨兵默认用26379端口,默认不能跟其他机器在指定端口连通,只能在本地访问

    mkdir /etc/sentinel
    mkdir -p /var/sentinel/5000

    /etc/sentinel/5000.conf

    port 5000
    bind 192.168.31.187
    dir /var/sentinel/5000
    sentinel monitor mymaster 192.168.31.187 6379 2
    sentinel down-after-milliseconds mymaster 30000
    sentinel failover-timeout mymaster 60000
    sentinel parallel-syncs mymaster 1

    port 5000
    bind 192.168.31.19
    dir /var/sentinel/5000
    sentinel monitor mymaster 192.168.31.187 6379 2
    sentinel down-after-milliseconds mymaster 30000
    sentinel failover-timeout mymaster 60000
    sentinel parallel-syncs mymaster 1

    port 5000
    bind 192.168.31.227
    dir /var/sentinel/5000
    sentinel monitor mymaster 192.168.31.187 6379 2
    sentinel down-after-milliseconds mymaster 30000
    sentinel failover-timeout mymaster 60000
    sentinel parallel-syncs mymaster 1

    3、启动哨兵进程

    在eshop-cache01、eshop-cache02、eshop-cache03三台机器上,分别启动三个哨兵进程,组成一个集群,观察一下日志的输出

    redis-sentinel /etc/sentinel/5000.conf
    redis-server /etc/sentinel/5000.conf --sentinel

    日志里会显示出来,每个哨兵都能去监控到对应的redis master,并能够自动发现对应的slave

    哨兵之间,互相会自动进行发现,用的就是之前说的pub/sub,消息发布和订阅channel消息系统和机制

    4、检查哨兵状态

    redis-cli -h 192.168.31.187 -p 5000

    sentinel master mymaster
    SENTINEL slaves mymaster
    SENTINEL sentinels mymaster

    SENTINEL get-master-addr-by-name mymaster

  • 相关阅读:
    第四十七课、父子间的冲突
    第四十六课、继承中的构造与析构
    第四十五课、不同的继承方式
    第四十四课、继承中的访问级别
    第四十三课、继承的概念和意义
    第四十二课、类型转换函数(下)
    第四十一课、类型转化构造函数(上)
    暴力大法好
    HideProcess
    Hduacm—5497
  • 原文地址:https://www.cnblogs.com/hg-super-man/p/12728383.html
Copyright © 2011-2022 走看看