📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

为什么这个错误发生 #

coordination_state_rejected_exception 表示集群协调层的状态转换被拒绝。这通常发生在主节点选举或集群状态更新期间。

这个错误可能由以下原因引起:

  1. 主节点选举:多个节点同时竞选主节点
  2. Term 不匹配:接收到的状态更新 Term 与当前不一致
  3. 版本冲突:集群状态版本与预期不符
  4. 异步消息:接收到过期的集群状态更新
  5. 网络分区:网络分区导致集群分裂
  6. 节点重启:节点重启后尝试应用过期的状态
  7. 状态并发更新:多个状态更新同时进行产生冲突

如何修复这个错误 #

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

预防措施 #

  • 配置奇数个候选主节点
  • 确保网络稳定
  • 监控集群健康状态