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完成日志的自动管理