Миграция данных из стороннего кластера Elasticsearch с помощью Reindex API
Кластеры Managed Service for Elasticsearch поддерживают механизм переиндексации — Reindex API. В качестве источника данных для переиндексации можно указать другой кластер Elasticsearch — такую переиндексацию называют удаленной. С ее помощью можно перенести существующие индексы, псевдонимы (aliases) или потоки данных из стороннего кластера-источника в кластер-приемник Managed Service for Elasticsearch.
Чтобы мигрировать данные из кластера-источника Elasticsearch в кластер-приемник Managed Service for Elasticsearch:
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
-
Создайте кластер-приемник Managed Service for Elasticsearch любой подходящей конфигурации.
Включите доступ к хостам кластера через публичные IP-адреса.
Важно
Версия Elasticsearch в кластере-приемнике должна быть не ниже чем в кластере-источнике.
-
Убедитесь, что вы можете подключиться к кластеру-приемнику Managed Service for Elasticsearch с помощью Elasticsearch API и Kibana.
-
Убедитесь, что у кластера-источника Elasticsearch есть доступ в интернет.
-
Если кластер-источник использует для защиты соединения самоподписанный сертификат, добавьте его в качестве расширения к кластеру-приемнику.
-
Создайте в кластере-источнике пользователя с ролями
monitoring_user
иviewer
.
Настройте кластер-приемник
-
Создайте роль с привилегиями
create_index
иwrite
для всех индексов (*
). -
Создайте пользователя и назначьте ему эту роль.
Совет
В кластерах Managed Service for Elasticsearch вы можете использовать Reindex API от имени пользователя
admin
, имеющего рольsuperuser
, но безопаснее для каждой задачи создавать отдельных пользователей с ограниченными привилегиями. Подробнее см. в разделе Управление пользователями Elasticsearch. -
-
Reindex remote whitelist — укажите IP-адрес или FQDN кластера-источника, например:
192.168.0.1:9200, example.com:9200
-
(опционально) Reindex SSL CA path — укажите локальный путь до загруженного сертификата
/etc/elasticsearch/extensions/<имя расширения>/<имя сертификата>
.
-
Запустите переиндексацию
-
Получите список хостов кластера-приемника.
-
Для запуска переиндексации выполните запрос к хосту с ролью Master node в кластере-приемнике:
curl --user <имя пользователя в кластере-приемнике>:<пароль пользователя в кластере-приемнике> \ --request POST "https://<IP-адрес или FQDN хоста Master node в кластере-приемнике>:9200/_reindex?pretty" \ --header 'Content-Type: application/json' \ --data '{ "source": { "remote": { "host": "https://<IP адрес или FQDN хоста Master Node в кластере-источнике>:9200", "username": "<имя пользователя в кластере-источнике>", "password": "<пароль пользователя в кластере-источнике>" }, "index": "<имя индекса, псевдонима или потока данных в кластере-источнике>" }, "dest": { "index": "<имя индекса, псевдонима или потока данных в кластере-приемнике>" } }'
Чтобы перенести несколько индексов, используйте цикл
for
:for index in <имена индексов, псевдонимов или потоков данных, разделенные пробелами>; do curl --user <имя пользователя в кластере-приемнике>:<пароль пользователя в кластере-приемнике> \ --request POST "https://<IP-адрес или FQDN хоста Master Node в кластере-приемнике>:9200/_reindex?pretty" \ --header 'Content-Type: application/json' \ --data '{ "source": { "remote": { "host": "https://<IP адрес или FQDN хоста Master Node в кластере-источнике>:9200", "username": "<имя пользователя в кластере-источнике>", "password": "<пароль пользователя в кластере-источнике>" }, "index": "'$index'" }, "dest": { "index": "'$index'" } }' done
Удалите неиспользуемые ресурсы
Если созданные ресурсы вам больше не нужны, удалите их:
- Если вы зарезервировали для доступа к кластеру публичные статические IP-адреса, освободите и удалите их.
- Если для загрузки самоподписанного сертификата вы использовали бакет Yandex Object Storage, очистите и удалите его.