
Redis Sentinel 是 Redis 官方提供的高可用解决方案,用于监控 Redis 主从架构中的节点状态,实现自动故障检测、故障转移及配置管理。本镜像基于官方 Redis 镜像构建,封装了 Sentinel 组件,可快速部署至容器环境,为 Redis 集群提供高可用保障。
4.2.1 基础部署(单 Sentinel 节点)
bashdocker run -d \ --name redis-sentinel \ -p 26379:26379 \ -v /path/to/sentinel.conf:/etc/redis/sentinel.conf \ redis:alpine \ redis-sentinel /etc/redis/sentinel.conf
说明:需提前准备
sentinel.conf配置文件(见 4.4 配置参数),并通过-v挂载至容器内。
4.2.2 多 Sentinel 集群部署(3 节点示例)
bash# 节点 1 docker run -d \ --name redis-sentinel-1 \ -p 26379:26379 \ -v /path/to/sentinel-1.conf:/etc/redis/sentinel.conf \ --network redis-net \ redis:alpine redis-sentinel /etc/redis/sentinel.conf # 节点 2(端口映射 26380,避免宿主机端口冲突) docker run -d \ --name redis-sentinel-2 \ -p 26380:26379 \ -v /path/to/sentinel-2.conf:/etc/redis/sentinel.conf \ --network redis-net \ redis:alpine redis-sentinel /etc/redis/sentinel.conf # 节点 3(端口映射 26381) docker run -d \ --name redis-sentinel-3 \ -p 26381:26379 \ -v /path/to/sentinel-3.conf:/etc/redis/sentinel.conf \ --network redis-net \ redis:alpine redis-sentinel /etc/redis/sentinel.conf
说明:需创建自定义网络
redis-net(docker network create redis-net),确保 Sentinel 与 Redis 节点在同一网络。
以下示例包含 1 主、2 从、3 Sentinel 节点的完整架构:
yamlversion: '3' networks: redis-net: driver: bridge services: # Redis 主节点 redis-master: image: redis:alpine container_name: redis-master ports: - "6379:6379" networks: - redis-net command: redis-server --appendonly yes # 开启 AOF 持久化 # Redis 从节点 1 redis-slave-1: image: redis:alpine container_name: redis-slave-1 ports: - "6380:6379" networks: - redis-net command: redis-server --slaveof redis-master 6379 # 指向主节点 # Redis 从节点 2 redis-slave-2: image: redis:alpine container_name: redis-slave-2 ports: - "6381:6379" networks: - redis-net command: redis-server --slaveof redis-master 6379 # 指向主节点 # Sentinel 节点 1 sentinel-1: image: redis:alpine container_name: sentinel-1 ports: - "26379:26379" networks: - redis-net volumes: - ./sentinel-1.conf:/etc/redis/sentinel.conf command: redis-sentinel /etc/redis/sentinel.conf # Sentinel 节点 2 sentinel-2: image: redis:alpine container_name: sentinel-2 ports: - "26380:26379" networks: - redis-net volumes: - ./sentinel-2.conf:/etc/redis/sentinel.conf command: redis-sentinel /etc/redis/sentinel.conf # Sentinel 节点 3 sentinel-3: image: redis:alpine container_name: sentinel-3 ports: - "26381:26379" networks: - redis-net volumes: - ./sentinel-3.conf:/etc/redis/sentinel.conf command: redis-sentinel /etc/redis/sentinel.conf
注:所有 Sentinel 配置文件(sentinel-1.conf、sentinel-2.conf、sentinel-3.conf)需包含相同的监控配置(见 4.4 配置参数)。
Sentinel 配置通过 sentinel.conf 文件定义,核心参数如下:
| 参数名 | 格式 | 说明 | 默认值 |
|---|---|---|---|
sentinel monitor <master-name> <ip> <port> <quorum> | 必选 | 监控的主节点名称、IP、端口及“仲裁数”(判断主节点不可用的最小 Sentinel 数量) | - |
sentinel down-after-milliseconds <master-name> <ms> | 可选 | 主节点无响应的超时时间(毫秒),超时则标记为“主观下线” | 30000(30秒) |
sentinel parallel-syncs <master-name> <num> | 可选 | 故障转移后,同时向新主节点同步数据的从节点数量(越小越慢,冲突越少) | 1 |
sentinel failover-timeout <master-name> <ms> | 可选 | 故障转移超时时间(毫秒),超时则重试 | ***(3分钟) |
sentinel notification-script <master-name> <path> | 可选 | 节点状态变化时触发的通知脚本路径(如告警脚本) | - |
sentinel client-reconfig-script <master-name> <path> | 可选 | 故障转移后触发的客户端重配置脚本路径 | - |
示例配置文件(sentinel.conf):
conf# 监控名为 "mymaster" 的主节点(IP:redis-master,端口:6379,仲裁数:2) sentinel monitor mymaster redis-master 6379 2 # 主节点无响应 10 秒后标记为下线 sentinel down-after-milliseconds mymaster 10000 # 故障转移时允许 1 个从节点同时同步 sentinel parallel-syncs mymaster 1 # 故障转移超时时间 2 分钟 sentinel failover-timeout mymaster 120000
为简化配置,可通过环境变量动态注入 Sentinel 参数(无需手动编写 sentinel.conf),常用变量如下:
| 环境变量 | 对应配置参数 | 说明 |
|---|---|---|
SENTINEL_MONITOR_NAME | sentinel monitor <name> | 主节点名称(如 mymaster) |
REDIS_MASTER_HOST | sentinel monitor <ip> | 主节点 IP/主机名 |
REDIS_MASTER_PORT | sentinel monitor <port> | 主节点端口(默认 6379) |
SENTINEL_QUORUM | sentinel monitor <quorum> | 仲裁数(默认 2) |
SENTINEL_DOWN_AFTER | sentinel down-after-milliseconds | 超时时间(毫秒,默认 30000) |
SENTINEL_PARALLEL_SYNCS | sentinel parallel-syncs | 同步从节点数量(默认 1) |
SENTINEL_FAILOVER_TIMEOUT | sentinel failover-timeout | 故障转移超时(毫秒,默认 ***) |
使用环境变量的 Docker Run 示例:
bashdocker run -d \ --name redis-sentinel \ -p 26379:26379 \ --network redis-net \ -e SENTINEL_MONITOR_NAME=mymaster \ -e REDIS_MASTER_HOST=redis-master \ -e REDIS_MASTER_PORT=6379 \ -e SENTINEL_QUORUM=2 \ -e SENTINEL_DOWN_AFTER=10000 \ redis:alpine \ redis-sentinel --sentinel
客户端需通过 Sentinel 获取当前主节点地址,而非直接连接主节点。以 Redis CLI 为例:
bash# 连接 Sentinel(端口 26379) redis-cli -h 127.0.0.1 -p 26379 # 获取主节点信息 sentinel get-master-addr-by-name mymaster # 输出示例:1) "redis-master" 2) "6379"(故障转移后将返回新主节点地址)
主流 Redis 客户端(如 Jedis、Lettuce)均内置 Sentinel 支持,配置示例(Java Jedis):
javaSet<String> sentinelSet = new HashSet<>(); sentinelSet.add("127.0.0.1:26379"); sentinelSet.add("127.0.0.1:26380"); sentinelSet.add("127.0.0.1:26381"); JedisSentinelPool pool = new JedisSentinelPool("mymaster", sentinelSet); Jedis jedis = pool.getResource();
以下是 openiamdocker/redis-sentinel 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务