Roy*_*evy 4 database logging sharding elasticsearch
我的集群中的一些弹性搜索索引存在问题:
我有 5 个常规分片用于示例索引logs-2021.08,因此当我运行_cat/shards弹性 API 时,我得到了很好的结果(示例):
logs-2021.08 2 r STARTED 25008173 11.9gb 0.0.0.0 instance-0000000128
logs-2021.08 2 p STARTED 25008173 11.8gb 0.0.0.0 instance-0000000119
logs-2021.08 4 p STARTED 25012332 11.8gb 0.0.0.0 instance-0000000129
logs-2021.08 4 r STARTED 25012332 11.9gb 0.0.0.0 instance-0000000119
logs-2021.08 1 p STARTED 25003649 11.8gb 0.0.0.0 instance-0000000121
logs-2021.08 1 r STARTED 25003649 11.8gb 0.0.0.0 instance-0000000115
logs-2021.08 3 p STARTED 25006085 11.8gb 0.0.0.0 instance-0000000121
logs-2021.08 3 r STARTED 25006085 11.8gb 0.0.0.0 instance-0000000135
logs-2021.08 0 p STARTED 25007160 11.9gb 0.0.0.0 instance-0000000128
logs-2021.08 0 r STARTED 25007160 11.9gb 0.0.0.0 instance-0000000118
Run Code Online (Sandbox Code Playgroud)
问题是我也在 cat API 的结果中得到了这些:
partial-logs-2021.08 2 p UNASSIGNED
partial-logs-2021.08 4 p UNASSIGNED
partial-logs-2021.08 1 p UNASSIGNED
partial-logs-2021.08 3 p UNASSIGNED
partial-logs-2021.08 0 p UNASSIGNED
Run Code Online (Sandbox Code Playgroud)
我找不到问题所在或为什么我有这些部分索引,但集群似乎对这些未分配的分片不健康。
有什么方法可以从根本上解决这些问题(而不是直接删除它们)?
Jin*_*alu 17
由于后续分配失败次数过多,重试 Elasticsearch 分片分配被阻止。
\ncurl -X POST http://127.0.0.1:9200/_cluster/reroute?retry_failed=true\nRun Code Online (Sandbox Code Playgroud)\nElasticsearch 分配 API将尝试连续cluster分配一个分片最多次数(默认为 5 次),然后放弃并让分片保持未分配状态。index.allocation.max_retries这种情况可能是由于最多尝试 5 次造成的,我们可以增加此次数以再次尝试分配初始化,但问题可能会重复。
curl --silent --request PUT --header \'Content-Type: application/json\' 127.0.0.1:9200/my_index_name/_settings?pretty=true --data-ascii \'{\n "index": {\n "allocation": {\n "max_retries": 15\n }\n } \n}\'\nRun Code Online (Sandbox Code Playgroud)\n但是这可能会因为不同的原因再次失败,所以要查明原因,配合集群分配。可能的问题可能是
\n获取未分配的碎片
\ncurl -s "http://127.0.0.1:9200/_cat/shards?v" | awk \'NR==1 {print}; $4 == "UNASSIGNED" {print}\'\nRun Code Online (Sandbox Code Playgroud)\n要了解原因,请运行以下命令
\nGET /_cluster/allocation/explain\n\n# OR\n\ncurl -XGET "location:9200/_cluster/allocation/explain"\n\n# OR\n\ncurl http://127.0.0.1:9200/_cluster/state | jq \'.routing_table.indices | .[].shards[][] | select(.state=="UNASSIGNED") | {index: .index, shard: .shard, primary: .primary, unassigned_info: .unassigned_info}\'\nRun Code Online (Sandbox Code Playgroud)\n问题得到纠正后,可以通过使用 ?retry_failed URI 查询参数调用重新路由 API 来手动重试分配,这将尝试对这些分片进行单轮重试。使用以下 API 重新启动分配 API 的命令。
\ncurl -X POST http://127.0.0.1:9200/_cluster/reroute?retry_failed=true\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
18972 次 |
| 最近记录: |