Миграция данных из стороннего кластера OpenSearch с помощью Yandex Data Transfer
Примечание
В регионе Казахстан доступна только зона доступности kz1-a.
С помощью сервиса Data Transfer вы можете перенести данные из индексов стороннего кластера-источника OpenSearch в индексы Managed Service for OpenSearch. Для этого:
- Настройте кластер-источник.
- Подготовьте тестовые данные.
- Настройте кластер-приемник.
- Подготовьте и активируйте трансфер.
- Проверьте работу трансфера.
Если созданные ресурсы вам больше не нужны, удалите их.
Необходимые платные ресурсы
В стоимость поддержки описываемого решения входит:
- Плата за кластер Managed Service for OpenSearch: использование вычислительных ресурсов, выделенных хостам (в том числе хостам с ролью
MANAGER), и дискового пространства (см. тарифы Managed Service for OpenSearch). - Плата за использование публичных IP-адресов для хостов кластера (см. тарифы Virtual Private Cloud).
- Плата за каждый трансфер: использование вычислительных ресурсов и количество переданных строк данных (см. тарифы Data Transfer).
Перед началом работы
-
Обеспечьте доступ к кластеру-источнику OpenSearch из Yandex Cloud.
-
Создайте кластер-приемник Managed Service for OpenSearch:
ВручнуюTerraformСоздайте кластер-приемник Managed Service for OpenSearch любой подходящей конфигурации с хостами в публичном доступе.
-
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Скачайте файл с настройками провайдера
. Поместите его в отдельную рабочую директорию и укажите значения параметров. -
Скачайте в ту же рабочую директорию файл конфигурации data-transfer-os-mos.tf
.В этом файле описаны:
- сеть;
- подсеть;
- группа безопасности и правила, необходимые для подключения к кластеру Managed Service for OpenSearch;
- кластер-приемник Managed Service for OpenSearch;
- трансфер.
-
Укажите в файле
data-transfer-os-mos.tfпеременные:-
mos_version— версия OpenSearch. -
mos_admin_password— пароль пользователя-администратора Managed Service for OpenSearch. -
transfer_enabled— значение0, чтобы не создавать трансфер до создания эндпоинтов вручную. -
profile_name— имя вашего профиля в CLI.Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
-
-
Выполните команду
terraform initв директории с конфигурационным файлом. Эта команда инициализирует провайдер, указанный в конфигурационных файлах, и позволяет работать с ресурсами и источниками данных провайдера. -
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
-
-
Установите утилиты:
Настройте кластер-источник
Создайте пользователя, от имени которого будет выполняться трансфер.
Вы можете поставлять данные из кластера OpenSearch от имени пользователя admin, имеющего роль superuser, но безопаснее для каждой задачи создавать отдельных пользователей с ограниченными привилегиями.
-
(Опционально) В кластере-источнике создайте роль
с привилегиямиcreate_indexиwriteдля всех индексов (*). -
(Опционально) В кластере-источнике создайте пользователя
, от имени которого будут выполняться трансфер, и назначьте ему созданную роль.
Подготовьте тестовые данные
-
В кластере-источнике создайте тестовый индекс
peopleи задайте его схему:curl --user <имя_пользователя_в_кластере-источнике>:<пароль_пользователя_в_кластере-источнике> \ --header 'Content-Type: application/json' \ --request PUT 'https://<адрес_хоста_OpenSearch_с_ролью_DATA>:9200/people' && \ curl --user <имя_пользователя_в_кластере-источнике>:<пароль_пользователя_в_кластере-источнике> \ --header 'Content-Type: application/json' \ --request PUT 'https://<адрес_хоста_OpenSearch_с_ролью_DATA>:9200/people/_mapping?pretty' \ --data' { "properties": { "name": {"type": "text"}, "age": {"type": "integer"} } } ' -
Наполните тестовый индекс данными:
curl --user <имя_пользователя_в_кластере-источнике>:<пароль_пользователя_в_кластере-источнике> \ --header 'Content-Type: application/json' \ --request POST 'https://<адрес_хоста_OpenSearch_с_ролью_DATA>:9200/people/_doc/?pretty' \ --data' { "name": "Alice", "age": "30" } ' && \ curl --user <имя_пользователя_в_кластере-источнике>:<пароль_пользователя_в_кластере-источнике> \ --header 'Content-Type: application/json' \ --request POST 'https://<адрес_хоста_OpenSearch_с_ролью_DATA>:9200/people/_doc/?pretty' \ --data' { "name": "Robert", "age": "32" } ' -
(Опционально) Проверьте данные в тестовом индексе:
curl --user <имя_пользователя_в_кластере-приемнике>:<пароль_пользователя_в_кластере-приемнике> \ --header 'Content-Type: application/json' \ --request GET 'https://<адрес_хоста_OpenSearch_с_ролью_DATA>:9200/people/_search?pretty'
Настройте кластер-приемник
-
Получите SSL-сертификат для подключения к кластеру Managed Service for OpenSearch.
-
(Опционально) Создайте пользователя, от имени которого будет выполняться трансфер.
Вы можете поставлять данные в кластер Managed Service for OpenSearch от имени пользователя
admin, имеющего рольsuperuser, но безопаснее для каждой задачи создавать отдельных пользователей с ограниченными привилегиями.-
Создайте роль
с привилегиямиcreate_indexиwriteдля всех индексов (*). -
Создайте пользователя и назначьте ему эту роль.
-
Подготовьте и активируйте трансфер
-
Создайте эндпоинт для кластера-приемника Managed Service for OpenSearch.
-
Создайте трансфер:
ВручнуюTerraform- Создайте трансфер типа Копирование, использующий созданные эндпоинты.
- Активируйте трансфер.
-
Укажите в файле
data-transfer-os-mos.tfпеременные:source_endpoint_id— значение идентификатора эндпоинта для источника;target_endpoint_id— значение идентификатора эндпоинта для приемника;transfer_enabled— значение1для создания трансфера.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Трансфер активируется автоматически после создания.
-
Проверьте работу трансфера
-
Дождитесь перехода трансфера в статус Завершен.
-
Проверьте, что индекс
peopleкластера Managed Service for OpenSearch содержит отправленные данные:BashOpenSearch DashboardsВыполните команду:
curl --user <имя_пользователя_в_кластере-приемнике>:<пароль_пользователя_в_кластере-приемнике> \ --cacert ~/.opensearch/root.crt \ --header 'Content-Type: application/json' \ --request GET 'https://<FQDN_хоста_OpenSearch_с_ролью_DATA>:9200/people/_search?pretty'- Подключитесь к кластеру-приемнику с помощью OpenSearch Dashboards.
- Выберите общий тенант
Global. - Откройте панель управления, нажав на значок
. - В разделе OpenSearch Dashboards выберите Discover.
- В поле CHANGE INDEX PATTERN выберите индекс
people.
Удалите созданные ресурсы
Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:
-
Удалите эндпоинты для источника и приемника.
-
Остальные ресурсы удалите в зависимости от способа их создания:
ВручнуюTerraform-
В терминале перейдите в директорию с планом инфраструктуры.
Важно
Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy -
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-
-