#amazon-web-services #elasticsearch #amazon-s3 #aws-elasticsearch
#amazon-web-services #elasticsearch #amazon-s3 #aws-elasticsearch
Вопрос:
Я пытаюсь переместить данные из одного экземпляра в другой экземпляр elasticsearch. Я создал роли и корзину s3, как указано здесь .
Я зарегистрировал репозиторий в обоих экземплярах, снимок создан успешно, и в s3 появились новые объекты. но когда я запускаю команду восстановления. Я получаю сообщение об ошибке следующим образом
:[{"type":"snapshot_restore_exception","reason":"[test:sample5/xcMBVd21SQky8E2TX8Z76xf] index [example] wasn't fully snapshotted - cannot restore"}]
Я создал моментальный снимок с помощью скрипта python,
path = '_snapshot/test/' sampe_snap
url = host path
payload = {
"indices": "example",
"include_global_state": False
}
r = requests.put(url, json=payload, auth=awsauth)
который возвращает
{"accepted":true}
Для отладки я использовал Kibana и искал моментальный снимок. Это выглядит следующим образом
GET _snapshot/test/sampe_snap
....
"indices" : [ "example" ],
"include_global_state" : false,
"state" : "PARTIAL",
"start_time" : "2021-02-04T11:14:22.153Z",
"start_time_in_millis" : 1612437262153,
"end_time" : "2021-02-04T11:14:22.554Z",
"end_time_in_millis" : 1612437262554,
"duration_in_millis" : 401,
"failures" : [ {
"index" : "example",
"index_uuid" : "example",
"shard_id" : 3,
"reason" : """java.nio.file.NoSuchFileException: Blob object [indices/TJz0FNoGQUfvJ5pbTFLyQ/3/index-f16nCDQoiRl4UV8vCFSA] not found: The specified key does not exist.
(Service: Amazon S3; Status Code: 404; Error Code: NoSuchKey...;
Почему происходит сбой?
Комментарии:
1. Что ж, сообщение об ошибке довольно ясно:
index [example] wasn't fully snapshotted - cannot restore
это означает, что индекс, который вы пытаетесь восстановить, не был полностью сделан моментальным снимком, поэтому его нельзя восстановить2. @Val я обновил вопрос, пожалуйста, посмотрите
Ответ №1:
Сообщение об ошибке довольно четкое:
индекс [пример] не был полностью сделан моментальным снимком — невозможно восстановить
это означает, что индекс, который вы пытаетесь восстановить, не был полностью сделан моментальным снимком, поэтому его нельзя восстановить.
Как вы можете видеть из сведений о моментальном снимке, у него есть состояние PARTIAL
, что означает, что не все фрагменты индекса могут быть успешно сняты. В вашем случае сегмент # 3 example
индекса не был успешно сделан моментальным снимком, и, следовательно, сегменты этого сегмента (т. Е. index-f16nCDQoiRl4UV8vCFSA
) Не могут быть найдены в корзине S3, следовательно, индекс не может быть восстановлен.
Вы можете попытаться восстановить этот частичный снимок, установив partial: true
, но все отсутствующие сегменты будут пустыми, поэтому вам может не хватать некоторых данных.
Возможно, попробуйте другой моментальный снимок, созданный ранее или позже.
Комментарии:
1. в моем случае каждый раз, даже с одним индексом, создание моментального снимка завершается неудачно. «осколки»: { «всего»: 5, «сбой»: 5, «успешно» : 0 }
2. Когда я ищу снимки « GET _snapshot / test / _all, он возвращает ошибку как, «тип»: «snapshot_missing_exception», «причина»: «[mgtm-test:my-snapshot / q0tyey_tnuif_50sq1gla] отсутствует»
3. Можете ли вы поделиться тем, что вы видите в журналах сервера ES при создании моментального снимка?
4. Я не получаю никаких журналов ошибок. только некоторое предупреждение. [2021-02-04T05:16:10,825][ПРЕДУПРЕЖДЕНИЕ ] [o.e.c.s.ClusterApplierService] [3ee47ae36b7028746301af48aa83f3ca] задача приложения состояния кластера [ApplyCommitRequest{term= 88, version= 796619, sourceNode={ba4d072d2a8c63b60e1832f0109c2ac4}{kx7DSpLOToWNxLzEFm8N1g}{l6ruGMsiQ_yCZDr4er4c2g}{ IP }{ IP }{dimr}{ AMAZON_INTERNAL , AMAZON_INTERNAL , distributed_snapshot_deletion_enabled=true}}] заняло [38 секунд], что превышает пороговое значение предупреждения [30 секунд]:
5. Можете ли вы вместо этого обновить свой вопрос, чтобы он был более разборчивым
Ответ №2:
Здесь проблема в том, что моментальный снимок заканчивается PARTIAL
состоянием, а SUCCESS
не состоянием.
Причина, по которой моментальный снимок завершается в ЧАСТИЧНОМ состоянии, заключается в том, что из-за какой-либо проблемы в index-f16nCDQoiRl4UV8vCFSA
файле репозитория S3 внутри shard 3
индекса TJz0FNoGQUfvJ5pbTFLyQ
(идентификатор индекса моментального снимка индекса example
) отсутствует. Что является явным случаем повреждения репозитория.
"reason" : """java.nio.file.NoSuchFileException: Blob object [indices/TJz0FNoGQUfvJ5pbTFLyQ/3/index-f16nCDQoiRl4UV8vCFSA] not found: The specified key does not exist.
Этот вид повреждения репозитория наблюдается, когда кластер сильно загружен (JVM> 80% или загрузка процессора> 80%) и несколько узлов выпадают из кластера.
Один из способов устранить проблему — удалить все моментальные снимки, которые ссылаются на index : example
. Это приведет к очистке файлов моментальных снимков S3 от индекса example
, и теперь, когда вы делаете новый снимок, все начинается заново.
Для большей безопасности я бы рекомендовал обратиться в службу поддержки AWS, чтобы исправить этот тип повреждения репозитория.