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

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

  • Роли для создания кластера
  • Создать кластер
  • Создать копию кластера
  • Примеры
  • Управление параметрами подключения к базе данных с Connection Manager
  1. Пошаговые инструкции
  2. Кластеры
  3. Создание кластера

Создание кластера OpenSearch

Статья создана
Yandex Cloud
Улучшена
Обновлена 21 апреля 2025 г.
  • Роли для создания кластера
  • Создать кластер
  • Создать копию кластера
  • Примеры
  • Управление параметрами подключения к базе данных с Connection Manager

Кластер Managed Service for OpenSearch — это группа из нескольких связанных друг с другом хостов OpenSearch и Dashboards. Кластер обеспечивает высокую производительность поиска путем распределения задач поиска и индексации по всем хостам кластера с ролью DATA. Подробнее о ролях в кластере см. в разделе Роли хостов.

Доступные типы диска зависят от выбранного класса хостов.

Подробнее см. в разделе Взаимосвязь ресурсов сервиса.

Роли для создания кластераРоли для создания кластера

Для создания кластера Managed Service for OpenSearch нужна роль vpc.user и роль managed-opensearch.editor или выше.

Если вы хотите привязать сервисный аккаунт к кластеру (например, для работы с Yandex Object Storage), вашему аккаунту в Yandex Cloud нужна роль iam.serviceAccounts.user или выше.

О назначении ролей читайте в документации Yandex Identity and Access Management.

Создать кластерСоздать кластер

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

Консоль управления
CLI
Terraform
REST API
gRPC API

Чтобы создать кластер Managed Service for OpenSearch:

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

  2. Выберите сервис Managed Service for OpenSearch.

  3. Нажмите кнопку Создать кластер.

  4. В блоке Базовые параметры:

    1. Введите имя кластера. Оно должно быть уникальным в рамках каталога.

    2. (Опционально) Введите описание кластера.

    3. Выберите окружение, в котором нужно создать кластер (после создания кластера окружение изменить невозможно):

      • PRODUCTION — для стабильных версий ваших приложений.
      • PRESTABLE — для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
    4. Выберите версию OpenSearch.

    5. Выберите плагины, которые нужно установить в кластер.

  5. В блоке Сетевые настройки выберите облачную сеть для размещения кластера и группы безопасности для сетевого трафика кластера. Может потребоваться дополнительная настройка групп безопасности для того, чтобы можно было подключаться к кластеру.

  6. В блоке Группа виртуальных хостов 1 задайте конфигурацию группы хостов OpenSearch:

    1. Выберите тип группы хостов: OpenSearch.

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

    3. Выберите роли хостов DATA и MANAGER.

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

      Класс хостов определяет технические характеристики виртуальных машин, на которых будут развернуты ноды OpenSearch. Все доступные варианты перечислены в разделе Классы хостов.

    5. Выберите тип диска и объем хранилища, который будет использоваться для данных.

      От выбранного типа зависит, с каким шагом можно будет изменить размер диска:

      • Сетевые HDD- и SSD-диски — с шагом 1 ГБ.
      • Локальные SSD-диски:
        • для платформы Intel Cascade Lake — с шагом 100 ГБ;
        • для платформы Intel Ice Lake — с шагом 368 ГБ.
      • Нереплицируемые SSD-диски — с шагом 93 ГБ.
    6. (Опционально) В блоке Автоматическое увеличение размера хранилища настройте автоматическое увеличение размера диска:

      • В поле Увеличивать размер задайте соответствующие условия, чтобы:

        • Размер хранилища увеличился в следующее окно обслуживания, когда хранилище окажется заполнено более чем на указанную долю (%).
        • Размер хранилища увеличился незамедлительно, когда хранилище окажется заполнено более чем на указанную долю (%).

        Можно задать оба условия, но порог для незамедлительного увеличения должен быть выше порога для увеличения в окно обслуживания.

      • В поле Максимальный размер хранилища укажите максимальный размер хранилища, который может быть установлен при автоматическом увеличении размера хранилища.

        Если заданный порог достигнут, размер хранилища увеличивается по-разному в зависимости от типа диска:

        • Для сетевых HDD- и SSD-дисков — на большее из двух значений: 20 ГБ или 20% от текущего размера диска.

        • Для нереплицируемых SSD-дисков — на 93 ГБ.

        • Для локальных SSD-дисков:

          • В кластере на платформе Intel Cascade Lake — на 100 ГБ.
          • В кластере на платформе Intel Ice Lake — на 368 ГБ.

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

        Важно

        • Размер хранилища нельзя уменьшить.
        • Во время изменения размера хранилища хосты кластера будут недоступны.

      Если настроено увеличение хранилища в окно обслуживания, настройте расписание окна обслуживания.

    7. Укажите расположение хостов по зонам доступности и подсетям.

    8. Выберите количество создаваемых хостов.

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

      Совет

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

    Важно

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

  7. При необходимости задайте конфигурацию группы хостов Dashboards в блоке Группа виртуальных хостов 2:

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

    2. Настройте хранилище по аналогии с хостами OpenSearch.

    3. Укажите расположение хостов по зонам доступности и подсетям.

    4. Выберите количество создаваемых хостов.

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

      Совет

      OpenSearch Dashboards можно воспользоваться, даже если публичный доступ к хостам запросить невозможно (например, из соображений безопасности). Для этого настройте проксирование соединений через виртуальную машину в Yandex Compute Cloud, которая находится в той же сети, что и кластер. Подробнее см. в разделе Подключение к OpenSearch Dashboards.

  8. При необходимости добавьте еще одну или несколько групп хостов, нажав кнопку Добавить группу виртуальных хостов.

  9. В блоке Сервисные настройки:

    1. Укажите пароль для пользователя admin.

      Это специальный пользователь, который необходим для управления кластером и не может быть удален. Он наделен ролью superuser и может выполнять любые действия с кластером.

      Совет

      Для выполнения повседневных задач рекомендуется создавать отдельных пользователей. Подробнее см. в разделе Управление пользователями OpenSearch.

    2. При необходимости измените дополнительные настройки кластера:

      • Окно обслуживания — настройки времени технического обслуживания:

        • Чтобы разрешить проведение технического обслуживания в любое время, выберите пункт произвольное (по умолчанию).
        • Чтобы указать предпочтительное время начала обслуживания, выберите пункт по расписанию и укажите нужные день недели и час дня по UTC. Например, можно выбрать время, когда кластер наименее загружен.

        Операции по техническому обслуживанию проводятся для включенных и выключенных кластеров. Они могут включать в себя: обновление СУБД, применение патчей и так далее.

      • Сервисный аккаунт — аккаунт для доступа к Yandex Object Storage в качестве репозитория снапшотов OpenSearch. Подробнее о сервисных аккаунтах см. в документации Yandex Identity and Access Management.

      • Защита от удаления — управляет защитой кластера от непреднамеренного удаления.

        Включенная защита кластера от удаления не помешает удалить пользователя или подключиться к кластеру вручную и удалить данные.

  10. Нажмите кнопку Создать кластер.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы создать кластер Managed Service for OpenSearch:

  1. Посмотрите описание команды CLI для создания кластера:

    yc managed-opensearch cluster create --help
    
  2. Укажите параметры кластера в команде создания (в примере приведены не все доступные параметры):

    yc managed-opensearch cluster create \
       --name <имя_кластера> \
       --description <описание_кластера> \
       --labels <метки> \
       --environment <окружение:_production_или_prestable> \
       --network-name <имя_сети> \
       --security-group-ids <идентификаторы_групп_безопасности> \
       --service-account-name <имя_сервисного_аккаунта> \
       --delete-protection \
       --maintenance schedule=<тип_технического_обслуживания>,`
                    `weekday=<день_недели>,`
                    `hour=<час_дня> \
       --version <версия_OpenSearch> \
       --read-admin-password \
       --data-transfer-access=<true_или_false> \
       --serverless-access=<true_или_false> \
       --plugins <OpenSearch_плагины> \
       --advanced-params <дополнительные_параметры> \
       --opensearch-node-group name=<имя_группы_хостов_OpenSearch>,`
                              `resource-preset-id=<класс_хостов>,`
                              `disk-size=<размер_диска_в_байтах>,`
                              `disk-type-id=<network-hdd|network-ssd|network-ssd-io-m3|network-ssd-nonreplicated|local-ssd>,`
                              `hosts-count=<количество_хостов_в_группе>,`
                              `zone-ids=<зоны_доступности>,`
                              `subnet-names=<имена_подсетей>,`
                              `assign-public-ip=<назначить_публичный_адрес:_true_или_false>,`
                              `roles=<роли_хостов> \
       --dashboards-node-group name=<имя_группы_хостов_Dashboards>,`
                              `resource-preset-id=<класс_хостов>,`
                              `disk-size=<размер_диска_в_байтах>,`
                              `disk-type-id=<network-ssd>,`
                              `hosts-count=<количество_хостов_в_группе>,`
                              `zone-ids=<зоны_доступности>,`
                              `subnet-names=<имена_подсетей>,`
                              `assign-public-ip=<назначить_публичный_адрес:_true_или_false>
    

    Где:

    • --labels — метки Yandex Cloud в формате <ключ>=<значение>. Используются для логического разделения ресурсов.

    • --environment — окружение:

      • production — для стабильных версий ваших приложений.
      • prestable — для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
    • --service-account-name — имя сервисного аккаунта для доступа к Yandex Object Storage в качестве репозитория снапшотов OpenSearch. Подробнее о сервисных аккаунтах см. в документации Yandex Identity and Access Management.

    • --deletion-protection — защита кластера от непреднамеренного удаления: true или false.

      Включенная защита кластера от удаления не помешает удалить пользователя или подключиться к кластеру вручную и удалить данные.

    • --maintenance — настройки времени технического обслуживания:

      • Чтобы разрешить проведение технического обслуживания в любое время, не указывайте параметр --maintenance в команде (конфигурация по умолчанию) либо укажите --maintenance schedule=anytime.
      • Чтобы указать предпочтительное время начала обслуживания, укажите в команде параметр --maintenance schedule=weekly,weekday=<день_недели>,hour=<час_дня_по_UTC>. Тогда техническое обслуживание будет проходить каждую неделю в обозначенный день и время.

      Операции по обслуживанию проводятся для включенных и выключенных кластеров. Во время обслуживания могут, например, применяться патчи или обновляться СУБД.

    • --read-admin-password — пароль пользователя admin. Если указать параметр в команде, после ее ввода будет предложено ввести пароль.

    • --serverless-access — доступ из Yandex Serverless Containers: true или false.

    • --plugins — плагины OpenSearch, которые нужно установить в кластер.

    • --advanced-params — дополнительные параметры кластера. Возможные значения:

      • max-clause-count — максимально допустимое количество булевых выражений (boolean clauses) в запросе. Подробнее см. в документации OpenSearch.
      • fielddata-cache-size — объем кучи JVM, который выделен для структуры данных fielddata. Можно указать абсолютное значение или проценты, например, 512mb или 50%. Подробнее см. в документации OpenSearch.
      • reindex-remote-whitelist — список удаленных хостов, из индекса которых нужно скопировать документы для переиндексации. Укажите значение параметра в формате <адрес_хоста>:<порт>. Если нужно указать несколько хостов, перечислите значения через запятую. Подробнее см. в документации OpenSearch.
    • --opensearch-node-group — конфигурация группы хостов OpenSearch, где:

      • resource-preset-id — класс хостов. Он определяет технические характеристики виртуальных машин, на которых будут развернуты узлы OpenSearch. Все доступные варианты перечислены в разделе Классы хостов.

      • disk-size — размер диска в байтах. Минимальное и максимальное значения зависят от выбранного класса хостов.

      • disk-type-id — тип диска.

      • zone-ids — зоны доступности. Несколько зон указываются через запятую и в квадратных скобках. Например:

        zone-ids=[ru-central1-a,ru-central1-b,ru-central1-d]
        
      • subnet-names — имена подсетей в указанных зонах доступности. Несколько подсетей указываются через запятую и в квадратных скобках. Например:

        subnet-names=[default-ru-central1-a,default-ru-central1-b,default-ru-central1-d]
        

        Вместо параметра subnet-names можно указать параметр subnet-ids с идентификаторами подсетей. Несколько идентификаторов указываются через запятую и в квадратных скобках. Например:

        subnet-ids=[e9bp8qmchqh2********,e2l963gkhobo********,fl8klaabecc3********]
        
      • roles — роли хостов. Возможные значения:

        • data — предоставляется только роль DATA;
        • manager — предоставляется только роль MANAGER;
        • data+manager или manager+data — предоставляются обе роли.

        Совет

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

    • --dashboards-node-group — конфигурация группы хостов Dashboards. Настраивается так же, как группа хостов OpenSearch, за исключением ролей хостов. Для группы Dashboards роли настраивать не нужно.

Terraform позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.

Terraform распространяется под лицензией Business Source License, а провайдер Yandex Cloud для Terraform — под лицензией MPL-2.0.

Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform или в зеркале.

Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.

Чтобы создать кластер Managed Service for OpenSearch:

  1. Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:

    • Кластер БД — описание кластера Managed Service for OpenSearch и его хостов.

    • Сеть — описание облачной сети, в которой будет расположен кластер. Если подходящая сеть у вас уже есть, описывать ее повторно не нужно.

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

    Пример структуры конфигурационного файла:

    resource "yandex_mdb_opensearch_cluster" "<имя_кластера>" {
      name                = "<имя_кластера>"
      environment         = "<окружение>"
      network_id          = "<идентификатор_сети>"
      security_group_ids  = ["<список_идентификаторов_групп_безопасности>"]
      deletion_protection = "<защита_кластера_от_удаления>"
    
      config {
    
        version        = "<версия_OpenSearch>"
        admin_password = "<пароль_пользователя-администратора>"
    
        opensearch {
          node_groups {
            name             = "<имя_группы_виртуальных_хостов>"
            assign_public_ip = <публичный_доступ>
            hosts_count      = <количество_хостов>
            zone_ids         = ["<список_зон_доступности>"]
            subnet_ids       = ["<список_идентификаторов подсетей>"]
            roles            = ["<список_ролей>"]
            resources {
              resource_preset_id = "<класс_хоста>"
              disk_size          = <размер_хранилища_в_байтах>
              disk_type_id       = "<тип_диска>"
            }
          }
    
          plugins = ["<список_имен_плагинов>"]
    
        }
    
        dashboards {
          node_groups {
            name             = "<имя_группы_виртуальных_хостов>"
            assign_public_ip = <публичный_доступ>
            hosts_count      = <количество_хостов>
            zone_ids         = ["<список_зон_доступности>"]
            subnet_ids       = ["<список_идентификаторов подсетей>"]
            resources {
              resource_preset_id = "<класс_хоста>"
              disk_size          = <размер_хранилища_в_байтах>
              disk_type_id       = "<тип_диска>"
            }
          }
        }
      }
      maintenance_window {
        type = <тип_технического_обслуживания>
        day  = <день_недели>
        hour = <час_дня>
      }
    }
    
    resource "yandex_vpc_network" "<имя_сети>" { 
      name = "<имя_сети>"
    }
    
    resource "yandex_vpc_subnet" "<имя_подсети>" {
      name           = "<имя_подсети>"
      zone           = "<зона_доступности>"
      network_id     = "<идентификатор_сети>"
      v4_cidr_blocks = ["<диапазон>"]
    }
    

    Где:

    • environment — окружение: PRESTABLE или PRODUCTION.

    • deletion_protection — защита кластера от непреднамеренного удаления: true или false.

      Включенная защита кластера от удаления не помешает удалить пользователя или подключиться к кластеру вручную и удалить данные.

    • assign_public_ip — публичный доступ к хосту: true или false.

    • roles — роли хостов: DATA и MANAGER.

    • maintenance_window — время технического обслуживания (в т. ч. для выключенных кластеров):

      • type — тип технического обслуживания. Принимает значения:
        • ANYTIME — в любое время.
        • WEEKLY — по расписанию.
      • day — день недели для типа WEEKLY в формате DDD. Например, MON.
      • hour — час дня по UTC для типа WEEKLY в формате HH. Например, 21.

    Полный список доступных для изменения полей конфигурации кластера Managed Service for OpenSearch см. в документации провайдера Terraform.

  2. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

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

      terraform validate
      

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

  3. Создайте кластер.

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

      terraform plan
      

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

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

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

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

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

    Ограничения по времени

    Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for OpenSearch:

    • создание, в том числе путем восстановления из резервной копии, — 30 минут;
    • изменение — 60 минут;
    • удаление — 15 минут.

    Операции, длящиеся дольше указанного времени, прерываются.

    Как изменить эти ограничения?

    Добавьте к описанию кластера блок timeouts, например:

    resource "yandex_mdb_opensearch_cluster" "<имя_кластера>" {
      ...
      timeouts {
        create = "1h30m" # Полтора часа
        update = "2h"    # 2 часа
        delete = "30m"   # 30 минут
      }
    }
    
  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Создайте файл body.json и добавьте в него следующее содержимое:

    {
        "folderId": "<идентификатор_каталога>",
        "name": "<имя_кластера>",
        "environment": "<окружение>",
        "networkId": "<идентификатор_сети>",
        "securityGroupIds": [
            "<идентификатор_группы_безопасности_1>",
            "<идентификатор_группы_безопасности_2>",
            ...
            "<идентификатор_группы_безопасности_N>"
        ],
        "serviceAccountId": "<идентификатор_сервисного_аккаунта>",
        "deletionProtection": <защита_кластера_от_удаления:_true_или_false>,
        "configSpec": {
            "version": "<версия_OpenSearch>",
            "adminPassword": "<пароль_пользователя-администратора>",
            "opensearchSpec": {
                "plugins": [
                    "<плагин_OpenSearch_1>",
                    "<плагин_OpenSearch_2>",
                    ...
                    "<плагин_OpenSearch_N>"
                ],
                "nodeGroups": [
                    {
                        "name": "<название_группы_хостов>",
                        "resources": {
                            "resourcePresetId": "<класс_хостов>",
                            "diskSize": "<размер_хранилища_в_байтах>",
                            "diskTypeId": "<тип_диска>"
                        },
                        "roles": ["<роль_1>","<роль_2>"],
                        "hostsCount": "<число_хостов>",
                        "zoneIds": [
                            "<зона_доступности_1>",
                            "<зона_доступности_2>",
                            "<зона_доступности_3>"
                        ],
                        "subnetIds": [
                            "<идентификатор_подсети_1>",
                            "<идентификатор_подсети_2>",
                            "<идентификатор_подсети_3>"
                        ],
                        "assignPublicIp": <публичный_адрес_хоста:_true_или_false>,
                        "diskSizeAutoscaling": {
                            "plannedUsageThreshold": "<процент_для_планового_увеличения>",
                            "emergencyUsageThreshold": "<процент_для_незамедлительного_увеличения>",
                            "diskSizeLimit": "<максимальный_размер_хранилища_в_байтах>"
                        }
                    },
                    ...
                ]
            },
            "dashboardsSpec": {
                "nodeGroups": [
                    {
                        "name": "<название_группы_хостов>",
                        "resources": {
                            "resourcePresetId": "<класс_хостов>",
                            "diskSize": "<размер_хранилища_в_байтах>",
                            "diskTypeId": "<тип_диска>"
                        },
                        "hostsCount": "<число_хостов>",
                        "zoneIds": ["<зона_доступности>"],
                        "subnetIds": ["<идентификатор_подсети>"],
                        "assignPublicIp": <публичный_адрес_хоста:_true_или_false>,
                        "diskSizeAutoscaling": {
                            "plannedUsageThreshold": "<процент_для_планового_увеличения>",
                            "emergencyUsageThreshold": "<процент_для_незамедлительного_увеличения>",
                            "diskSizeLimit": "<максимальный_размер_хранилища_в_байтах>"
                        }
                    }
                ]
            },
            "access": {
                "dataTransfer": <доступ_из_Data_Transfer:_true_или_false>,
                "serverless": <доступ_из_Serverless_Containers:_true_или_false>
            }
        },
        "maintenanceWindow": {
            "weeklyMaintenanceWindow": {
                "day": "<день_недели>",
                "hour": "<час>"
            }
        }
    }
    

    Где:

    • folderId — идентификатор каталога. Его можно запросить со списком каталогов в облаке.

    • name — имя кластера.

    • environment — окружение кластера: PRODUCTION или PRESTABLE.

    • networkId — идентификатор сети, в которой будет размещен кластер.

    • securityGroupIds — идентификаторы групп безопасности.

    • serviceAccountId — идентификатор сервисного аккаунта, используемого для работы с кластером.

    • deletionProtection — защита кластера от непреднамеренного удаления.

      Включенная защита кластера от удаления не помешает удалить пользователя или подключиться к кластеру вручную и удалить данные.

    • configSpec — настройки кластера:

      • version — версия OpenSearch.

      • adminPassword — пароль пользователя admin.

      • opensearchSpec — настройки групп хостов OpenSearch:

        • plugins — список плагинов OpenSearch, которые надо установить в кластер дополнительно.

        • nodeGroups — настройки хостов в виде массива элементов. Каждый элемент соответствует отдельной группе хостов и имеет следующую структуру:

          • name — имя группы хостов.

          • resources — ресурсы кластера:

            • resourcePresetId — класс хостов;
            • diskSize — размер диска в байтах;
            • diskTypeId — тип диска.
          • roles — список ролей хостов. Кластер должен содержать хотя бы по одной группе хостов DATA и MANAGER. Это может быть одна группа, на которую назначены две роли, или несколько групп с разными ролями.

          • hostsCount — количество хостов в группе. Миниальное число хостов DATA — один, хостов MANAGER — три.

          • zoneIds — список зон доступности, где размещаются хосты кластера.

          • subnetIds — список идентификаторов подсетей.

          • assignPublicIp — разрешение на подключение к хосту из интернета.

          • diskSizeAutoscaling — настройки автоматического увеличения размера хранилища:

            • plannedUsageThreshold — процент заполнения хранилища, при котором хранилище будет увеличено в следующее окно обслуживания.

              Значение задается в процентах от 0 до 100. По умолчанию — 0 (автоматическое расширение отключено).

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

            • emergencyUsageThreshold — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.

              Значение задается в процентах от 0 до 100. По умолчанию — 0 (автоматическое расширение отключено). Должно быть не меньше значения plannedUsageThreshold.

            • diskSizeLimit — максимальный размер хранилища (в байтах), который может быть установлен при достижении одного из заданных процентов заполнения.

      • dashboardsSpec — настройки групп хостов Dashboards. Содержат параметр nodeGroups, структура которого совпадает со структурой opensearchSpec.nodeGroups. Исключение — параметр roles: у хостов Dashboards есть только одна роль DASHBOARDS, поэтому ее не нужно указывать.

      • access — настройки доступа кластера к следующим сервисам Yandex Cloud:

        • dataTransfer — Yandex Data Transfer;
        • serverless — Yandex Serverless Containers.
    • maintenance_window.weeklyMaintenanceWindow — расписание окна технического обслуживания:

      • day — день недели в формате DDD, когда должно проходить обслуживание.
      • hour — час в формате HH, когда должно проходить обслуживание. Возможные значения: от 1 до 24. Задается в часовом поясе UTC.
  3. Воспользуйтесь методом Cluster.Create и выполните запрос, например, с помощью cURL:

    curl \
        --request POST \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --header "Content-Type: application/json" \
        --url 'https://mdb.api.cloud.yandex.net/managed-opensearch/v1/clusters' \
        --data "@body.json"
    
  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Создайте файл body.json и добавьте в него следующее содержимое:

    {
        "folder_id": "<идентификатор_каталога>",
        "name": "<имя_кластера>",
        "environment": "<окружение>",
        "network_id": "<идентификатор_сети>",
        "security_group_ids": [
            "<идентификатор_группы_безопасности_1>",
            "<идентификатор_группы_безопасности_2>",
            ...
            "<идентификатор_группы_безопасности_N>"
        ],
        "service_account_id": "<идентификатор_сервисного_аккаунта>",
        "deletion_protection": <защита_кластера_от_удаления:_true_или_false>,
        "config_spec": {
            "version": "<версия_OpenSearch>",
            "admin_password": "<пароль_пользователя-администратора>",
            "opensearch_spec": {
                "plugins": [
                    "<плагин_OpenSearch_1>",
                    "<плагин_OpenSearch_2>",
                    ...
                    "<плагин_OpenSearch_N>"
                ],
                "node_groups": [
                    {
                        "name": "<название_группы_хостов>",
                        "resources": {
                            "resource_preset_id": "<класс_хостов>",
                            "disk_size": "<размер_хранилища_в_байтах>",
                            "disk_type_id": "<тип_диска>"
                        },
                        "roles": ["<роль_1>","<роль_2>"],
                        "hosts_count": "<число_хостов>",
                        "zone_ids": [
                            "<зона_доступности_1>",
                            "<зона_доступности_2>",
                            "<зона_доступности_3>"
                        ],
                        "subnet_ids": [
                            "<идентификатор_подсети_1>",
                            "<идентификатор_подсети_2>",
                            "<идентификатор_подсети_3>"
                        ],
                        "assign_public_ip": <публичный_адрес_хоста:_true_или_false>,
                        "disk_size_autoscaling": {
                            "planned_usage_threshold": "<процент_для_планового_увеличения>",
                            "emergency_usage_threshold": "<процент_для_незамедлительного_увеличения>",
                            "disk_size_limit": "<максимальный_размер_хранилища_в_байтах>"
                        }
                    },
                    ...
                ]
            },
            "dashboards_spec": {
                "node_groups": [
                    {
                        "name": "<название_группы_хостов>",
                        "resources": {
                            "resource_preset_id": "<класс_хостов>",
                            "disk_size": "<размер_хранилища_в_байтах>",
                            "disk_type_id": "<тип_диска>"
                        },
                        "hosts_count": "<число_хостов>",
                        "zone_ids": ["<зона_доступности>"],
                        "subnet_ids": ["<идентификатор_подсети>"],
                        "assign_public_ip": <публичный_адрес_хоста:_true_или_false>,
                        "disk_size_autoscaling": {
                            "planned_usage_threshold": "<процент_для_планового_увеличения>",
                            "emergency_usage_threshold": "<процент_для_незамедлительного_увеличения>",
                            "disk_size_limit": "<максимальный_размер_хранилища_в_байтах>"
                        }
                    }
                ]
            },
            "access": {
                "data_transfer": <доступ_из_Data_Transfer:_true_или_false>,
                "serverless": <доступ_из_Serverless_Containers:_true_или_false>
            }
        },
        "maintenance_window": {
            "weekly_maintenance_window": {
                "day": "<день_недели>",
                "hour": "<час>"
            }
        }
    }
    

    Где:

    • folder_id — идентификатор каталога. Его можно запросить со списком каталогов в облаке.

    • name — имя кластера.

    • environment — окружение кластера: PRODUCTION или PRESTABLE.

    • network_id — идентификатор сети, в которой будет размещен кластер.

    • security_group_ids — идентификаторы групп безопасности.

    • service_account_id — идентификатор сервисного аккаунта, используемого для работы с кластером.

    • deletion_protection — защита кластера от непреднамеренного удаления.

      Включенная защита кластера от удаления не помешает удалить пользователя или подключиться к кластеру вручную и удалить данные.

    • config_spec — настройки кластера:

      • version — версия OpenSearch.

      • admin_password — пароль пользователя admin.

      • opensearch_spec — настройки групп хостов OpenSearch:

        • plugins — список плагинов OpenSearch, которые надо установить в кластер дополнительно.

        • node_groups — настройки хостов в виде массива элементов. Каждый элемент соответствует отдельной группе хостов и имеет следующую структуру:

          • name — имя группы хостов.

          • resources — ресурсы кластера:

            • resource_preset_id — класс хостов;
            • disk_size — размер диска в байтах;
            • disk_type_id — тип диска.
          • roles — список ролей хостов. Кластер должен содержать хотя бы по одной группе хостов DATA и MANAGER. Это может быть одна группа, на которую назначены две роли, или несколько групп с разными ролями.

          • hosts_count — количество хостов в группе. Миниальное число хостов DATA — один, хостов MANAGER — три.

          • zone_ids — список зон доступности, где размещаются хосты кластера.

          • subnet_ids — список идентификаторов подсетей.

          • assign_public_ip — разрешение на подключение к хосту из интернета.

          • disk_size_autoscaling — настройки автоматического увеличения размера хранилища:

            • planned_usage_threshold — процент заполнения хранилища, при котором хранилище будет увеличено в следующее окно обслуживания.

              Значение задается в процентах от 0 до 100. По умолчанию — 0 (автоматическое расширение отключено).

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

            • emergency_usage_threshold — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.

              Значение задается в процентах от 0 до 100. По умолчанию — 0 (автоматическое расширение отключено). Должно быть не меньше значения planned_usage_threshold.

            • disk_size_limit — максимальный размер хранилища (в байтах), который может быть установлен при достижении одного из заданных процентов заполнения.

      • dashboards_spec — настройки групп хостов Dashboards. Содержат параметр node_groups, структура которого совпадает со структурой opensearch_spec.node_groups. Исключение — параметр roles: у хостов Dashboards есть только одна роль DASHBOARDS, поэтому ее не нужно указывать.

      • access — настройки доступа кластера к следующим сервисам Yandex Cloud:

        • data_transfer — Yandex Data Transfer;
        • serverless — Yandex Serverless Containers.
    • maintenance_window.weekly_maintenance_window — расписание окна технического обслуживания:

      • day — день недели в формате DDD, когда должно проходить обслуживание.
      • hour — час в формате HH, когда должно проходить обслуживание. Возможные значения: от 1 до 24. Задается в часовом поясе UTC.
  4. Воспользуйтесь вызовом ClusterService.Create и выполните запрос, например, с помощью gRPCurl:

    grpcurl \
        -format json \
        -import-path ~/cloudapi/ \
        -import-path ~/cloudapi/third_party/googleapis/ \
        -proto ~/cloudapi/yandex/cloud/mdb/opensearch/v1/cluster_service.proto \
        -rpc-header "Authorization: Bearer $IAM_TOKEN" \
        -d @ \
        mdb.api.cloud.yandex.net:443 \
        yandex.cloud.mdb.opensearch.v1.ClusterService.Create \
        < body.json
    
  5. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Создать копию кластераСоздать копию кластера

Вы можете создать кластер OpenSearch, который будет обладать настройками созданного ранее кластера. Для этого конфигурация исходного кластера OpenSearch импортируется в Terraform. В результате вы можете либо создать идентичную копию, либо взять за основу импортированную конфигурацию и внести в нее изменения. Использовать импорт удобно, если исходный кластер OpenSearch обладает множеством настроек и нужно создать похожий на него кластер.

Чтобы создать копию кластера OpenSearch:

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

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

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

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

  5. В той же рабочей директории разместите файл с расширением .tf и содержимым:

    resource "yandex_mdb_opensearch_cluster" "old" { }
    
  6. Запишите идентификатор первоначального кластера OpenSearch в переменную окружения:

    export OPENSEARCH_CLUSTER_ID=<идентификатор_кластера>
    

    Идентификатор можно запросить вместе со списком кластеров в каталоге.

  7. Импортируйте настройки первоначального кластера OpenSearch в конфигурацию Terraform:

    terraform import yandex_mdb_opensearch_cluster.old ${OPENSEARCH_CLUSTER_ID}
    
  8. Получите импортированную конфигурацию:

    terraform show
    
  9. Скопируйте ее из терминала и вставьте в файл с расширением .tf.

  10. Расположите файл в новой директории imported-cluster.

  11. Измените скопированную конфигурацию так, чтобы из нее можно было создать новый кластер:

    • Укажите новое имя кластера в строке resource и параметре name.
    • Удалите параметры created_at, health, id и status.
    • В блок config добавьте параметр admin_password.
    • Если в блоке maintenance_window указано значение параметра type = "ANYTIME", удалите параметр hour.
    • (Опционально) Внесите дополнительные изменения, если вам нужна не идентичная, а кастомизированная копия.
  12. В директории imported-cluster получите данные для аутентификации.

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

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

  15. Проверьте корректность файлов конфигурации Terraform:

    terraform validate
    

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

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

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

      terraform plan
      

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

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

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

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

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

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

Ограничения по времени

Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for OpenSearch:

  • создание, в том числе путем восстановления из резервной копии, — 30 минут;
  • изменение — 60 минут;
  • удаление — 15 минут.

Операции, длящиеся дольше указанного времени, прерываются.

Как изменить эти ограничения?

Добавьте к описанию кластера блок timeouts, например:

resource "yandex_mdb_opensearch_cluster" "<имя_кластера>" {
  ...
  timeouts {
    create = "1h30m" # Полтора часа
    update = "2h"    # 2 часа
    delete = "30m"   # 30 минут
  }
}

ПримерыПримеры

CLI
Terraform

Создайте кластер Managed Service for OpenSearch с тестовыми характеристиками:

  • Имя — my-os-clstr.

  • Описание — My OS cluster.

  • Метка — label-key со значением label-value.

  • Окружение — production.

  • Имя сети — default.

  • Идентификатор группы безопасности — enp6saqnq4ie********.

  • Имя сервисного аккаунта — os-account.

  • Защита от удаления — отключена.

  • Время технического обслуживания — каждый понедельник с 13:00 до 14:00.

  • Версия OpenSearch — 2.8.

  • Пароль пользователя admin — указывается после ввода команды по созданию кластера.

  • Доступ к Data Transfer — включен.

  • Доступ к Serverless Containers — включен.

  • Подключенный плагин OpenSearch — analysis-icu.

  • Дополнительный параметр OpenSearch — fielddata-cache-size=50%.

  • Конфигурация группы узлов OpenSearch:

    • название группы — os-group;
    • класс хостов — s2.micro;
    • размер диска — 10737418240 (в байтах);
    • тип диска — network-ssd;
    • количество хостов — три;
    • зона доступности — ru-central1-a;
    • подсеть — default-ru-central1-a;
    • публичный адрес — выделен;
    • роли группы хостов — DATA и MANAGER.
  • Конфигурация группы хостов Dashboards:

    • название группы — dashboard-group;
    • класс хостов — s2.micro;
    • размер диска — 10737418240 (в байтах);
    • тип диска — network-ssd;
    • количество хостов — один;
    • зона доступности — ru-central1-a;
    • подсеть — default-ru-central1-a;
    • публичный адрес — выделен.

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

yc managed-opensearch cluster create \
   --name my-os-clstr \
   --description "My OS cluster" \
   --labels label-key=label-value \
   --environment production \
   --network-name default \
   --security-group-ids enp6saqnq4ie******** \
   --service-account-name os-account \
   --delete-protection \
   --maintenance schedule=weekly,`
                `weekday=mon,`
                `hour=14 \
   --version 2.8 \
   --read-admin-password \
   --data-transfer-access=true \
   --serverless-access=true \
   --plugins analysis-icu \
   --advanced-params fielddata-cache-size=50% \
   --opensearch-node-group name=os-group,`
                          `resource-preset-id=s2.micro,`
                          `disk-size=10737418240,`
                          `disk-type-id=network-ssd,`
                          `hosts-count=3,`
                          `zone-ids=ru-central1-a,`
                          `subnet-names=default-ru-central1-a,`
                          `assign-public-ip=true,`
                          `roles=data+manager \
   --dashboards-node-group name=dashboard-group,`
                          `resource-preset-id=s2.micro,`
                          `disk-size=10737418240,`
                          `disk-type-id=network-ssd,`
                          `hosts-count=1,`
                          `zone-ids=ru-central1-a,`
                          `subnet-names=default-ru-central1-a,`
                          `assign-public-ip=true

Создайте кластер Managed Service for OpenSearch с тестовыми характеристиками:

  • Имя — my-os-clstr.
  • Окружение — PRODUCTION.
  • Версия OpenSearch — 2.8.
  • Пароль пользователя admin — osadminpwd.
  • Имя группы узлов OpenSearch — os-group.
  • Класс хостов — s2.micro.
  • Размер диска — 10737418240 (в байтах).
  • Тип диска — network-ssd.
  • Количество хостов — 1.
  • Публичный адрес — выделен.
  • Роли группы хостов — DATA и MANAGER.
  • Время технического обслуживания — каждый понедельник с 13:00 до 14:00.
  • Имя сети — mynet.
  • Имя подсети — mysubnet.
  • Зона доступности — ru-central1-a.
  • Диапазон адресов — 10.1.0.0/16.
  • Имя группы безопасности — os-sg. Группа безопасности разрешает подключение к хосту кластера из любой сети (в том числе из интернета) по порту 9200.

Конфигурационный файл для такого кластера выглядит так:

resource "yandex_mdb_opensearch_cluster" "my-os-clstr" {
  name               = "my-os-clstr"
  environment        = "PRODUCTION"
  network_id         = yandex_vpc_network.mynet.id
  security_group_ids = [yandex_vpc_security_group.os-sg.id]

  config {

    version        = "2.8"
    admin_password = "osadminpwd"

    opensearch {
      node_groups {
        name             = "os-group"
        assign_public_ip = true
        hosts_count      = 1
        zone_ids         = ["ru-central1-a"]
        subnet_ids       = [yandex_vpc_subnet.mysubnet.id]
        roles            = ["DATA", "MANAGER"]
        resources {
          resource_preset_id = "s2.micro"
          disk_size          = 10737418240
          disk_type_id       = "network-ssd"
        }
      }
    }
  }
  maintenance_window {
    type = "WEEKLY"
    day  = "MON"
    hour = 14
  }
}

resource "yandex_vpc_network" "mynet" {
  name = "mynet"
}

resource "yandex_vpc_subnet" "mysubnet" {
  name           = "mysubnet"
  zone           = "ru-central1-a"
  network_id     = yandex_vpc_network.mynet.id
  v4_cidr_blocks = ["10.1.0.0/16"]
}

resource "yandex_vpc_security_group" "os-sg" {
  name       = "os-sg"
  network_id = yandex_vpc_network.mynet.id

  ingress {
    description    = "Allow connections to the Managed Service for OpenSearch cluster from the Internet"
    protocol       = "TCP"
    port           = 9200
    v4_cidr_blocks = ["0.0.0.0/0"]
  }

  egress {
    description    = "The rule allows all outgoing traffic"
    protocol       = "ANY"
    v4_cidr_blocks = ["0.0.0.0/0"]
    from_port      = 0
    to_port        = 65535
  }
}

Управление параметрами подключения к базе данных с Connection ManagerУправление параметрами подключения к базе данных с Connection Manager

Если вашему облаку или каталогу предоставлен доступ к Public Preview сервиса Connection Manager, то после создания кластера в вашем каталоге появится новая сущность — подключение для управления параметрами подключения к базам данных.

Пароли и другая чувствительная информация будет храниться в секрете Yandex Lockbox. Чтобы посмотреть, какие секреты хранят информацию о подключениях вашего кластера, выберите в вашем каталоге в списке сервисов Lockbox. На странице Секреты в колонке зависимостей секретов будет указан идентификатор вашего кластера.

Вы также можете настраивать доступ к подключениям в Connection Manager.

Чтобы настроить интеграцию с Connection Manager, обратитесь в техническую поддержку.

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

Предыдущая
Информация об имеющихся кластерах
Следующая
Подключение к кластеру
Проект Яндекса
© 2025 ООО «Яндекс.Облако»