搭建redis一主两从+哨兵监控

搭建redis一主两从+哨兵监控

准备三台linux(Centos7)服务器如:
搭建redis一主两从+哨兵监控
分别修改两个从服务器的redis.conf
搜索配置文件:slaveof masterip masterport
slaveof 192.168.0.123 6379
slaveof 192.168.0.124 6379
使用命令登录服务器之后,使用info replication指令可以查看到该客户端连接的Redis是主还是从
./redis-server …/redis.conf
./redis-cli
info replication
如下图:
搭建redis一主两从+哨兵监控
从服务器如果是上面的结果,说明已经连接到了master服务器。
master服务器结果图:
搭建redis一主两从+哨兵监控
这样redis主从复制就已经搭建好了,在master上可以进行读写操作,在slave上只能进行读操作。
(注意:三个服务器的redis.conf配置文件
bindip注释掉,允许所有ip访问
protected-mode no 保护模式改为no
这样服务器之间才可以通讯。)

实现原理方式:

全量复制
增量复制
无磁盘复制

哨兵机制

在前面讲的master/slave模式,在一个典型的一主多从的系统中,slave在整个体系中起到了数据冗余备份和读写分离的作用。当master遇到异常终端后,需要从slave中选举一个新的master继续对外提供服务,比如在zk中通过leader选举、kafka中可以基于zk的节点实现master选举。所以在redis中也需要一种机制去实现master的决策,redis并没有提供自动master选举功能,而是需要借助一个哨兵来进行监控

什么是哨兵机制

顾名思义,哨兵的作用就是监控Redis系统的运行状况,它的功能包括两个

  1. 监控master和slave是否正常运行
  2. master出现故障时自动将slave数据库升级为master
    哨兵是一个独立的进程,使用哨兵后的架构图
    搭建redis一主两从+哨兵监控

配置实现

配置哨兵监控,可以部署在单独服务器上,也可以配置在master或slave服务器上,这个都可以,看自己的实际情况需求。
在这里:
在master服务器上实现哨兵监控,修改配置文件sentinel.conf文件,文件内容:
sentinel monitor name ip port quorum
其中name表示要监控的master的名字,这个名字是自己定义。 ip和port表示master的ip和端口号。 最后一个1表示最低通过票数,也就是说至少需要几个哨兵节点统一才可以。
port 26379 // 端口号默认就可以
sentinel monitor mymaster 192.168.0.128 6379 1
sentinel down-after-milliseconds mymaster 5000 --表示如果5s内mymaster没响应,就认为SDOWN
sentinel failover-timeout mymaster 15000 --表示如果15秒后,mysater仍没活过来,则启动failover,从剩下的
slave中选一个升级为master
两种方式启动哨兵
redis-sentinel sentinel.conf
redis-server /path/to/sentinel.conf --sentinel
搭建redis一主两从+哨兵监控
哨兵监控一个系统时,只需要配置监控master即可,哨兵会自动发现所有slave;
这时候,我们把master关闭,等待指定时间后(默认是30秒),会自动进行切换,会输出如下消息
img
+sdown表示哨兵主观认为master已经停止服务了,+odown表示哨兵客观认为master停止服务了。挑选一个slave升级为master
+try-failover表示哨兵开始进行故障恢复
+failover-end 表示哨兵完成故障恢复
+slave表示列出新的master和slave服务器,我们仍然可以看到已经停掉的master,哨兵并没有清楚已停止的服务的实例,这是因为已经停止的服务器有可能会在某个时间进行恢复,恢复以后会以slave角色加入到整个集群中。

这样哨兵监控就已经实现好了,希望对你们有所帮助。