Ошибка моментального снимка Elasticsearch — невозможно восстановить

#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, чтобы исправить этот тип повреждения репозитория.