Миграция данных из OpenSearch в Yandex Managed Service for OpenSearch
С помощью сервиса Data Transfer вы можете перенести данные из индексов стороннего кластера-источника OpenSearch в индексы Managed Service for OpenSearch. Для этого:
- Настройте кластер-источник.
- Подготовьте тестовые данные.
- Настройте кластер-приемник.
- Подготовьте и активируйте трансфер.
- Проверьте работу трансфера.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
-
Обеспечьте доступ к кластеру-источнику 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
переменные:-
os_admin_password
— пароль пользователя-администратора Managed Service for OpenSearch. -
transfer_enabled
— значение0
, чтобы не создавать трансфер до создания эндпоинтов вручную. -
profile_name
— имя вашего профиля в YC CLI.Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
-
-
Выполните команду
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-манифестах, будут удалены.
-
-