• 7.Redis之Sentinel安装与部署


    如下是部署拓扑结构:

    1.第一步先配置一个一主两备的结构:分别在备库上用salveof ip port(该配置也可以放进配置文件中)

    2.配置sentinel节点(这里配置三个节点,分别是26379/26380/26381),配置和redis配置差不多,其中一个节点的配置如下:

    port 26379
    daemonize yes
    logfile "26379.log"
    dir /data/26379/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

    1)sentinel端口号是26379
    2)sentinel monitor mymaster 127.0.0.1 6379 2 配置代表sentinel-1节点需要监控127.0.0.1:6379这个主节点,2代表判断主节点失败至少需要2个sentinel节点同意,mymaster是主节点的别名。

    3.确认sentinel是否配置上了,sentinel节点本质就是一个特殊的redis节点,所以可以通过info命令来查询它的相关信息

    [root@redis 26379]# redis-cli -p 26379 info  sentinel
    # Sentinel
    sentinel_masters:1
    sentinel_tilt:0
    sentinel_running_scripts:0
    sentinel_scripts_queue_length:0
    sentinel_simulate_failure_flags:0
    master0:name=mymaster,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3 

    上面sentinels=3说明有三个哨兵在监控redis节点,但是从上面的配置来说还要注意一下2点:

    1)生产环境中建议redis sentinel的所有节点应该分布在不同的物理机上。

    2)redis sentinel中的数据节点和普通的redis数据节点在配置上没有任何不同,只不过添加了一些sentinel节点对它们的监控。

    配置讲解:

      这里如果使用的redis源码包安装的话,那么在安装目录下面会有一个默认的sentinel.con文件,该文件里面有一些配置参数,说明如下:

    • sentinel monitor

         格式如下:sentinel monitor <master-name> <ip> <port> <quorum>

       sentinel节点会定期监控主节点,所以从配置上必然也会有所体现,本配置说明sentinel节点要监控的是一个名字叫做<master-name>,ip地址和端口号为<ip><port>的主节点。<quorum>代表要判定主节点最终不可达所需要的票数,但实际上sentinel节点会对所有节点进行监控。

       某个sentinel初始节点配置如下: 

    port 26379
    daemonize yes
    logfile "26379.log"
    dir /data/26379/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

      当所有节点启动后,配置文件的内容发生了变化,其中主要体现在三个方便:

      1)sentinel 节点自动发现从节点和其余sentinel节点

      2)去掉了默认配置,例如parallel-syncs、failover-timeout参数

      3)添加了配置纪元相关参数

      启动后的参数文件变化为:  

    [root@redis 26379]# cat redis-sentinel-26379.conf 
    port 26379
    daemonize yes
    logfile "26379.log"
    dir "/data/26379/data"
    sentinel monitor mymaster 127.0.0.1 6379 2
    
    # Generated by CONFIG REWRITE
    protected-mode no
    pidfile "/var/run/redis.pid"
    user default on nopass ~* &* +@all
    sentinel myid ab0fbd6da2b0a72051dbe3bee8ef3f02b3cc9a2a
    sentinel config-epoch mymaster 0
    sentinel leader-epoch mymaster 0
    sentinel current-epoch 0
    sentinel known-replica mymaster 127.0.0.1 6381
    sentinel known-replica mymaster 127.0.0.1 6380
    sentinel known-sentinel mymaster 127.0.0.1 26381 eadd4c9ebfa6c1fbcbfdc5d7e1eec13c80774ec5
    sentinel known-sentinel mymaster 127.0.0.1 26380 18e34da0c4ee7c3c285d1d2735d8ab12a44cd72b

    <quorum>参数用于故障发现和判定,例如将quorum配置为2,代表至少2个Sentinel节点认为主节点不可达,那么这个不可达的判定才是客观的。对于<quorum>设置的越小,那么达到下线的条件越宽松,反之越严格,一般建议将其设置为sentinel节点的一半加1。

  • 相关阅读:
    Python的可变和不可变类型
    Pycharm设置语法规范快捷键方式
    python学习0305作业
    关于jQuery对象与DOM对象
    ie6下子元素撑大父元素
    Hibernate持久层ORM框架
    基于注解的事务管理
    掌握基于AOP事务管理
    Spring事务管理
    事务保存点savepoint
  • 原文地址:https://www.cnblogs.com/zmc60/p/16041120.html
Copyright © 2020-2023  润新知