使用Docker部署Redis哨兵模式的服务
一张我很爱的脏脏小猫!
根据Redis使用场景的不同,对其稳定性、可靠性的要求也不尽相同。发展初期、测试、学习等环境中,使用Redis单机服务可以迅速的上手开展业务与学习。但是随着业务量的增长以及学习的深入,Redis的稳定性、可靠性便成为一个无法回避的问题。因此,Redis的哨兵、集群等使用模式、场景便应运而生。本文仅对Redis的Docker哨兵模式部署进行简单的介绍,一方面为自己日后留档,另一方面记录一下本次部署的思路,最后也希望本文对一些想要使用Docker部署Redis哨兵的朋友提供一些帮助。 闲言少叙,仅入正题。首先我采用一台 Debian 12 作为操作演示环境,由于要使用Docker,对服务器环境要求不大,这也正是Docker部署的优势。我们部署本次服务采用docker-compose进行,因此只需要一个docker-compose.yml文件即可。所需文件我已上传至redis_sentinel_docker_compose点击即可进行访问查阅。本次采用的镜像分别为 redis-sentinel 与 redis。这两个镜像都是 bitnami 组织提供的(点击即可跳转)。整个服务由1个Redis主机,2个Redis丛机,以及3个Redis 哨兵组成。可以适当减少1个Redis从机,但是不能减少哨兵,因为默认至少需要两个哨兵共同认为一个服务不可用后才会切换至其他节点。 我们首先需要下载我的docker-compose.yml文件,在文件中有一部分需要修改,如下图 需要修改的地方有:
- 将所有YOUPASSWORD 修改为你的redis访问密码,如果你部署的服务在本机,且不对外部提供服务,可以讲这部分的环境变量删除即可。
- 将所有 <your-local-redis-data-*> 修改为你本地存储redis持久化数据的目录。
- 将redis-sentinel配置的环境变量下的YOURMASTERIP修改为你的服务器公网IP,同理如果你不对外提供服务,可以将这部分删除即可。
- 如果你不需要从外部访问这台主机的Redis,那么你可以讲1主2从的networks中本机绑定的端口删除,修改为 - “6379” 即可。
修改完所有的文件后,登录您的服务器,首先运行
docker network create app-tier –driver bridge
创建一个名为 app-tier 的bridge网络,目的是使所有挂载在此网络上的服务可以互相访问。创建完成之后将您修改后的 docker-compose.yml 文件上传至您的服务器中,使用
docker-compose up –scale redis-sentinel=3 -d
命令启动Redis服务,在启动后会创建6个容器,如上所述1主2从3哨兵。下图为正确启动后的docker 信息 如果提示你 docker-compose 命令错误,那么代表你的服务器上没有安装docker-compose 服务,这里推荐自己直接下载安装,不推荐使用 apt 或 yum下载,因为那种方式下载的都是旧版本的。以下为下载docker-compose 的步骤 ,打开 docker-compose 的 release 页面 (点击访问),找到符合你的主机的文件,然后将其下载到 /usr/bin 文件夹内,之后给它赋予可执行的权限即可。就可以使用
docker-compose –version
查看docker-compose 的版本,到此你就将Redis 主从、哨兵部署好了。接下来可以通过 redis-cli 对哨兵模式进行检查,以下步骤是可选的,目的是确认服务是否正常启动以及是否正常运行: 1,使用 redis-cli 链接哨兵master ,
redis-cli -h x.x.x.x -p 26379 -a YOUPASSWORD
连接成功之后使用如下命令查看主机状态
sentinel master mymaster
在使用如下命令查看丛机状态
sentinel slaves mymaster
再查看所有监控指定主服务器的 哨兵 的信息
sentinel sentinels mymaster
通过以上命令可以基本清除整个服务的状态,以此来判断服务是否开启正常。 如果你还是不放心,可以使用我在redis_sentinel_docker_compose 库内的test.py文件进行验证。 —— 2023年12月9日 Wicos