位于redis解压根目录下:sentinel.confweb
每个哨兵均可以去监控多个master-slaves的主从架构redis
由于生产环境通常会部署多个master-slaves的redis主从集群缓存
相同的一套哨兵集群,能够去监控不一样的多个redis主从集群。架构
你能够给每一个redis主从集群分配一个逻辑的名称:编辑器
sentinel monitor mymaster 127.0.0.1 6379 2 sentinel down-after-milliseconds mymaster 60000 sentinel failover-timeout mymaster 180000 sentinel parallel-syncs mymaster 1 复制代码
指定一个master的监控,给监控的master指定一个名称,指定监控的IP地址和端口号,2表示qronum。flex
至少须要quorum个哨兵一致赞成,master进程挂掉了,获取slave进程挂掉了,获取要启动一个故障转移操做。ui
quorum是用来识别故障的,真正执行故障转移的时候,还要在哨兵集群执行选举,选举一个哨兵进程出来进行故障转移操做。url
假若有5个哨兵,quorum设置了2,那么5个哨兵中的2个都认为master挂掉了,master才会认为是odown了。就会从2个哨兵中的选举一个哨兵,来执行故障转移。若是5个哨兵中有3个哨兵都是运行的,那么故障转移就会别容许执行。spa
超过多少毫秒跟一个redis实例端口了链接,哨兵就可能认为redis实例挂掉了。.net
执行故障转移的timeout的超时时长,若是限定时长内没有完成故障转移,就会认为执行故障转移失败,就从剩下的哨兵选择一个哨兵重新执行故障转移。
新的master切换以后,容许同时有多少个slave被切换到去链接新的master,从新作同步,数字越低,花费的事件就越高。
假如你的redis是1个master,4个slave
而后你的master宕机了,4个salve中有一个切换成了master,剩下3个slave就要挂到新的master上去。
这个时候,若是parallel-syncs是1,那么3个slave,会一个接一个挂到新的master上面去,一个挂完后,并且重新的master sync完数据以后,再挂接下一个。
若是parallel-syncs是3,那么一次性就会把全部的slave挂接到新的master上去。
eshop-cache01,eshop-cache02,eshop-cache03上安装redis,并启动。
# 安装tcl
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 tar -zxvf redis-3.2.8.tar.gz cd redis-3.2.8 make && make test make install 复制代码
哨兵默认是用26279端口,默认不能跟其余集群在指定端口联通,只能在本地访问
mkdir /etc/sentinal
mkdir -p /var/sentinal/5000/log # 编辑etc/sentinel/5000.conf cp sentinal.conf 5000.conf vi 5000.conf 复制代码
# redis绑定端口
port 5000 # redis绑定ip bind 192.168.31.187 # redis绑定缓存存储目录 dir /var/sentinal/5000 # 哨兵绑定端口,ip,设置quorum sentinel monitor mymaster 192.168.0.102 6379 2 # 哨兵链接 master 超时时间 sentinel down-after-milliseconds mymaster 30000 # 哨兵设置 哨兵故障转移超时时间 sentinel failover-timeout mymaster 60000 # 哨兵设置 运行同时挂载到新master的slave数量 sentinel parallel-syncs mymaster 1 复制代码
eshop-cache01,eshop-cache02,eshop-cache03三个节点启动sentinal,并查看日志。
redis-sentinel /etc/sentinal/5000.conf redis-server /etc/sentinal/5000.conf --sentinal 复制代码
日志会显示出来,每一个哨兵去监控对应的redis master,而且可以自动发现对应的slave。
哨兵之间,互相也会自动进行发现,用的就是pub/sub消息发布和订阅信息系统和机制
SENTINEL get-master-addr-by-name mymaster
复制代码
redis-cli -h 192.168.31.187 -p 5000
复制代码
info sentinel
复制代码
从图片中能够看到:redis的master节点有两个从节点,sentinel有三个节点。
sentinel master mymaster
复制代码
SENTINEL slaves mymaster
复制代码
SENTINEL sentinels mymaster
复制代码
SENTINEL get-master-addr-by-name mymaster
复制代码
本文使用 mdnice 排版