在 redis3.0 以前的版本要实现集群一般是借助哨兵 sentinel 工具来监控 master 节点的状态,如果 master 节点异常,则会做主从切换,将某一台 slave 作为 master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般,特别是在主从切换的瞬间存在访问瞬断的情况,而且哨兵模式只有一个主节点对外提供服务,没法支持很高的并发,且单个主节点内存也不宜设置得过大,否则会导致持久化文件过大,影响数据恢复或主从同步的效率。
Sentinel 初始化
Sentinel(哨兵)是 Redis 高可用(high availability) 解决方案,由一个或者多个 Sentinel 实例(instance)组成的 Sentinel 系统(system)可以监视一个或者多个 Redis 主服务器和其跟随的从服务器,并且在被监视的主服务进入下线状态时,自动进行将当前主服务器的从服务器其中一个升级为主服务器,然后将下线的主服务器设置为新主服务器的从节点。
Sentinel 本身我们可以理解为一个特殊的 Redis 服务器, 它也可以通过 redis-server xxx.conf --sentinel启动。
下面是我们实验环境的一个 Sentinel 服务器和 Redis 服务器列表(由于实验都在本机进行,我们采用端口的方式来区分多个服务),服务和端口大致如下:
IP |
端口 |
集群 |
127.0.0.1 |
6379 |
Master |
127.0.0.1 |
6380 |
Slave |
127.0.0.1 |
6381 |
Slave |
127.0.0.1 |
26379 |
Sentinel |
127.0.0.1 |
26380 |
Sentinel |
127.0.0.1 |
26381 |
Sentinel |
首先我们找到 Redis 的配置文件目录,修改 redis-sentinel.conf文件中的以下参数:
# sentinel 端口 port 26381 # 后台运行 daemonize yes # 监控主服务器和有一个 slave 节点 sentinel monitor mymaster