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

   sentinel节点会定期监控主节点,所以从配置上必然也会有所体现,本配置说明sentinel节点要监控的是一个名字叫做,ip地址和端口号为的主节点。代表要判定主节点最终不可达所需要的票数,但实际上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配置为2,代表至少2个Sentinel节点认为主节点不可达,那么这个不可达的判定才是客观的。对于设置的越小,那么达到下线的条件越宽松,反之越严格,一般建议将其设置为sentinel节点的一半加1。