Создание кластера OpenSearch
Примечание
В регионе Казахстан доступна только зона доступности kz1-a.
Примечание
В регионе Казахстан доступны только платформы standard-v3 (Intel Ice Lake) и standard-v3-t4i (Intel Ice Lake with T4i). Другие типы платформ, кластеры GPU и выделенные хосты недоступны.
Кластер Managed Service for OpenSearch — это группа из нескольких связанных друг с другом хостов OpenSearch и DashboardsDATA. Подробнее о ролях в кластере в разделе Роли хостов.
Доступные типы диска зависят от выбранного класса хостов.
Подробнее в разделе Взаимосвязь ресурсов сервиса.
Роли для создания кластера
Для создания кластера Managed Service for OpenSearch и работы с ним вашему аккаунту в Yandex Cloud нужны роли:
-
managed-opensearch.editor или выше — чтобы создать кластер;
-
mdb.viewer — чтобы просматривать кластеры управляемых баз данных (MDB) на дашборде в консоли управления
.
Если вы хотите привязать сервисный аккаунт к кластеру (например, для работы с Yandex Object Storage), вашему аккаунту в Yandex Cloud нужна роль iam.serviceAccounts.user или выше.
О назначении ролей читайте в документации Yandex Identity and Access Management.
Создать кластер
При создании кластера для каждой группы хостов указываются отдельные параметры. Для снижения нагрузки на хосты с ролью DATA рекомендуется выделять хосты с ролью MANAGER в отдельную группу.
Чтобы создать кластер Managed Service for OpenSearch:
-
В консоли управления
выберите каталог, в котором нужно создать кластер. -
Перейдите в сервис Managed Service for OpenSearch.
-
Нажмите кнопку Создать кластер.
-
В блоке Базовые параметры:
-
Введите имя кластера. Оно должно быть уникальным в рамках каталога.
-
(Опционально) Введите описание кластера.
-
Выберите окружение, в котором нужно создать кластер (после создания кластера окружение изменить невозможно):
PRODUCTION— для стабильных версий ваших приложений.PRESTABLE— для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
-
Выберите версию OpenSearch.
-
Выберите плагины, которые нужно установить в кластер.
-
-
В блоке Сетевые настройки выберите облачную сеть для размещения кластера и группы безопасности для сетевого трафика кластера. Может потребоваться дополнительная настройка групп безопасности для того, чтобы можно было подключаться к кластеру.
-
В блоке Группа виртуальных хостов 1 задайте конфигурацию группы хостов
OpenSearch:-
Выберите тип группы хостов:
OpenSearch. -
Введите имя группы хостов. Оно должно быть уникальным в кластере.
-
Выберите роли хостов
DATAиMANAGER. -
Выберите платформу, тип и класс хостов.
Класс хостов определяет технические характеристики виртуальных машин, на которых будут развернуты ноды OpenSearch. Все доступные варианты перечислены в разделе Классы хостов.
-
Выберите тип диска и объем хранилища, который будет использоваться для данных.
От выбранного типа зависит, с каким шагом можно будет изменить размер диска:
- Сетевые HDD- и SSD-диски — с шагом 1 ГБ.
- Локальные SSD-диски:
- для платформы Intel Cascade Lake — с шагом 100 ГБ;
- для платформ Intel Ice Lake и AMD Zen 4 — с шагом 368 ГБ.
- Нереплицируемые SSD-диски — с шагом 93 ГБ.
-
(Опционально) Выберите опцию Зашифрованный диск, чтобы зашифровать диск пользовательским ключом KMS.
-
Чтобы создать новый ключ, нажмите кнопку Создать.
-
Чтобы использовать созданный ранее ключ, выберите его в поле Ключ KMS.
Подробнее о шифровании дисков в разделе Хранилище.
-
-
(Опционально) Настройте автоматическое увеличение размера диска:
-
В поле Увеличивать размер задайте соответствующие условия, чтобы:
-
Размер хранилища увеличился в следующее окно обслуживания, когда хранилище окажется заполнено более чем на указанную долю (%). Если вы задали этот параметр, настройте расписание окна обслуживания.
-
Размер хранилища увеличился незамедлительно, когда хранилище окажется заполнено более чем на указанную долю (%).
Важно
Если заданы оба условия, порог для незамедлительного увеличения должен быть выше, чем для планового.
-
-
В поле Максимальный размер хранилища укажите максимальный размер хранилища после увеличения.
Важно
- Размер хранилища не может быть уменьшен после автоматического увеличения.
- Во время изменения размера хранилища хосты кластера будут недоступны.
-
-
Укажите расположение хостов по зонам доступности и подсетям.
-
Выберите количество создаваемых хостов.
-
Включите опцию Публичный доступ, если вы хотите, чтобы к хостам можно было подключаться через интернет.
-
-
При необходимости задайте конфигурацию группы хостов
Dashboardsв блоке Группа виртуальных хостов 2:-
Выберите платформу, тип и класс хостов.
-
Настройте хранилище по аналогии с хостами
OpenSearch. -
Укажите расположение хостов по зонам доступности и подсетям.
-
Выберите количество создаваемых хостов.
-
Включите опцию Публичный доступ, если вы хотите, чтобы к хостам можно было подключаться через интернет.
Совет
OpenSearch Dashboards можно воспользоваться, даже если публичный доступ к хостам запросить невозможно (например, из соображений безопасности). Для этого настройте проксирование соединений через виртуальную машину в Yandex Compute Cloud, которая находится в той же сети, что и кластер. Подробнее в разделе Подключение к OpenSearch Dashboards.
-
-
При необходимости добавьте еще одну или несколько групп хостов, нажав кнопку Добавить группу виртуальных хостов.
-
В блоке Сервисные настройки:
-
Укажите пароль для пользователя
admin.Пароль должен содержать 3 из 4 групп символов:
- строчные буквы латинского алфавита;
- заглавные буквы латинского алфавита;
- цифры;
- специальные символы.
Длина пароля — от 10 до 72 символов.
admin— это специальный пользователь, который необходим для управления кластером и не может быть удален. Он наделен рольюsuperuserи может выполнять любые действия с кластером.Совет
Для выполнения повседневных задач рекомендуется создавать отдельных пользователей. Подробнее в разделе Управление пользователями OpenSearch.
-
При необходимости измените дополнительные настройки кластера:
-
Обслуживание — настройки времени технического обслуживания:
- Чтобы разрешить проведение технического обслуживания в любое время, выберите пункт В любое время (по умолчанию).
- Чтобы указать предпочтительное время начала обслуживания, выберите пункт По расписанию и укажите день недели и интервал времени по UTC. Например, можно выбрать время, когда кластер наименее загружен.
Операции по техническому обслуживанию проводятся для включенных и выключенных кластеров. Они могут включать в себя: обновление СУБД, применение патчей и так далее.
-
Сервисный аккаунт — аккаунт для доступа к Yandex Object Storage в качестве репозитория снапшотов OpenSearch. Подробнее о сервисных аккаунтах в документации Yandex Identity and Access Management.
-
Защита от удаления — управляет защитой кластера от непреднамеренного удаления.
Включенная защита кластера от удаления не помешает удалить пользователя или подключиться к кластеру вручную и удалить данные.
-
-
-
Нажмите кнопку Создать кластер.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.
Чтобы создать кластер Managed Service for OpenSearch:
-
Посмотрите описание команды CLI для создания кластера:
yc managed-opensearch cluster create --help -
Укажите параметры кластера в команде создания (в примере приведены не все доступные параметры):
yc managed-opensearch cluster create \ --name <имя_кластера> \ --description <описание_кластера> \ --labels <метки> \ --environment <окружение> \ --network-name <имя_сети> \ --security-group-ids <идентификаторы_групп_безопасности> \ --service-account-name <имя_сервисного_аккаунта> \ --delete-protection \ --maintenance schedule=<тип_технического_обслуживания>,` `weekday=<день_недели>,` `hour=<порядковый_номер_часового_интервала> \ --disk-encryption-key-id <идентификатор_ключа_KMS> \ --version <версия_OpenSearch> \ --read-admin-password \ --serverless-access=<разрешить_доступ_из_Serverless_Containers> \ --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=<разрешить_публичный_доступ_к_хостам>,` `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=<разрешить_публичный_доступ_к_хостам>Где:
-
--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— настройки времени технического обслуживания (в т. ч. для выключенных кластеров). Передайте один из двух параметров:-
anytime— в любое время. -
weekly— по расписанию. Для этого значения дополнительно укажите:-
weekday— день недели:MON,TUE,WED,THU,FRI,SATилиSUN. -
hour— порядковый номер часового интервала по UTC: от1до24.Например,
1соответствует интервалу с00:00до01:00,5— с04:00до05:00.
-
-
-
--disk-encryption-key-id— шифрование диска пользовательским ключом KMS.Подробнее о шифровании дисков в разделе Хранилище.
-
--read-admin-password— пароль пользователяadmin. Если указать параметр в команде, после ее ввода будет предложено ввести пароль.Пароль должен содержать 3 из 4 групп символов:
- строчные буквы латинского алфавита;
- заглавные буквы латинского алфавита;
- цифры;
- специальные символы.
Длина пароля — от 10 до 72 символов.
admin— это специальный пользователь, который необходим для управления кластером и не может быть удален. Он наделен рольюsuperuserи может выполнять любые действия с кластером.Совет
Для выполнения повседневных задач рекомендуется создавать отдельных пользователей. Подробнее в разделе Управление пользователями OpenSearch.
-
--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— предоставляются обе роли.
-
-
--dashboards-node-group— конфигурация группы хостовDashboards. Настраивается так же, как группа хостовOpenSearch, за исключением ролей хостов. Для группыDashboardsроли настраивать не нужно.
-
Terraform
Terraform распространяется под лицензией Business Source License
Подробная информация о ресурсах провайдера в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, аутентифицируйтесь соответствующим способом.
Чтобы создать кластер Managed Service for OpenSearch:
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
-
Кластер БД — описание кластера Managed Service for OpenSearch и его хостов.
-
Сеть — описание облачной сети, в которой будет расположен кластер. Если подходящая сеть у вас уже есть, описывать ее повторно не нужно.
-
Подсети — описание подсетей, к которым будут подключены хосты кластера. Если подходящие подсети у вас уже есть, описывать их повторно не нужно.
Пример структуры конфигурационного файла:
resource "yandex_mdb_opensearch_cluster" "<имя_кластера>" { name = "<имя_кластера>" environment = "<окружение>" network_id = "<идентификатор_сети>" security_group_ids = ["<список_идентификаторов_групп_безопасности>"] disk_encryption_key_id = <идентификатор_ключа_KMS> 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. -
disk_encryption_key_id— шифрование диска пользовательским ключом KMS.Подробнее о шифровании дисков в разделе Хранилище.
-
deletion_protection— защита кластера от непреднамеренного удаления:trueилиfalse.Включенная защита кластера от удаления не помешает удалить пользователя или подключиться к кластеру вручную и удалить данные.
-
admin_password— пароль пользователяadmin.Пароль должен содержать 3 из 4 групп символов:
- строчные буквы латинского алфавита;
- заглавные буквы латинского алфавита;
- цифры;
- специальные символы.
Длина пароля — от 10 до 72 символов.
admin— это специальный пользователь, который необходим для управления кластером и не может быть удален. Он наделен рольюsuperuserи может выполнять любые действия с кластером.Совет
Для выполнения повседневных задач рекомендуется создавать отдельных пользователей. Подробнее в разделе Управление пользователями OpenSearch.
-
assign_public_ip— публичный доступ к хосту:trueилиfalse. -
roles— роли хостов:DATAиMANAGER. -
maintenance_window— время технического обслуживания (в т. ч. для выключенных кластеров):-
type— тип технического обслуживания. Принимает значения:ANYTIME— в любое время.WEEKLY— по расписанию.
-
day— день недели:MON,TUE,WED,THU,FRI,SATилиSUN. -
hour— порядковый номер часового интервала по UTC: от1до24.Например,
1соответствует интервалу с00:00до01:00,5— с04:00до05:00.
-
Полный список доступных для изменения полей конфигурации кластера Managed Service for OpenSearch в документации провайдера Terraform.
-
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Создайте кластер.
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for OpenSearch:
- создание, в том числе путем восстановления из резервной копии, — 30 минут;
- изменение — 60 минут;
- удаление — 15 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок
timeouts, например:resource "yandex_mdb_opensearch_cluster" "<имя_кластера>" { ... timeouts { create = "1h30m" # Полтора часа update = "2h" # 2 часа delete = "30m" # 30 минут } } -
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Создайте файл
body.jsonи добавьте в него следующее содержимое:{ "folderId": "<идентификатор_каталога>", "name": "<имя_кластера>", "environment": "<окружение>", "networkId": "<идентификатор_сети>", "securityGroupIds": [ "<идентификатор_группы_безопасности_1>", "<идентификатор_группы_безопасности_2>", ... "<идентификатор_группы_безопасности_N>" ], "serviceAccountId": "<идентификатор_сервисного_аккаунта>", "deletionProtection": <защитить_кластер_от_удаления>, "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": <разрешить_публичный_доступ_к_хостам>, "diskSizeAutoscaling": { "plannedUsageThreshold": "<процент_для_планового_увеличения>", "emergencyUsageThreshold": "<процент_для_незамедлительного_увеличения>", "diskSizeLimit": "<максимальный_размер_хранилища_в_байтах>" } }, ... ] }, "dashboardsSpec": { "nodeGroups": [ { "name": "<название_группы_хостов>", "resources": { "resourcePresetId": "<класс_хостов>", "diskSize": "<размер_хранилища_в_байтах>", "diskTypeId": "<тип_диска>" }, "hostsCount": "<число_хостов>", "zoneIds": ["<зона_доступности>"], "subnetIds": ["<идентификатор_подсети>"], "assignPublicIp": <разрешить_публичный_доступ_к_хостам>, "diskSizeAutoscaling": { "plannedUsageThreshold": "<процент_для_планового_увеличения>", "emergencyUsageThreshold": "<процент_для_незамедлительного_увеличения>", "diskSizeLimit": "<максимальный_размер_хранилища_в_байтах>" } } ] }, "access": { "dataTransfer": <разрешить_доступ_из_Data_Transfer>, "serverless": <разрешить_доступ_из_Serverless_Containers> } }, "maintenanceWindow": { "weeklyMaintenanceWindow": { "day": "<день_недели>", "hour": "<порядковый_номер_часового_интервала>" } } }Где:
-
folderId— идентификатор каталога. Его можно запросить со списком каталогов в облаке. -
name— имя кластера. -
environment— окружение кластера:PRODUCTIONилиPRESTABLE. -
networkId— идентификатор сети, в которой будет размещен кластер. -
securityGroupIds— идентификаторы групп безопасности. -
serviceAccountId— идентификатор сервисного аккаунта, используемого для работы с кластером. -
deletionProtection— защита кластера от непреднамеренного удаления:trueилиfalse.Включенная защита кластера от удаления не помешает удалить пользователя или подключиться к кластеру вручную и удалить данные.
-
configSpec— настройки кластера:-
version— версия OpenSearch. -
adminPassword— пароль пользователяadmin.Пароль должен содержать 3 из 4 групп символов:
- строчные буквы латинского алфавита;
- заглавные буквы латинского алфавита;
- цифры;
- специальные символы.
Длина пароля — от 10 до 72 символов.
admin— это специальный пользователь, который необходим для управления кластером и не может быть удален. Он наделен рольюsuperuserи может выполнять любые действия с кластером.Совет
Для выполнения повседневных задач рекомендуется создавать отдельных пользователей. Подробнее в разделе Управление пользователями OpenSearch.
-
opensearchSpec— настройки групп хостовOpenSearch:-
plugins— список плагинов OpenSearch, которые надо установить в кластер дополнительно. -
nodeGroups— настройки хостов в виде массива элементов. Каждый элемент соответствует отдельной группе хостов и имеет следующую структуру:-
name— имя группы хостов. -
resources— ресурсы кластера:resourcePresetId— класс хостов;diskSize— размер диска в байтах;diskTypeId— тип диска.
-
roles— список ролей хостов. Кластер должен содержать хотя бы по одной группе хостовDATAиMANAGER. Это может быть одна группа, на которую назначены две роли, или несколько групп с разными ролями. -
hostsCount— количество хостов в группе. Минимальное число хостовDATA— один, хостовMANAGER— три. -
zoneIds— список зон доступности, где размещаются хосты кластера. -
subnetIds— список идентификаторов подсетей. -
assignPublicIp— разрешение на подключение к хосту из интернета:trueилиfalse. -
diskSizeAutoscaling— настройки автоматического увеличения размера хранилища:-
plannedUsageThreshold— процент заполнения хранилища, при котором хранилище будет увеличено в следующее окно обслуживания.Значение задается в процентах от
0до100. По умолчанию —0(автоматическое расширение отключено).Если вы задали этот параметр, настройте расписание окна технического обслуживания в параметре
maintenanceWindow. -
emergencyUsageThreshold— процент заполнения хранилища, при котором хранилище будет увеличено немедленно.Значение задается в процентах от
0до100. По умолчанию —0(автоматическое расширение отключено).Важно
Если заданы оба порога, значение
emergencyUsageThresholdдолжно быть не меньшеplannedUsageThreshold. -
diskSizeLimit— максимальный размер хранилища (в байтах), который может быть установлен при достижении одного из заданных процентов заполнения.
Важно
- Размер хранилища не может быть уменьшен после автоматического увеличения.
- Во время изменения размера хранилища хосты кластера будут недоступны.
-
-
-
-
dashboardsSpec— настройки групп хостовDashboards. Содержат параметрnodeGroups, структура которого совпадает со структуройopensearchSpec.nodeGroups. Исключение — параметрroles: у хостовDashboardsесть только одна рольDASHBOARDS, поэтому ее не нужно указывать. -
access— настройки доступа к кластеру из следующих сервисов Yandex Cloud:serverless— Yandex Serverless Containers.
Возможные значения настроек:
trueилиfalse.
-
-
maintenance_window— расписание окна технического обслуживания (в т. ч. для выключенных кластеров). Передайте один из двух параметров:-
anytime— техническое обслуживание проводится в любое время. -
weeklyMaintenanceWindow— техническое обслуживание проводится раз в неделю в указанное время:-
day— день недели:MON,TUE,WED,THU,FRI,SATилиSUN. -
hour— порядковый номер часового интервала по UTC: от1до24.Например,
1соответствует интервалу с00:00до01:00,5— с04:00до05:00.
-
-
-
-
Воспользуйтесь методом Cluster.Create и выполните запрос, например с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-opensearch/v1/clusters' \ --data "@body.json" -
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Создайте файл
body.jsonи добавьте в него следующее содержимое:{ "folder_id": "<идентификатор_каталога>", "name": "<имя_кластера>", "environment": "<окружение>", "network_id": "<идентификатор_сети>", "security_group_ids": [ "<идентификатор_группы_безопасности_1>", "<идентификатор_группы_безопасности_2>", ... "<идентификатор_группы_безопасности_N>" ], "service_account_id": "<идентификатор_сервисного_аккаунта>", "deletion_protection": <защитить_кластер_от_удаления>, "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": <разрешить_публичный_доступ_к_хостам>, "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": <разрешить_публичный_доступ_к_хостам>, "disk_size_autoscaling": { "planned_usage_threshold": "<процент_для_планового_увеличения>", "emergency_usage_threshold": "<процент_для_незамедлительного_увеличения>", "disk_size_limit": "<максимальный_размер_хранилища_в_байтах>" } } ] }, "access": { "serverless": <разрешить_доступ_из_Serverless_Containers> } }, "maintenance_window": { "weekly_maintenance_window": { "day": "<день_недели>", "hour": "<порядковый_номер_часового_интервала>" } } }Где:
-
folder_id— идентификатор каталога. Его можно запросить со списком каталогов в облаке. -
name— имя кластера. -
environment— окружение кластера:PRODUCTIONилиPRESTABLE. -
network_id— идентификатор сети, в которой будет размещен кластер. -
security_group_ids— идентификаторы групп безопасности. -
service_account_id— идентификатор сервисного аккаунта, используемого для работы с кластером. -
deletion_protection— защита кластера от непреднамеренного удаления:trueилиfalse.Включенная защита кластера от удаления не помешает удалить пользователя или подключиться к кластеру вручную и удалить данные.
-
config_spec— настройки кластера:-
version— версия OpenSearch. -
admin_password— пароль пользователяadmin.Пароль должен содержать 3 из 4 групп символов:
- строчные буквы латинского алфавита;
- заглавные буквы латинского алфавита;
- цифры;
- специальные символы.
Длина пароля — от 10 до 72 символов.
admin— это специальный пользователь, который необходим для управления кластером и не может быть удален. Он наделен рольюsuperuserи может выполнять любые действия с кластером.Совет
Для выполнения повседневных задач рекомендуется создавать отдельных пользователей. Подробнее в разделе Управление пользователями OpenSearch.
-
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— разрешение на подключение к хосту из интернета:trueилиfalse. -
disk_size_autoscaling— настройки автоматического увеличения размера хранилища:-
planned_usage_threshold— процент заполнения хранилища, при котором хранилище будет увеличено в следующее окно обслуживания.Значение задается в процентах от
0до100. По умолчанию —0(автоматическое расширение отключено).Если вы задали этот параметр, настройте расписание окна технического обслуживания в параметре
maintenance_window. -
emergency_usage_threshold— процент заполнения хранилища, при котором хранилище будет увеличено немедленно.Значение задается в процентах от
0до100. По умолчанию —0(автоматическое расширение отключено).Важно
Если заданы оба порога, значение
emergency_usage_thresholdдолжно быть не меньшеplanned_usage_threshold. -
disk_size_limit— максимальный размер хранилища (в байтах), который может быть установлен при достижении одного из заданных процентов заполнения.
Важно
- Размер хранилища не может быть уменьшен после автоматического увеличения.
- Во время изменения размера хранилища хосты кластера будут недоступны.
-
-
-
-
dashboards_spec— настройки групп хостовDashboards. Содержат параметрnode_groups, структура которого совпадает со структуройopensearch_spec.node_groups. Исключение — параметрroles: у хостовDashboardsесть только одна рольDASHBOARDS, поэтому ее не нужно указывать. -
access— настройки доступа к кластеру из следующих сервисов Yandex Cloud:serverless— Yandex Serverless Containers.
Возможные значения настроек:
trueилиfalse.
-
-
maintenance_window— расписание окна технического обслуживания (в т. ч. для выключенных кластеров). Передайте один из двух параметров:-
anytime— техническое обслуживание проводится в любое время. -
weekly_maintenance_window— техническое обслуживание проводится раз в неделю в указанное время:-
day— день недели:MON,TUE,WED,THU,FRI,SATилиSUN. -
hour— порядковый номер часового интервала по UTC: от1до24.Например,
1соответствует интервалу с00:00до01:00,5— с04:00до05:00.
-
-
-
-
Воспользуйтесь вызовом 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.yandexcloud.kz:443 \ yandex.cloud.mdb.opensearch.v1.ClusterService.Create \ < body.json -
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Создать копию кластера
Вы можете создать кластер OpenSearch, который будет обладать настройками созданного ранее кластера. Для этого конфигурация исходного кластера OpenSearch импортируется в Terraform. В результате вы можете либо создать идентичную копию, либо взять за основу импортированную конфигурацию и внести в нее изменения. Использовать импорт удобно, если исходный кластер OpenSearch обладает множеством настроек и нужно создать похожий на него кластер.
Чтобы создать копию кластера OpenSearch:
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
В той же рабочей директории разместите файл с расширением
.tfи содержимым:resource "yandex_mdb_opensearch_cluster" "old" { } -
Запишите идентификатор первоначального кластера OpenSearch в переменную окружения:
export OPENSEARCH_CLUSTER_ID=<идентификатор_кластера>Идентификатор можно запросить вместе со списком кластеров в каталоге.
-
Импортируйте настройки первоначального кластера OpenSearch в конфигурацию Terraform:
terraform import yandex_mdb_opensearch_cluster.old ${OPENSEARCH_CLUSTER_ID} -
Получите импортированную конфигурацию:
terraform show -
Скопируйте ее из терминала и вставьте в файл с расширением
.tf. -
Расположите файл в новой директории
imported-cluster. -
Измените скопированную конфигурацию так, чтобы из нее можно было создать новый кластер:
- Укажите новое имя кластера в строке
resourceи параметреname. - Удалите параметры
created_at,health,idиstatus. - В блок
configдобавьте параметрadmin_password. - Если в блоке
maintenance_windowуказано значение параметраtype = "ANYTIME", удалите параметрhour. - (Опционально) Внесите дополнительные изменения, если вам нужна не идентичная, а кастомизированная копия.
- Укажите новое имя кластера в строке
-
В директории
imported-clusterполучите данные для аутентификации. -
В этой же директории настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в директорию
imported-clusterи укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле. -
Проверьте корректность файлов конфигурации Terraform:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for OpenSearch:
- создание, в том числе путем восстановления из резервной копии, — 30 минут;
- изменение — 60 минут;
- удаление — 15 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts, например:
resource "yandex_mdb_opensearch_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
Примеры
Создайте кластер 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.12. -
Пароль пользователя
admin— указывается после ввода команды по созданию кластера. -
Доступ к Serverless Containers — включен.
-
Подключенный плагин OpenSearch — analysis-icu.
-
Дополнительный параметр OpenSearch —
fielddata-cache-size=50%. -
Конфигурация группы узлов
OpenSearch:- имя группы узлов —
os-group; - класс хостов —
s2.micro; - размер диска —
10737418240(в байтах); - тип диска —
network-ssd; - количество хостов —
3; - зона доступности —
kz1-a; - подсеть —
default-kz1-a; - публичный адрес — выделен;
- роли группы хостов —
DATAиMANAGER.
- имя группы узлов —
-
Конфигурация группы хостов
Dashboards:- имя группы хостов —
dashboard-group; - класс хостов —
s2.micro; - размер диска —
10737418240(в байтах); - тип диска —
network-ssd; - количество хостов —
1; - зона доступности —
kz1-a; - подсеть —
default-kz1-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.12 \
--read-admin-password \
--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=kz1-a,`
`subnet-names=default-kz1-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=kz1-a,`
`subnet-names=default-kz1-a,`
`assign-public-ip=true
Создайте кластер Managed Service for OpenSearch с тестовыми характеристиками:
-
Имя —
my-os-clstr. -
Окружение —
PRODUCTION. -
Версия OpenSearch —
2.12. -
Пароль пользователя
admin—osAdminpwd1. -
Конфигурация группы узлов
OpenSearch:- имя группы узлов
OpenSearch—os-group; - класс хостов —
s2.micro; - размер диска —
10737418240(в байтах); - тип диска —
network-ssd; - количество хостов —
3; - зона доступности —
kz1-a; - публичный адрес — выделен;
- роли группы хостов —
DATAиMANAGER.
- имя группы узлов
-
Конфигурация группы хостов
Dashboards:- имя группы хостов —
dashboard-group; - класс хостов —
s2.micro; - размер диска —
10737418240(в байтах); - тип диска —
network-ssd; - количество хостов —
1; - зона доступности —
kz1-a; - публичный адрес — выделен.
- имя группы хостов —
-
Время технического обслуживания — каждый понедельник с 13:00 до 14:00.
-
Имя сети —
mynet. -
Имя подсети —
mysubnet. -
Зона доступности —
kz1-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.12"
admin_password = "osAdminpwd1"
opensearch {
node_groups {
name = "os-group"
assign_public_ip = true
hosts_count = 3
zone_ids = ["kz1-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"
}
}
}
dashboards {
node_groups {
name = "dashboard-group"
assign_public_ip = true
hosts_count = 1
zone_ids = ["ru-central1-a"]
subnet_ids = [yandex_vpc_subnet.mysubnet.id]
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 = "kz1-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
Если вашему облаку или каталогу предоставлен доступ к Public Preview сервиса Connection Manager, то после создания кластера в вашем каталоге появится новая сущность — подключение для управления параметрами подключения к базам данных.
Пароли и другая чувствительная информация будет храниться в секрете Yandex Lockbox. Чтобы посмотреть, какие секреты хранят информацию о подключениях вашего кластера, выберите в вашем каталоге в списке сервисов Lockbox. На странице Секреты в колонке зависимостей секретов будет указан идентификатор вашего кластера.
Вы также можете настраивать доступ к подключениям в Connection Manager.
Чтобы настроить интеграцию с Connection Manager, обратитесь в техническую поддержку