使用dockercompose部署redis主从哨兵
时间: 2025-04-19 15:16:30 浏览: 20
### 使用 Docker Compose 部署 Redis 主从复制和哨兵模式
#### 创建项目结构
为了构建一个完整的 Redis 主从复制加哨兵监控的环境,首先创建一个新的工作目录并设置必要的文件夹结构。
```bash
mkdir -p ~/docker_data/myredis/{conf,master,slave1,slave2,sentinel}
cd ~/docker_data/myredis/
```
此操作将在 `/home/dc2-user/docker_data/myredis/` 下建立所需的子目录[^3]。
#### 编写 `docker-compose.yml`
接下来,在该路径下编写 `docker-compose.yml` 文件用于定义服务:
```yaml
version: '3'
services:
master:
image: redis:latest
container_name: redis-master
ports:
- "6379:6379"
volumes:
- ./master:/data
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
slave1:
image: redis:latest
container_name: redis-slave1
environment:
REDIS_MASTER_HOST: master
REDIS_REPLICAOF_PORT: 6379
depends_on:
- master
ports:
- "6380:6379"
volumes:
- ./slave1:/data
entrypoint: |
sh -c "
echo 'replicaof master 6379' >> /etc/redis/redis.conf &&
exec redis-server /etc/redis/redis.conf"
sentinel1:
image: redis:latest
container_name: redis-sentinel1
depends_on:
- master
- slave1
ports:
- "26379:26379"
command: >
bash -c '
{ echo "sentinel monitor mymaster $$REDIS_MASTER_HOST 6379 2";
echo "sentinel down-after-milliseconds mymaster 5000";
echo "sentinel failover-timeout mymaster 60000";
echo "sentinel parallel-syncs mymaster 1"; } | tee /usr/local/etc/redis/sentinel.conf;
exec redis-sentinel /usr/local/etc/redis/sentinel.conf'
networks:
default:
driver: bridge
volumes:
data:
```
上述配置中包含了三个主要部分:一个是作为主服务器运行的服务 (`master`);两个副本实例(`slave1`, 可以根据需求增加更多) 和至少一个哨兵节点(`sentinel1`).
注意这里通过自定义命令的方式设置了从属关系以及哨兵监测参数.
#### 启动服务
完成以上步骤之后就可以利用如下指令启动所有的容器:
```bash
docker-compose up -d
```
这会以后台守护进程的形式启动所有指定的服务,并自动处理依赖关系[^1].
#### 查看集群状态
一旦成功启动了这些组件,则可以通过下面的方法验证它们之间的交互情况:
对于每一个参与者的角色确认可以采用以下方式查询其自身的复制信息:
```bash
docker exec -it redis-master redis-cli info replication
docker exec -it redis-slave1 redis-cli info replication
```
而对于哨兵的状态则可执行下列命令获取当前被监视到的主库详情:
```bash
docker exec -addr-by-name mymaster
```
阅读全文
相关推荐


















