Ошибка HTTP 503 при попытке создать репозиторий моментального снимка S3 для ELK - PullRequest
0 голосов
/ 24 октября 2018

Я получаю ошибку HTTP 503 каждый раз, когда пытаюсь создать репозиторий для моментального снимка Elasticsearch на корзине Amazon S3 :

[root@myserver ~]# curl -XPUT 'https://myes.example.org:9200/_snapshot/s3_repository' -H 'Content-Type: application/json' -d '
{
  "type": "s3",
  "settings": { "bucket": "mybucket/elk" }
}'

Через 30 секунд время ожидания истекает:

{"error":{"root_cause":[{"type":"process_cluster_event_timeout_exception","reason":"failed to process cluster event (put_repository [s3_repository]) within 30s"}],"type":"process_cluster_event_timeout_exception","reason":"failed to process cluster event (put_repository [s3_repository]) within 30s"},"status":503}

Однако корзина S3 действительно доступна с моего сервера:

[root@myserver ~]# aws s3 cp testfile s3://mybucket/elk/ --sse AES256

upload: ./testfile to s3://mybucket/elk/testfile 

В чем может быть причина и как ее исправить?

Ответы [ 3 ]

0 голосов
/ 25 октября 2018

В качестве альтернативы, вы можете запустить нижеприведенное из Kibana Dev Tools, чтобы легко зарегистрировать репозиторий снимков s3.

PUT _snapshot/s3_repository
{
  "type": "s3",
  "settings": {
    "bucket": "<s3-bucket-name>",
    "region": "<region_name>",
    "access_key": "<access_key>",
    "secret_key": "<secret_key>",
    "compress": true
  }
}
0 голосов
/ 25 октября 2018

Похоже, это была временная ошибка, так как теперь она работает.

Кстати, в JSON также необходимо было указать параметр base_path:

{
  "type": "s3",
  "settings": { "bucket": "mybucket",  "base_path": "elk"}
}
0 голосов
/ 24 октября 2018

Необходимо убедиться, что учетные данные правильно хранятся в хранилище ключей.

cat /aws/access_key | base64 --decode | bin/elasticsearch-keystore add --stdin --force s3.client.default.access_key && \
cat /aws/secret_key | base64 --decode | bin/elasticsearch-keystore add --stdin --force s3.client.default.secret_key

Из документации плагина:

Плагин репозитория S3

Плагин репозитория S3 добавляет поддержку использования S3 в качестве репозитория для {ref} /modules-snapshots.html [Snapshot / Restore].

Если выищите размещенное решение Elasticsearch на AWS, пожалуйста, посетите http://www.elastic.co/cloud.

Начало работы с AWS

Плагин предоставляет тип репозитория с именем s3, который может использоваться присоздание хранилища.По умолчанию в хранилище используются учетные данные роли ECS IAM или EC2 IAM Role для проверки подлинности.Единственным обязательным параметром является имя группы:

PUT _snapshot/my_s3_repository
{
  "type": "s3",
  "settings": {
    "bucket": "my_bucket"
  }
}

Параметры клиента

Для клиента, используемого для подключения к S3, доступно несколько параметров.Имена параметров клиента имеют форму s3.client.CLIENT_NAME.SETTING_NAME.Имя клиента по умолчанию, которое ищется в репозитории s3, называется default.Его можно изменить с помощью клиента настроек репозитория.Например:

PUT _snapshot/my_s3_repository
{
  "type": "s3",
  "settings": {
    "bucket": "my_bucket",
    "client": "my_alternate_client"
  }
}

Большинство настроек клиента указываются в изгибахвести, но некоторые из них являются конфиденциальными и должны храниться в {ref} /secure-settings.html [хранилище ключей эластичного поиска].

Например, перед тем, как запустить узел, выполните следующие команды, чтобы добавить настройки ключа доступа AWS в хранилище ключей:

bin/elasticsearch-keystore add s3.client.default.access_key
bin/elasticsearch-keystore add s3.client.default.secret_key

Все параметры безопасности этого плагина для клиента: {ref} /secure-settings.html# пополняемой-Secure-настройка [пополняемый].После перезагрузки настроек внутренние клиенты s3, используемые для передачи содержимого снимка, будут использовать последние настройки из хранилища ключей.Любые существующие репозитории s3, а также любые недавно созданные, получат новые значения, хранящиеся в хранилище ключей.

...