为什么我无法删除索引或升级我的 Amazon OpenSearch Service 集群?
我无法删除索引或升级我的 Amazon OpenSearch Service 集群。为什么会发生这种情况?
简短描述
如果您尝试删除索引或升级 OpenSearch Service 集群,此更改可能会因以下原因而失败:
- 快照已在运行。
- 正在运行的快照进度停滞。
- 正在运行的快照有处于红色状态的集群。
- 快照超时或失败。
有关 OpenSearch Service 升级失败的更多信息,请参阅排查升级问题。有关 OpenSearch Service 集群的红色运行状态的更多信息,请参阅红色集群状态。
解决方法
快照已在运行
在快照运行过程中,您可能会遇到以下任一错误消息:
- “之前的快照操作尚未完成”(集群升级期间)
- “无法删除正在拍摄快照的索引”(删除索引时)
如果您遇到错误,请尝试以下操作:
1. 对于加密的域,请使用以下语法检查自动快照是否正在运行:
curl -XGET "https://domain-endpoint/_snapshot/cs-automated-enc/_status"
2. 对于未加密的域,请使用以下语法检查自动快照是否正在运行中:
curl -XGET "https://domain-endpoint/_snapshot/cs-automated/_status"
如果没有正在运行的快照,则将显示以下输出:
{ "snapshots": [] }
空括号会指示您是否可以安全地删除索引或执行升级。如果 OpenSearch Service 无法检查快照是否正在运行中,则操作可能会失败。
正在运行的快照进度停滞
1. 使用以下命令语法检查每小时快照的开始和结束时间:
curl -XGET "https://domain-endpoint/_cat/snapshots/cs-automated?v&s=id"
2. 使用一个 cURL 输出管道将开始时间打印到 awk 命令:
curl -XGET "https://domain-endpoint/_cat/snapshots/cs-automated?v&s=id" | awk -F" " ' { print $4 } '
输出会指示每小时快照发生的时间。例如,以下输出表示输出大约在每小时的第 52 分钟运行:
22:51:11 23:51:18 00:51:19 01:51:14 02:51:16 03:51:18 04:51:16 05:51:11
3. 检查 OpenSearch Service 升级资格。
重要提示:除非快照已完成,否则不要运行升级资格检查。
使用快照状态 API 检查快照是否已完成。捕获快照时,snapshot status API 将返回一个空集。如果快照的当前状态为正在运行中,并且一段时间内没有变化,则快照可能处于卡滞状态。这同样适用于已停用的快照,可以防止拍摄其他快照。如果集群处于红色状态或存在写入数据块,请清除该状态或写块以解决此问题。
注意:在进行配置更改后,快照的数据可能会发生变化。因此,不要将快照用于已计划的作业。
正在运行的快照有处于红色状态的集群
1. 要仅列出注册到您的域的存储库名称,请使用以下语法:
curl -XGET "http://domain-endpoint/_cat/repositories?v&h=id"
2. 要列出注册到您的域的存储库名称、类型和其他设置,请使用以下语法:
curl -XGET "http://domain-endpoint/_snapshot?pretty" curl -XGET "https://domain-endpoint/_cluster/state/metadata"
3. 检查您是否可以列出每个存储库中的快照,不包括 cs-automated 或 cs-automated-enc 存储库。如果您有多个存储库,请使用与以下类似的 bash 脚本:
#!/bin/bash repos=$(curl -s https://domain-endpoint/_cat/repositories 2>&1 |grep -v "cs-automated" | awk '{print $1}') for i in $repos; do echo "Snapshots in ... :" $i >>/tmp/snapshot `curl -s -XGET https://domain-endpoint/_cat/snapshots/$i >> /tmp/snapshot` \echo "done..." done
重要提示:cs-automated 或 cs-automated-enc 存储库中处于卡滞状态的快照无法手动删除。
4. 要查看 /tmp/snapshot 文件夹中的输出,请使用以下语法:
cat /tmp/snapshot
该命令将返回与以下类似的响应:
Snapshots in ... : snapshot-manual-repo axa_snapshot-1557497454881 SUCCESS 1557639400 05:36:40 1557639405 05:36:45 4.6s 7 31 0 31 2019-05-15 SUCCESS 1560503610 09:13:30 1560503622 09:13:42 11.8s 4 16 0 16 epoch_test SUCCESS 1569151317 11:21:57 1569151335 11:22:15 18.1s 15 56 0 56
返回的错误消息表示 Amazon Simple Storage (Amazon S3) 存储桶已被删除并被注册为快照存储库:
Snapshots in ... : snapshot-manual-repo { "error": { "root_cause": [{ "type": "repository_exception", "reason": "[snapshot-manual-repo] could not read repository data from index blob" }], "type": "repository_exception", "reason": "[snapshot-manual-repo] could not read repository data from index blob", "caused_by": { "type": "i_o_exception", "reason": "Exception when listing blobs by prefix [index-]", "caused_by": { "type": "a_w_s_security_token_service_exception", "reason": "a_w_s_security_token_service_exception: User: arn:aws:sts::999999999999:assumed-role/cp-sts-grant-role/swift-us-east-1-prod-666666666666 is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::666666666666:policy/my-manual-es-snapshot-creator-policy (Service: AWSSecurityTokenService; Status Code: 403; Error Code: AccessDenied; Request ID: 6b9374fx-11xy-11yz-ff66-918z9bb08193)" } } }, "status": 500 }
5. 验证手动快照存储库是否已从 Amazon S3 存储桶中删除:
aws s3 ls | grep -i "snapshot-manual-repo"
注意:请将 snapshot-manual-repo 替换为您的存储桶的名称。
6. 从集群中删除存储库:
curl -XDELETE "https://domain-endpoint/_snapshot/snapshot-example-manual-repo"
快照超时或失败
如果您遇到快照超时或失败错误,请执行以下步骤:
1. 检查是否可以手动拍摄快照。如果出现无法拍摄手动快照错误,请调用 _cat/snapshots API:
curl -XGET "https://domain-endpoint/_cat/snapshots/s3_repository"
2. 请将 s3_repository 替换为您的 Amazon S3 存储桶的名称。此语法用于检查当前快照已经运行了多长时间。如果持续时间看起来合理,请等待快照完成,然后尝试再次拍摄快照。
**注意:**您的快照持续时间可能会更长,具体取决于索引的大小或集群的资源使用量。
3. 检查集群的运行状况:
curl -XGET "https://domain-endpoint/_cluster/health?pretty"
如果集群的运行状况为红色,则首先确定并解决集群为红色状态的根本原因。如果 OpenSearch Service 正在重新分配或初始化分片,则等待该过程完成后再配置任何访问策略。请注意,重新分配分片可能显著制约集群的计算资源。有关排查红色状态集群问题的更多信息,请参阅红色集群状态。
相关信息
相关内容
- AWS 官方已更新 1 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 9 个月前