在 上一篇文章 我们介绍了搭建 Redis 主从复制的方法。主从复制虽然一定程度上提升了 Redis 水平扩展的能力,但由于不具备自动检测失败,自动切换主从等能力,维护起来还是比较麻烦的。因此, Redis 又引入了哨兵模式。
实验环境
操作系统: Ubuntu 18.04
Docker: 18.09 ( 安装可参考 在Ubuntu 18.04 中安装 Docker )
Docker-Compose: 1.8.0 (可以执行 sudo apt install docker-compose 进行安装)
Redis-Cli: 3.0.6 (可以执行 sudo apt install redis-tools 进行安装)
因为哨兵模式是主从的进化,所以需要先完成主从的搭建,参考 上一篇文章
实验目标
在主从的基础上,搭建用于监控主从的哨兵。 在本次实验中,将搭建一个具有三个哨兵的哨兵集群。每个哨兵运行于Docker 中,使用主机的不同端口(host网络模式)。
为尽量简化实验的复杂度,使用 Docker 和 Docker-Compose 进行配置,并且不配置存储,使用简单的 host 网络模式。
Sentinel-1 主机端口为: 26379
Sentinel-2 配置端口为: 26380
Sentinel-3 配置端口为: 26381
Santinel 配置文件
Redis Sentinel 实际上是一个运行在特殊模式下的 Redis Server 实例。为搭建三个哨兵,我们建立三个配置文件,内容如下:
- redis-sentinel-1.conf
1 | bind 127.0.0.1 |
其中,sentinel monitor 用于设定监控目标
格式为:sentinel monitor
- master-name是为这个被监控的master起的名字
- ip是被监控的master的IP或主机名。
- redis-port是被监控节点所监听的端口号
- quorom设定了当几个哨兵判定这个节点失效后,才认为这个节点真的失效了
sentinel auth-pass 用于指定连接到的主节点所需的密码
格式为:sentinel auth-pass
sentinel down-after-milliseconds 用于设定master在连续多长时间无法响应PING指令后,就会主观判定节点下线,默认是30秒
格式为: sentinel down-after-milliseconds
- redis-sentinel-2.conf
1 | bind 127.0.0.1 |
- redis-sentinel-3.conf
1 | bind 127.0.0.1 |
Docker-Compose 配置文件
定义好三个 Redis sentinel 实例的配置后,现在用 Docker-Compose 把它们的运行组合起来,新建名为: docker-compose.yml 的文件,内容如下:
1 | version: '2' |
注意:在本实验中,假设所有文件时在同一目录中的
启动 Redis Sentinel 集群
确保在 Redis 集群安装实验手册(一) - 主从复制 主从集群已经正常运行
在 docker-compose.yml 所在的目录执行:
1 | docker-compose up -d |
系统显示:
1 | Creating redis-sentinel-1 |
如果使用 docker ps 命令,可以看到六个个容器被启动了。
1 | ab2fa8669b8d redis "docker-entrypoint.s…" 6 seconds ago Up 5 seconds redis-sentinel-2 |
注意: PORT 列是空的,因为使用的是 host 模式,docker 直接使用的是宿主机的端口,所以在端口映射列是空的
验证集群
登录到一个哨兵节点, 执行
1 | redis-cli -p 26379 -a redis.123 |
再在 redis-cli 命令行提示符下执行
1 | info sentinel |
系统将显示类似信息:
1 | # Sentinel |
为观察变化,也可以使用 docker logs 命令查看相关实例日志的变化,如:
1 | docker logs -f redis-sentinel-1 |
就可以参考监控 redis-sentinel-1 的日志输出。
下一步
下一步,我们将演示如何设定 Redis Cluster。