zoukankan      html  css  js  c++  java
  • Redis Sentinel 配置文件

    基础参考:https://www.cnblogs.com/wang-li/p/9955303.html

    配置文件讲解

    1.sentinel monitor 

    # sentinel monitor <master-name> <ip> <redis-port> <quorum>
    
    sentinel 监视主服务器的信息,master-name:是主服务器名称 ip:是主服务器ip redis-port:是主服务器端口 quorum:主服务器失效需要多少个sentinel同意,如果同意的sentinel不达标,则不会进行redis 故障迁移
    
    默认配置:
    sentinel monitor mymaster 127.0.0.1 6379 2

    2.sentinel down-after-milliseconds

    # sentinel down-after-milliseconds <master-name> <milliseconds>
    
    SDOWN:如果服务器在给定的毫秒数之内,没有返回sentinel发送的PING命令的回复,或则返回一个错误,那么sentinel将这个服务器标记为主观下线(subjectively down,简称SDOWN)
    
    ODOWN:只有在数量足够多的sentinel都将一个服务器标记为主观下线后,服务器才会被标记为客观下线(objectively down),这时,自动故障迁移才会执行
    
    默认配置:
    sentinel down-after-milliseconds mymaster 30000

    SDOWN log如下:

    ==> log-by-sentinel-6380.log <==
    14980:X 14 Nov 17:20:18.790 # +sdown master mymaster 127.0.0.1 6380
    
    ==> log-by-sentinel-6379.log <==
    14972:X 14 Nov 17:20:18.812 # +sdown master mymaster 127.0.0.1 6380
    
    ==> log-by-sentinel-6381.log <==
    14986:X 14 Nov 17:20:18.838 # +sdown master mymaster 127.0.0.1 6380

    通过上面的log,可以发现,此3个log都是主观下线SDOWN

    2.1关于主观下线和客观下线 

    2.1.1主观下线: 
    是指单个sentinel实例对单个服务器做出SDOWN的判断
    2.1.2客观下线: 
    是指多个sentinel实例对单个服务器做出的SDOWN判断,并且通过sentinel is-master-down-by-addr命令交流后,得出的服务器下线判断

    ODOWN log如下: 

    ==> log-by-sentinel-6379.log <==
    14972:X 14 Nov 17:20:18.867 # +odown master mymaster 127.0.0.1 6380 #quorum 2/2
    14972:X 14 Nov 17:20:18.867 # +new-epoch 3
    14972:X 14 Nov 17:20:18.867 # +try-failover master mymaster 127.0.0.1 6380
    14972:X 14 Nov 17:20:18.880 # +vote-for-leader b2affafd56391a794677a2a54cfa0893c31cd11c 3

    3.sentinel parallel-syncs 

    # sentinel parallel-syncs <master-name> <numslaves>
    
    在执行故障转移时,可以同时有多少从服务器对新的主服务器进行数据同步,此值越小,同步时间越长,此值越大,同步时间越小,但是所耗费的网路资源也就越多
    
    默认配置:
    sentinel parallel-syncs mymaster 1

    4.sentinel auth-pass

    # sentinel auth-pass <master-name> <password>
    
    用于设置主库和从库的master-name 和密码,不过需要关注的点是,主库和从库应该设置为一致的,否则会有问题

    5.sentinel notification-script

    # sentinel notification-script <master-name> <script-path>
    
    用于设置在进行故障转移后服务器发送的脚本
    
    例如:自己写一个简单的python脚本,接收到的信息如下:

    6.sentinel client-reconfig-script 

    # sentinel client-reconfig-script <master-name> <script-path>
    
    用于设置在进行故障转移后客户端发送的脚本

    关于redis sentinel的客户端

    如果Redis sentinel在进行故障转移后,并没有将master的信息通知到客户端,那么故障转移将毫无意义

    Python来实现 

    代码如下

    # cat redis_sentinel_client.py 
    #!/usr/bin/env python3
    
    import redis
    import redis.sentinel
    
    sentinel_list = redis.sentinel.Sentinel([
    ('127.0.0.1',26379),
    ('127.0.0.1',26380),
    ('127.0.0.1',26381),
    ])
    
    #获取主服务器信息
    get_master_info = sentinel_list.discover_master('mymaster')
    print (get_master_info)
    
    #获取从服务器信息
    get_slave_info = sentinel_list.discover_slaves('mymaster')
    print (get_slave_info)
    
    
    #主服务器进行写入
    write_redis_master = sentinel_list.master_for('mymaster',password='123456',db=0)
    print ("主库端口: %s" %(write_redis_master.info()['tcp_port']))
    if write_redis_master.set('1','test123'):
        #从服务器进行读取
        read_redis_slaves = sentinel_list.slave_for('mymaster',password='123456',db=0)
        print ("从库端口:%s" %(read_redis_slaves.info()['tcp_port']))
        print (read_redis_slaves.get('1'))
    # 

    执行结果如下

    # ./redis_sentinel_client.py 
    ('127.0.0.1', 6380)
    [('127.0.0.1', 6379), ('127.0.0.1', 6381)]
    主库端口: 6380
    从库端口:6381
    b'test123'
    # ./redis_sentinel_client.py 
    ('127.0.0.1', 6380)
    [('127.0.0.1', 6379), ('127.0.0.1', 6381)]
    主库端口: 6380
    从库端口:6379
    b'test123'
    # 
    欢迎转发! 请保留源地址: https://www.cnblogs.com/NoneID
  • 相关阅读:
    sql in not in 案例用 exists not exists 代替
    根据算法规则进行匹配相似车辆
    随机生成临时车牌号
    无法加载 DLL“ParkCOM.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E) 终结者
    c# 除掉前三个字符,剩下的4个字符全为数字方为特殊车辆
    UI设计文本框解决Placeholder的在IE10 以下 IE 9 IE8 IE 7 的兼容问题
    EF框架 对字段属性为NULL的空值处理 类型前面加上?保证EF列表读取显示数据不会报异常
    boost::property_tree读取解析.xml文件
    C++ URLencode library
    http与中文编码传输
  • 原文地址:https://www.cnblogs.com/NoneID/p/9972018.html
Copyright © 2011-2022 走看看