基于Centos7系统搭建Redis集群之哨兵机制(新手教程)
昨天将主从复制写了下,但是没有写哨兵机制,所以今天就给填补下;
哨兵(sentinel)在系统中主要有以下三个任务:
监控(monitoring):哨兵(sentinel)会不断的检查你的Mater和Slave是否运行正常。
提醒(Notification):当被监控的某个redis出现问题时,哨兵(sentinel)可以通过API向管理员或者其他应用程序发送通知;
自动故障迁移(automatic failover)当一个master不能正常工作时,哨兵(sentinel)会开始一次自动故障迁移操作,他会将失效master的其中一个slave升级为新的master,并让实现的Master的其他slave改为复制新的master,当客户端试图连接失效的master时,集群也会向客户端返回新的master地址,使得集群可以使用master代替失效的master;
哨兵(sentinel)是一个分布式系统,你可以在一个架构中运行多个哨兵(sentinel)进程
进程使用流言协议(gossipprotocols)来接收关于master是否下线的消息,并使用投票协议(agreement protocols)来决定是否执行自动故障迁移,以及选择哪个slave作为新的master;
每个哨兵(sentinel)会向其他哨兵(sentinel)、master、slave定时发送消息,以确认对方是否还活着,如果对方在指定的时间(可配置)内未回应,则在暂时认为对方已挂;若多个sentinel都报某一个master没有响应,系统才认为该master彻底死亡;
其实哨兵也是运行在特殊模式下的Redis服务器;
在还没有写之前,我想先强调下:
哨兵机制会使用权重来选举新的主服务器,然后将数据写到配置文件中,所以当你原来的主服务器宕机后,在重启后后他就是从服务器了
哨兵机制是redis自带的服务,也就是说redis既可以用来做redis服务器,又可以用来做哨兵机制,(是不是感觉有种雌雄同体的感觉,哈哈哈~~~~~~)
其实哨兵机制没有想的那么难,只不过很听起来高大上,(此时你可以把它想成娶了漂亮媳妇的富二代,不是因为他很帅很有成就,只不过他爹很耐坑,你要是有个很耐坑的爹,说不定你也可以=V=)
首先我们进入到redis文件夹中,将sentinel.conf拷贝到你redis.conf的文件夹中,我的redis.conf放到了 /etc/redis/ 文件夹中,所以你要适量的更改下:命令如下:
cp sentinel.conf /etc/redis/ # 将redis.conf文件拷贝到etc/redis/文件夹下
然后就是修改sentinel.conf配置文件
vi sentinel.conf
然后主要是修改下面几条配置
sentinel monitor mymaster 192.168.50.132 6379 1 # 添加监控的主服务器
sentinel down-after-milliseconds mymaster 300 # 默认的刷新时间是30000微秒,现在改成300微秒
sentinel parallel-syncs mymaster 2 #设置有效的从服务器个数,我的有两个就设置两个
sentinel auth-pass mymaster 123456 #设置主服务器的密码,如果你没有设置你就可以不进行设置,建议一个集群的主从服务器的密码设置成一样的,避免连接不上
当配置完这些,就可以启动我们的哨兵了
启动命令如下:
/home/soft/redis-4-0-9/redis-server /etc/redis/sentinel.conf --sentinel &
# 启动哨兵,需要启动redis-server和sentinel.conf两个文件, --sentinel & 不要省略不然启动不起来
为了方便启动,我还是建议将上面的命令写到以 .sh 后缀结束的脚本中,每次只用启动脚本就可以了!!!
vi sentinel_start.sh # 使用vi创建整个文件
#在文件中写上刚才的代码
/home/soft/redis-4-0-9/redis-server /etc/redis/sentinel.conf --sentinel &
然后按 “ Esc ” ---> Shift+:---->输入“wq”就可以了
下回启动sentinel时,只用输入下面的命令就可以了;
sh sentinel_start.sh
好了,配置就到这里,下面就是我创建的
哨兵