为什么这个错误发生 #
coordination_state_rejected_exception 表示集群协调层的状态转换被拒绝。这通常发生在主节点选举或集群状态更新期间。
这个错误可能由以下原因引起:
- 主节点选举:多个节点同时竞选主节点
- Term 不匹配:接收到的状态更新 Term 与当前不一致
- 版本冲突:集群状态版本与预期不符
- 异步消息:接收到过期的集群状态更新
- 网络分区:网络分区导致集群分裂
- 节点重启:节点重启后尝试应用过期的状态
- 状态并发更新:多个状态更新同时进行产生冲突
如何修复这个错误 #
1. 检查集群状态 #
# 查看集群健康
GET /_cluster/health
# 查看主节点
GET /_cat/master?v
# 查看节点状态
GET /_cat/nodes?v
2. 等待选举完成 #
# 等待主节点选举完成
GET /_cluster/health?wait_for_active_shards=1&timeout=50s
# 等待集群稳定
GET /_cluster/health?wait_for_status=green&timeout=50s
3. 检查网络连接 #
# 测试节点间网络
ping <other_node>
# 检查网络延迟和丢包
mtr <other_node>
4. 重启节点(如果需要) #
# 重启不稳定的节点
sudo systemctl restart easysearch
5. 检查候选主节点 #
# 确保有足够的候选主节点
GET /_cat/nodes?v&h=name,master
预防措施 #
- 配置奇数个候选主节点
- 确保网络稳定
- 监控集群健康状态





