redis network_error ai_generated partial

SENTINEL:仲裁节点不可达,针对主节点 'mymaster' 的故障转移延迟

SENTINEL: arbiter node unreachable, failover delayed for master 'mymaster'

ID: redis/sentinel-arbiter-unreachable-failover-delayed

其他格式: JSON · Markdown 中文 · English
82%修复率
86%置信度
1证据数
2024-11-12首次发现

版本兼容性

版本状态引入弃用备注
Redis 6.2.0 active
Redis 7.0.0 active
Redis 7.2.0 active

根因分析

Sentinel 无法在故障转移超时内连接到仲裁节点(配置为法定人数参与的 Redis 实例),阻止达成法定人数并延迟故障转移。

English

Sentinel cannot connect to the arbiter node (a Redis instance configured as quorum participant) within the failover timeout, preventing the quorum from being reached and delaying failover.

generic

官方文档

https://redis.io/docs/latest/operate/oss_and_stack/management/sentinel/

解决方案

  1. 使用 ping 和 redis-cli -h <arbiter-ip> -p <port> PING 检查仲裁节点的网络连接,然后根据需要修复防火墙规则或 DNS 解析。
  2. 通过将 sentinel monitor mymaster <ip> <port> <quorum> 降低到较小值(例如从 3 降到 2),临时调整法定人数以排除仲裁节点,直到仲裁节点恢复。
  3. 确保仲裁 Redis 实例以最小配置运行(例如端口 26379),并且所有 Sentinel 节点都可访问;验证 sentinel.conf 中的仲裁节点 IP 是否正确。

无效尝试

常见但无效的做法:

  1. 60% 失败

    Increasing sentinel failover timeout (sentinel failover-timeout mymaster 60000) may allow more time but doesn't fix the underlying network or arbiter issue.

  2. 80% 失败

    Removing the arbiter from the configuration reduces quorum resilience and may cause split-brain scenarios.

  3. 70% 失败

    Restarting the arbiter without checking its network connectivity or configuration will result in the same unreachable state.