AWS RED 上的 Elasticsearch 和不允许重新路由

Posted

技术标签:

【中文标题】AWS RED 上的 Elasticsearch 和不允许重新路由【英文标题】:Elasticsearch on AWS RED and reroute not allowed 【发布时间】:2016-07-12 08:16:06 【问题描述】:

我创建了一个 ES 域来搜索带有每日索引的 vpcglow 日志和云跟踪日志。 目前,状态为红色:


   "cluster_name": "678628912247:test",
   "status": "red",
   "timed_out": false,
   "number_of_nodes": 17,
   "number_of_data_nodes": 17,
   "active_primary_shards": 687,
   "active_shards": 1374,
   "relocating_shards": 0,
   "initializing_shards": 0,
   "unassigned_shards": 8,
   "number_of_pending_tasks": 0

进一步调查发现,一个索引是 RED:

red   open cwl-2016.02.19 5 1    381700  102899 335.8mb 167.9mb

查看碎片:

cwl-2016.02.19  2   p   UNASSIGNED                  
cwl-2016.02.19  2   r   UNASSIGNED                  
cwl-2016.02.19  0   p   UNASSIGNED                  
cwl-2016.02.19  0   r   UNASSIGNED                  
cwl-2016.02.19  3   p   STARTED 381700  167.9mb x.x.x.x Elektra Natchios
cwl-2016.02.19  3   r   STARTED 381700  167.9mb x.x.x.x Chronos 
cwl-2016.02.19  1   p   UNASSIGNED                  
cwl-2016.02.19  1   r   UNASSIGNED                  
cwl-2016.02.19  4   p   UNASSIGNED                  
cwl-2016.02.19  4   r   UNASSIGNED

我试图将分片重新路由到使用较少的节点,但它给了我:

"Message":"Your request: '/_cluster/reroute' is not allowed."

任何建议请我现在应该做什么。

感谢和问候。

【问题讨论】:

您的集群中有 17 个节点(“number_of_nodes”:17)。还有未分配的分片(“unassigned_shards”:8)。当您有未分配的分片时,您的 ES 运行状况可能会变为“黄色”或“红色”。尝试重新启动 elasticsearch 服务。如果您有多个 elasticsearch 节点,则停止所有节点(通过停止每个节点的服务)并一个接一个地启动。让每个节点完全初始化,然后再启动其他节点。希望这会有所帮助。 【参考方案1】:

红色集群状态表示至少一个主分片及其副本未分配给节点。

既然您已经找到红色索引,最好的选择是删除它。 如果无法删除,则恢复快照(请注意 AWS 自动拍摄快照)

作为最后的手段,您可以联系 AWS 支持,他们可以为您恢复它。

修复红色集群很重要,因为一旦集群处于红色状态,AWS 就会停止拍摄自动快照。

【讨论】:

这是否意味着AWS不支持集群重路由?【参考方案2】:

RED 集群意味着一个或多个主分片不可用,这意味着数据丢失及其非常严重的问题,需要立即修复。

    如果您有快照,请尝试从中恢复索引。 将来尝试增加副本,这样您就不会丢失主分片,并且可以轻松地从副本分片中恢复。 查看 ES 集群日志,尝试找出缺少主分片的原因。 看看reroute API是否有用,如果磁盘上有可用的分片但没有ES可以分配它的数据节点,看看你是否可以数据节点或创建一个可以恢复主分片的配置. 关于尝试运行reroute API 时的错误,这似乎是一个权限问题,您可以通过适当的访问来解决。

【讨论】:

【参考方案3】:

Elasticsearch 分配 API

Allocation API 将帮助您了解集群分配问题。

curl -XGET "location:9200/_cluster/allocation/explain"

解决分配 API 解释的问题或原因,并使用以下内容重新启动分配

curl -X POST http://127.0.0.1:9200/_cluster/reroute?retry_failed=true

【讨论】:

以上是关于AWS RED 上的 Elasticsearch 和不允许重新路由的主要内容,如果未能解决你的问题,请参考以下文章

AWS Managed ElasticSearch 上的弹性传输客户端

AWS 上的 Elasticsearch:如何修复未分配的分片?

如何设置 SSH 隧道以连接到位于 AWS EC2 服务器上的 ElasticSearch 和 MongoDB?

aws 创建基于vpc的elasticsearch service

使用Filebeat和AWS CloudWatch Logs将EC2上的Tomcat的access_log传送到ELasticsearch中并使用ILM完成日志的自动管理

将AWS Kinesis Firehose回填到Elasticsearch Service失败的记录