- 1、哨兵的配置文件
- 2、部署三台redis
- 3、启动哨兵进程
- 4、检查哨兵状态
sentinel.conf,这个文件就在redis目录下:
每一个哨兵都可以去监控多个maser-slaves的主从架构,相同的一套哨兵集群,就可以去监控不同的多个redis主从集群。可以给每个redis主从集群分配一个逻辑的名称,如下面的mymaster和resque。下面其实就是可以监听两个集群的master。
sentinel monitor mymaster 127.0.0.1 6379 2sentinel down-after-milliseconds mymaster 60000sentinel failover-timeout mymaster 180000sentinel parallel-syncs mymaster 1sentinel monitor resque 192.168.1.3 6380 4sentinel down-after-milliseconds resque 10000sentinel failover-timeout resque 180000sentinel parallel-syncs resque 5
每个配置什么意思呢?
sentinel monitor mymaster 127.0.0.1 6379 2
:表示监听master节点,ip,端口,2表示的是quorumsentinel down-after-milliseconds mymaster 60000
:ping超时则认为是宕机的时间设置,超过多少毫秒跟一个redis实例断了连接,哨兵就可能认为这个redis实例挂了sentinel failover-timeout mymaster 180000
: 执行故障转移的timeout超时时长sentinel parallel-syncs mymaster 1
: parallel-syncs,新的master别切换之后,同时有多少个slave被切换到去连接新master,重新做同步,数字越低,花费的时间越多.假设你的redis是1个master,4个slave,然后master宕机了,4个slave中有1个切换成了master,剩下3个slave就要挂到新的master上面去.
这个时候,如果parallel-syncs是1,那么3个slave,一个一个地挂接到新的master上面去,1个挂接完,而且从新的master sync完数据之后,再挂接下一个.如果parallel-sy��ϼ,��ϼncs是3,那么一次性就会把所有slave挂接到新的master上去.
上面的三个配置,都是针对某个监控的master配置的,给其指定上面分配的名称即可。
这是最小的哨兵配置,如果发生了master-slave故障转移,或者新的哨兵进程加入哨兵集群,那么哨兵会自动更新自己的配置文件。
quorum的解释如下:
- (1)至少多少个哨兵要一致同意,master进程挂掉了,或者slave进程挂掉了,或者要启动一个故障转移操作
- (2)quorum是用来识别故障的,真正执行故障转移的时候,还是要在哨兵集群执行选举,选举一个哨兵进程出来执行故障转移操作
- (3)假设有5个哨兵,quorum设置了2,那么如果5个哨兵中的2个都认为master挂掉了; 2个哨兵中的一个就会做一个选举,选举一个哨兵出来,执行故障转移; 如果5个哨兵中有3个哨兵都是运行的,那么故障转移就会被允许执行
我们之前已经在两台机器上部署了redis,现在我们就需要再部署一台。只要安装redis就可以了,不需要去部署redis实例的启动。
安装tcl:
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gztar -xzvf tcl8.6.1-src.tar.gzcd /usr/local/tcl8.6.1/unix/./configure make && make install
安装redis,使用redis-3.2.8.tar.gz(截止2017年4月的最新稳定版)
tar -zxvf redis-3.2.8.tar.gzcd redis-3.2.8make && make testmake install
2、正式的配置
下面是三台机器都需要配置:
哨兵默认用26379端口,默认不能跟其他机器在指定端口连通,只能在本地访问,所以我们需要另外设置端口,以及bind机器(虚拟机)ip。
首先需要创建文件,主要是放sentinal
mkdir /etc/sentinel# (这行是注释:主要是创建sentinel pid文件存放内存)mkdir -p /var/sentinel/5000
修改conf文件:
/etc/sentinel/5000.conf
port 5000bind 192.168.8.181# (这行是注释:主要是指定sentinel pid文件存放内存)dir /var/sentinel/5000# (这行是注释:主要是指定哨兵监控的master的地址,ip,和quorum)sentinel monitor mymaster 192.168.8.181 6379 2sentinel down-after-milliseconds mymaster 30000sentinel failover-timeout mymaster 60000sentinel parallel-syncs mymaster 1
改完之后我们放到/etc/sentinal
下,注意bind的地址是本机地址,每个机器不同,但是monitor的地址却是相同的。
在三台机器上,分别启动三个哨兵进程,组成一个集群,观察一下日志的输出。启动的时候我们只需要redis-sentinel
+指定文件即可。
redis-sentinel /etc/sentinal/5000.confredis-server /etc/sentinal/5000.conf --sentinel
日志里会显示出来,每个哨兵都能去监控到对应的redis master,并能够自动发现对应的slave,哨兵之间,互相会自动进行发现,用的就是之前说的pub/sub,消息发布和订阅channel消息系统和机制。
我们看启动的日志:
第一个哨兵:
第二个哨兵:
第三个哨兵:
注意!!!
要是之前设置了redis主节点的认证机制,那么需要在配置文件5000.conf
加上,否则哨兵一起来就会判断master为sdown
#下面这句话必须在配置监听的master后面sentinel auth-pass mymaster hadoop
还有一个值得注意的是,防火墙需要关掉,要不不同的机器之间是没有办法连接的。使用telnet 没有办法ping通。
下面是用Telnet ping其他机器
yum install -y telnettelnet 192.168.8.181 5000
如果需要关掉防火墙,我试了不少命令,但是不太行,所以用了下面的,纯属自己玩,生产不能这样干。
iptables -F
或者一劳永逸方法:
直接关闭防火墙
systemctl stop firewalld.service #停止firewallsystemctl disable firewalld.service #禁止firewall开机启动
如果是关掉之后重新启动哨兵,那么就不会再显示+slave和sentinel,因为这些已经加到配置文件中了。
再次启动:
配置文件最后面,之前的slave和sentinel已经被添加到节点中:
查看msater信息:
redis-cli -h 192.168.31.187 -p 5000sentinel master mymaster
查看slave信息:
SENTINEL slaves mymaster
查看sentinel信息:
SENTINEL sentinels mymaster
SENTINEL get-master-addr-by-name mymaster
此文章仅代表自己(本菜鸟)学习积累记录,或者学习笔记,如有侵权,请联系作者删除。人无完人,文章也一样,文笔稚嫩,在下不才,勿喷,如果有错误之处,还望指出,感激不尽~
技术之路不在一时,山高水长,纵使缓慢,驰而不息。
公众号:秦怀杂货店