replica-priority
基本概念
replica-priority(旧称 slave-priority)是 Redis 中用于控制从节点晋升优先级的参数。当主节点发生故障时,哨兵或集群在多个从节点中选择谁来替换主节点,replica-priority 是最先考虑的因素。
配置方式
# redis.conf
replica-priority 100 # 默认值 100,范围 0-100
值越小,优先级越高(越可能在选举中被选为新主节点)。
优先级规则
哨兵或集群在选择新主节点时,按照以下顺序筛选:
1. 剔除所有不可用的从节点(SDOWN、断连、超时等)
2. 按 replica-priority 升序排序(值小的排前面)
3. 同优先级时,选复制偏移量最大的(数据最新)
4. 复制偏移量相同时,选 run_id 最小的(字典序)
不同值的含义
replica-priority = 0
设置为 0 的从节点永远不会被提升为主节点。适用于:
- 专门用于跨机房灾备的从节点(不希望被提升为本地主节点)
- 用于只读报表查询的从节点
- 硬件配置较低的从节点(CPU/内存不足以支撑主节点负载)
replica-priority = 1-99
高优先级,值越小竞争新主节点的能力越强:
节点 A(replica-priority = 1)← 故障转移时优先被选为主节点
节点 B(replica-priority = 50)
节点 C(replica-priority = 100)
适用于:硬件配置更好的从节点应设为更小值。
replica-priority = 100
默认值,表示普通优先级。大多数从节点使用默认值即可。
实际应用场景
场景一:按硬件配置分配优先级
# 高性能服务器 → 优先晋升
replica-priority 10
# 中性能服务器
replica-priority 50
# 低性能服务器
replica-priority 100
场景二:跨机房主从
# 主数据中心
主节点 A(北京)
从节点 B(北京,priority=50)
从节点 C(上海,priority=0) ← 绝不晋升为主节点
场景三:只用作备份的节点
# 专门负责持久化备份的从节点
replica-priority 0
# 这种从节点只做数据备份,不参与故障转移
在哨兵架构中的角色
哨兵在故障转移时,选择新主节点的完整流程:
1. 在哨兵 leader 的视角中,获取所有从节点列表
2. 剔除以下从节点:
- 标记为 SDOWN 的
- 断连时间过长的(超过 down-after-milliseconds × 10)
- 最近没有回复 INFO 的
3. 按 replica-priority 排序(升序)
4. 同优先级时,按 replication offset 排序(降序,数据最新的优先)
5. 同偏移量时,按 run_id 排序(字典序最小优先)
在 Cluster 架构中的角色
Redis Cluster 的从节点晋升流程也使用 replica-priority:
1. 集群节点检测到主节点 FAIL
2. 从节点检查自己是否有资格晋升(replica-priority > 0)
3. 计算晋升延迟时间 = (priority_rank × 1000ms) + random(500ms)
4. 延迟时间最短的从节点最先发起选举
5. 获得多数票的从节点晋升为新的主节点
常见配置策略
| 策略 | 配置 | 适用场景 |
|---|---|---|
| 默认策略 | 全部使用 100 | 节点硬件一致 |
| 差异化策略 | 按硬件配置设 1-100 | 混合配置集群 |
| 禁止晋升 | 特定从节点设 0 | 备份专用节点 |
| 抢占策略 | 特定从节点设 1 | 希望指定从节点优先晋升 |
与其他参数的关系
replica-priority 的选主权重低于集群故障转移的以下机制:
cluster-replica-validity-factor:如果从节点故障间隔时间超过限制,即使 priority 最低也不会被选择min-replicas-to-write和min-replicas-max-lag:不影响选举,但影响新主节点的写入功能
面试要点
replica-priority值越小优先级越高replica-priority 0表示该从节点永远不会成为主节点- 优先级仅在主节点宕机后的晋升选举中有效
- 优先级相同则对比复制偏移量(数据最新的优先)
- 常用于跨机房灾备节点的配置
总结
replica-priority 是 Redis 主从架构中控制故障转移策略的重要参数。通过合理设置不同从节点的优先级,运维人员可以控制故障转移时新主节点的选择偏向,让性能更好、网络延迟更低、更合适的从节点承担主节点角色。将不需要参与故障转移的节点设置为 priority=0,是推荐的最佳实践。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END


暂无评论内容