Redis Sentinel 配置文件

Posted wang-li

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
btest123
# ./redis_sentinel_client.py 
(127.0.0.1, 6380)
[(127.0.0.1, 6379), (127.0.0.1, 6381)]
主库端口: 6380
从库端口:6379
btest123
# 

 

以上是关于Redis Sentinel 配置文件的主要内容,如果未能解决你的问题,请参考以下文章

Redis高可用方案哨兵机制------ 配置文件sentinel.conf详解

Redis集群+sentinel

Redis配置文件-sentinel.conf-5.0.0

redis sentinel 配置

Redis主从部署及sentinel配置详细教程

Redis之sentinel搭建过程