上一篇我们已经介绍了Redis的主从复制,传送门:《Redis高可用之主从复制实践(四)》,想必大家对redis已经有一个概念了,那么问题来了,如果redis主从复制的master服务器挂掉了,那么整体redis就崩溃了,因为master无法进行写数据,导致slave中无法更新数据。
那么为了解决这个问题我们就需要有一种方案让redis宕机后可以自动进行故障转移,还好redis给我们提供一种高可用解决方案 Redis-Sentinel。Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自动切换。Sentinel可以监视任意多个主服务器
以及主服务器属下的从服务器,并在被监视的主服务器下线时,自动执行故障转移操作。
既然有这么好的解决方案,那么我们就来看看如何在我们的服务器上进行配置
二、Sentinel配置启动与故障转移
1、环境配置
第一:准备3台服务器,此处我的sentinel就直接放在原先的服务器上
主机说明 主机IP 端口 sentinel端口master
192.168.250.132
7000
26379
slave 192.168.250.133 7001 26380
slave
192.168.250.134
7002
26381
此处要说明一个问题,我这边的sentinel采用的是集群部署的方式,而不是单点,想必大家也知道单点会存在很多的问题,比如:
1):当sentinel进程宕掉后(sentinel本身也有单点问题,single-point-of-failure)整个集群系统将无法按照预期的方式运行;
2):如果只有一个sentinel进程,如果这个进程运行出错,或者是网络堵塞,那么将无法实现redis集群的主备切换(单点问题)。
如果有多个sentinel,redis的客户端可以随意地连接任意一个sentinel来获得关于redis集群中的信息;即使有一些sentinel进程宕掉了,依然可以进行redis集群的主备切换;
2、创建sentinel配置文件
进入 132 服务器的redis文件夹下,我们创建一个文件名为 sentinel-26379.conf 配置文件,文件内容如下:
port 26379 daemonize yes logfile "26379.log" dir "./" sentinel monitor mymaster 192.168.250.132 7000 2 sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 15000 sentinel auth-pass mymaster 123 bind 192.168.250.132 127.0.0.1