Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Managed Service for Elasticsearch
  • Начало работы
    • Все руководства
    • Миграция в Managed Service for Elasticsearch с помощью снапшотов
    • Миграция данных в Yandex Managed Service for OpenSearch
  • Управление доступом
  • Правила тарификации
  • Справочник CLI
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Подготовьте рабочее окружение
  • Создайте необходимые ресурсы
  • Завершите настройку и проверьте доступ к ресурсам
  • Создайте снапшот на кластере-источнике
  • Восстановите снапшот в кластере-приемнике
  • Закончите миграцию
  • Удалите созданные ресурсы
  1. Практические руководства
  2. Миграция в Managed Service for Elasticsearch с помощью снапшотов

Миграция в Managed Service for Elasticsearch с помощью снапшотов

Статья создана
Yandex Cloud
Улучшена
Maksim K.
Обновлена 19 марта 2025 г.
  • Подготовьте рабочее окружение
    • Создайте необходимые ресурсы
    • Завершите настройку и проверьте доступ к ресурсам
  • Создайте снапшот на кластере-источнике
  • Восстановите снапшот в кластере-приемнике
  • Закончите миграцию
  • Удалите созданные ресурсы

Важно

Сервис Yandex Managed Service for Elasticsearch недоступен с 11 апреля 2024 года.

Вы можете создать кластер OpenSearch в Yandex Cloud в качестве альтернативы Elasticsearch.

Кластер Managed Service for Elasticsearch поддерживает механизм снапшотов. Это позволяет мигрировать в него данные из другого кластера Elasticsearch. Подробнее о механизме снапшотов см. в документации Elasticsearch.

Чтобы мигрировать данные из кластера-источника Elasticsearch в кластер-приемник Managed Service for Elasticsearch:

  1. Подготовьте рабочее окружение.
  2. Создайте снапшот на кластере-источнике.
  3. Восстановите снапшот в кластере-приемнике.
  4. Закончите миграцию.

Если используемые ресурсы вам больше не нужны, удалите их.

Важно

Использовать снапшот невозможно, если версия Elasticsearch в кластере-источнике выше, чем в кластере-приемнике. Например, не получится восстановить снапшот кластера Elasticsearch 7.13 в кластере Managed Service for Elasticsearch 7.11.

Подготовьте рабочее окружениеПодготовьте рабочее окружение

Создайте необходимые ресурсыСоздайте необходимые ресурсы

Вручную
Terraform
  1. Создайте бакет Object Storage с ограниченным доступом. Этот бакет будет использоваться в качестве репозитория снапшотов.

  2. Создайте сервисный аккаунт и назначьте ему роль storage.editor. Сервисный аккаунт необходим для доступа к бакету из кластера-источника и кластера-приемника.

  3. Создайте статический ключ доступа для этого сервисного аккаунта.

    Важно

    Сохраните идентификатор ключа и секретный ключ. Они понадобятся позднее.

  4. Создайте кластер-приемник Managed Service for Elasticsearch нужной вам конфигурации со следующими настройками:

    • публичный доступ к хостам;
    • версия Elasticsearch не ниже чем на кластере-источнике.

    Перед созданием кластера-приемника проверьте совместимость кластера-источника и выбранной версии кластера-приемника.

  5. Установите плагин repository-s3 в кластер-приемник.

  1. Если у вас еще нет Terraform, установите его.

  2. Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.

  3. Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его.

  4. Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.

  5. Скачайте в ту же рабочую директорию файл конфигурации mes-migration.tf. В файле описаны:

    • сеть;
    • подсеть;
    • группа безопасности и правила, необходимые для доступа к кластеру-приемнику Managed Service for Elasticsearch;
    • сервисный аккаунт sa-mes-cluster, необходимый для создания кластера Managed Service for Elasticsearch;
    • сервисный аккаунт sa-bucket для работы с бакетом Object Storage.
    • кластер-приемник с установленным плагином repository-s3;
  6. Укажите в файле конфигурации mes-migration.tf в блоке locals:

    • идентификатор каталога;
    • пароль для пользователя admin;
    • редакцию кластера-приемника;
    • версию кластера-приемника;
    • имя бакета Object Storage.
  7. Проверьте корректность файлов конфигурации Terraform с помощью команды:

    terraform validate
    

    Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  8. Создайте необходимую инфраструктуру:

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

    В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.

  9. Создайте статический ключ доступа для сервисного аккаунта sa-bucket.

    Важно

    Сохраните идентификатор ключа и секретный ключ. Они понадобятся позднее.

Завершите настройку и проверьте доступ к ресурсамЗавершите настройку и проверьте доступ к ресурсам

  1. Настройте ACL для бакета:

    1. В выпадающем списке Выберите пользователя укажите созданный ранее сервисный аккаунт.
    2. Задайте разрешения READ и WRITE для выбранного сервисного аккаунта.
    3. Нажмите кнопку Добавить.
    4. Нажмите кнопку Сохранить.
  2. Установите плагин repository-s3 на все хосты кластера-источника.

  3. Чтобы плагин repository-s3 заработал, перезапустите сервисы Elasticsearch и Kibana на всех хостах кластера-источника.

  4. Убедитесь, что вы можете подключиться к кластеру-приемнику Managed Service for Elasticsearch с помощью Elasticsearch API и Kibana.

  5. Убедитесь, что у кластера-источника Elasticsearch есть доступ в интернет.

Создайте снапшот на кластере-источникеСоздайте снапшот на кластере-источнике

  1. Подключите бакет в качестве репозитория снапшотов на кластере-источнике:

    1. Добавьте сведения о ключе статического доступа в хранилище ключей (keystore) Elasticsearch.

      Выполните процедуру на всех хостах кластера-источника.

      Добавьте:

      • Идентификатор ключа:

        $ES_PATH/bin/elasticsearch-keystore add s3.client.default.access_key
        
      • Секретный ключ:

        $ES_PATH/bin/elasticsearch-keystore add s3.client.default.secret_key
        

        Примечание

        Путь к Elasticsearch ($ES_PATH) зависит от выбранного способа установки. Найти путь к установленному Elasticsearch можно в документации по установке (например, для DEB, RPM).

    2. Загрузите данные из хранилища ключей:

      curl -X POST "https://<FQDN_кластера-источника>:9200/_nodes/reload_secure_settings"
      
    3. Зарегистрируйте репозиторий:

      curl "https://<FQDN_кластера-источника>:9200/_snapshot/<имя_репозитория>" \
           -X PUT \
           -H 'Content-Type: application/json' -d '
             {
               "type": "s3",
               "settings": {
                 "bucket": "<имя_бакета>",
                 "endpoint": "storage.yandexcloud.net"
               }
             }'
      

    Подробнее о подключении репозитория см. в документации плагина.

    Внимание

    Если бакет зарегистрирован в кластере Elasticsearch как репозиторий снапшотов, не изменяйте содержимое бакета вручную — это нарушит работу механизма снапшотов Elasticsearch.

  2. Запустите создание снапшота на кластере-источнике. Можно создать снапшот всего кластера или части данных. Разместите снапшот в репозитории, созданном на предыдущем шаге. Подробнее см. в документации Elasticsearch.

    Пример создания снапшота с именем snapshot_1 для всего кластера:

    curl -X PUT \
         "https://<FQDN_кластера-источника>:9200/_snapshot/<имя_репозитория>/snapshot_1?wait_for_completion=true&pretty"
    

    Процесс создания снапшота может занять длительное время. Отслеживайте ход выполнения операции с помощью инструментов Elasticsearch, например:

    curl -X GET \
         "https://<FQDN_кластера-источника>:9200/_snapshot/<имя_репозитория>/snapshot_1/_status?pretty"
    

Восстановите снапшот в кластере-приемникеВосстановите снапшот в кластере-приемнике

  1. Настройте доступ к бакету со снапшотами для кластера-приемника. Используйте созданный ранее сервисный аккаунт.

  2. Подключите к кластеру-приемнику бакет Object Storage в качестве хранилища снапшотов:

    curl "https://admin:<пароль_пользователя_admin>@<FQDN_кластера-приемника>:9200/_snapshot/<имя_репозитория>" \
         -X PUT \
         -H 'Content-Type: application/json' -d '
           {
             "type": "s3",
             "settings": {
               "bucket": "<имя_бакета>",
               "endpoint": "storage.yandexcloud.net"
             }
           }'
    
  3. Выберите способ восстановления индексов на кластере-приемнике:

    При настройках по умолчанию попытка восстановления индекса завершится неудачей, если в кластере уже открыт индекс с тем же именем. Даже если кластер Managed Service for Elasticsearch не содержит пользовательских данных, в нем есть открытые системные индексы (такие как .apm-custom-link, .kibana_* и другие), что может помешать восстановлению. Чтобы этого избежать, воспользуйтесь одной из политик восстановления:

    • Только пользовательские индексы — существующие системные индексы не переносятся, в процессе импорта участвую только индексы, созданные на кластере-источнике пользователем.

    • Delete and restore — существующие индексы закрываются и удаляются, вместо них создаются новые пустые с такими же именами, после чего наполняются данными из снапшота.

    • Rename on restore — существующие индексы не затрагиваются, создаются новые с измененными именами. Данные из снапшота восстанавливаются в новые индексы.

    Важно

    Закрытие всех индексов приведет к временной неработоспособности Kibana. После того как будут открыты системные индексы, Kibana вновь станет доступна.

    Например, эта команда закроет все индексы в кластере-приемнике:

    curl -X POST \
         "https://admin:<пароль_пользователя_admin>@<FQDN_кластера-приемника>:9200/_all/_close?pretty"
    

    Пример восстановления снапшота целиком:

    curl -X POST \
         "https://admin:<пароль_пользователя_admin>@<FQDN_кластера-приемника>:9200/_snapshot/<имя_репозитория>/snapshot_1/_restore"
    
  4. Запустите восстановление из снапшота на кластере-приемнике. Можно восстановить весь снапшот или отдельные индексы. Подробнее см. в документации Elasticsearch.

    Пример восстановления снапшота с указанием пользовательских индексов, которые нужно восстановить в кластере-приемнике:

    curl -X POST \
         -H 'Content-Type: application/json' 'https://admin:<пароль_пользователя_admin>@<FQDN_кластера-приемника>:9200/_snapshot/<имя_репозитория>/snapshot_1/_restore' -d '
         {
           "indices": "<список_индексов>"
         }'
    

    Где список индексов — список восстанавливаемых индексов через запятую, например my_index*, my_index_2.*. Перенос только пользовательских индексов позволит избежать ошибок при восстановлении снапшота — системные индексы не затрагиваются.

    Процесс восстановления может занять длительное время. Отслеживайте ход выполнения операции с помощью инструментов Elasticsearch, например:

    curl -X GET \
         "https://admin:<пароль_пользователя_admin>@<FQDN_кластера-приемника>:9200/_snapshot/<имя_репозитория>/snapshot_1/_status?pretty"
    
  5. При необходимости после завершения операции восстановления откройте все закрытые индексы.

    Например, эта команда откроет все индексы в кластере-приемнике:

    curl -X POST \
         "https://admin:<пароль_пользователя_admin>@<FQDN_кластера-приемника>:9200/_all/_open?pretty"
    

Закончите миграциюЗакончите миграцию

  1. Убедитесь, что все нужные данные перенесены в кластер-приемник Managed Service for Elasticsearch.

    Это можно сделать, например, с помощью Kibana.

  2. При необходимости отключите репозиторий снапшотов на стороне кластера-источника и кластера-приемника.

Удалите созданные ресурсыУдалите созданные ресурсы

Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:

Вручную
Terraform
  • Удалите сервисный аккаунт
  • Удалите снапшоты из бакета и затем удалите бакет целиком.
  • Удалите кластер Managed Service for Elasticsearch.
  1. В терминале перейдите в директорию с планом инфраструктуры.

    Важно

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

  2. Удалите ресурсы:

    1. Выполните команду:

      terraform destroy
      
    2. Подтвердите удаление ресурсов и дождитесь завершения операции.

    Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.

Была ли статья полезна?

Предыдущая
Все руководства
Следующая
Миграция данных в Yandex Managed Service for OpenSearch
Проект Яндекса
© 2025 ООО «Яндекс.Облако»