Создание кластера Elasticsearch
Важно
Сервис Yandex Managed Service for Elasticsearch недоступен с 11 апреля 2024 года.
Вы можете создать кластер OpenSearch в Yandex Cloud в качестве альтернативы Elasticsearch.
Кластер Managed Service for Elasticsearch — это группа из нескольких связанных друг с другом хостов Elasticsearch. Кластер Managed Service for Elasticsearch обеспечивает высокую производительность поиска путем распределения задач поиска и индексации по всем хостам кластера с ролью Data node. Подробнее о ролях в кластере Managed Service for Elasticsearch см. в разделе Роли хостов.
Примечание
- Количество хостов с ролью Data node, которые можно создать вместе с кластером Elasticsearch, зависит от выбранного типа дисков и класса хостов.
- Доступные типы дисков зависят от выбранного класса хостов.
Создать кластер
Примечание
С 13 июня 2022 года прекращена поддержка редакции Gold
в кластерах Managed Service for Elasticsearch. Создать новый кластер с этой редакцией невозможно.
При создании кластера Managed Service for Elasticsearch отдельно указываются параметры для хостов, выполняющих роль Master node, и отдельно — для хостов, выполняющих роль Data node.
Допускается использовать только хосты с ролью Data node и не создавать выделенные хосты для роли Master node: в этом случае хосты с ролью Data node будут совмещать две роли.
Чтобы создать кластер Managed Service for Elasticsearch:
-
В консоли управления
выберите каталог, в котором нужно создать кластер Managed Service for Elasticsearch. -
Выберите сервис Managed Service for Elasticsearch.
-
Нажмите кнопку Создать кластер.
-
В блоке Базовые параметры:
-
Введите имя кластера Managed Service for Elasticsearch и его описание. Имя кластера Managed Service for Elasticsearch должно быть уникальным в рамках каталога.
-
Выберите окружение, в котором нужно создать кластер Managed Service for Elasticsearch (после создания кластера окружение изменить невозможно):
PRODUCTION
— для стабильных версий приложений.PRESTABLE
— для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
-
Выберите из списка версию Elasticsearch.
-
Выберите из списка редакцию Elasticsearch.
-
Выберите сервисный аккаунт с ролью
storage.editor
из выпадающего списка или создайте новый, если вы планируете использовать данные из бакета Object Storage с ограниченным доступом. Подробнее о настройке сервисного аккаунта см. в разделе Настройка доступа к Object Storage.
-
-
В блоке Сетевые настройки выберите облачную сеть для размещения кластера Managed Service for Elasticsearch и группы безопасности для сетевого трафика кластера. Может потребоваться дополнительная настройка групп безопасности для того, чтобы можно было подключаться к кластеру Managed Service for Elasticsearch.
-
В блоке Пользователь укажите пароль для пользователя
admin
.Это специальный пользователь, который необходим для управления кластером и не может быть удален. Он наделен ролью
superuser
и может выполнять любые действия с кластером.Совет
Для выполнения повседневных задач рекомендуется создать отдельных пользователей. Подробнее см. в разделе Управление пользователями.
-
Задайте конфигурацию хостов с ролью Data node, выбрав вкладку Data node:
-
В блоке Класс хоста выберите платформу, тип хостов и класс хостов.
Класс хостов определяет технические характеристики виртуальных машин, на которых будут развернуты ноды Elasticsearch. Все доступные варианты перечислены в разделе Классы хостов. При изменении класса хостов для кластера Managed Service for Elasticsearch меняются характеристики всех уже созданных экземпляров.
-
В блоке Хранилище:
-
Выберите тип диска.
От выбранного типа зависит, с каким шагом можно будет изменить размер диска:
- Сетевые HDD- и SSD-диски — с шагом 1 ГБ.
- Локальные SSD-диски:
- для платформы Intel Cascade Lake — с шагом 100 ГБ;
- для платформы Intel Ice Lake — с шагом 368 ГБ.
- Нереплицируемые SSD-диски — с шагом 93 ГБ.
-
Выберите объем хранилища, который будет использоваться для данных.
-
-
В блоке Хосты укажите конфигурацию хостов, создаваемых вместе с кластером Managed Service for Elasticsearch:
-
Чтобы добавить хост, нажмите кнопку Добавить хост.
-
Чтобы изменить добавленный хост, наведите указатель на строку хоста и нажмите значок
.При изменении хоста можно:
-
Выбрать зону доступности и подсеть.
-
Включить публичный доступ.
Важно
Включить публичный доступ к хосту после создания кластера Managed Service for Elasticsearch невозможно.
Если для хоста Elasticsearch с ролью Data node включен публичный доступ, к этому хосту или расположенной на нем Kibana можно подключиться через интернет. Подробнее см. в разделе Подключение к кластеру.
Совет
Kibana можно воспользоваться, даже если публичный доступ к хостам запросить невозможно (например, из соображений безопасности). Для этого настройте проксирование соединений через виртуальную машину в Yandex Compute Cloud, которая находится в той же сети, что и кластер. Подробнее см. в разделе Подключение к кластеру.
-
-
-
-
При необходимости задайте конфигурацию хостов с ролью Master node, выбрав вкладку Master node:
-
В блоке Класс хоста выберите платформу, тип хостов и класс хостов.
-
В блоке Хранилище настройте хранилище по аналогии с хостами с ролью Data node.
-
В блоке Хосты нажмите кнопку Добавить хосты. Будут добавлены три хоста. Чтобы изменить один из добавленных хостов, наведите указатель на строку хоста и нажмите значок
.При изменении хоста можно:
-
Выбрать зону доступности и подсеть.
-
Включить публичный доступ.
Совет
Не рекомендуется включать публичный доступ для хостов с ролью Master node, это может быть небезопасно.
-
-
-
При необходимости задайте дополнительные настройки кластера Managed Service for Elasticsearch:
-
Окно обслуживания — настройки времени технического обслуживания:
- Чтобы разрешить проведение технического обслуживания в любое время, выберите пункт произвольное (по умолчанию).
- Чтобы указать предпочтительное время начала обслуживания, выберите пункт по расписанию и укажите нужные день недели и час дня по UTC. Например, можно выбрать время, когда кластер наименее загружен.
Операции по техническому обслуживанию проводятся для включенных и выключенных кластеров. Они могут включать в себя: обновление СУБД, применение патчей и так далее.
-
Защита от удаления — управляет защитой кластера, его баз данных и пользователей от непреднамеренного удаления.
Включенная защита от удаления кластера не помешает подключиться к нему вручную и удалить данные.
-
-
При необходимости задайте настройки СУБД.
-
Нажмите кнопку Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать кластер Managed Service for Elasticsearch:
-
Проверьте, есть ли в каталоге подсети для хостов кластера Managed Service for Elasticsearch:
yc vpc subnet list
Если ни одной подсети в каталоге нет, создайте нужные подсети в сервисе Yandex Virtual Private Cloud.
-
Посмотрите описание команды CLI для создания кластера Managed Service for Elasticsearch:
yc managed-elasticsearch cluster create --help
-
Укажите параметры кластера Managed Service for Elasticsearch в команде создания (в примере приведены не все параметры):
yc managed-elasticsearch cluster create \ --name <имя_кластера> \ --environment <окружение> \ --network-name <имя_сети> \ --host zone-id=<зона_доступности>,subnet-id=<идентификатор_подсети>,assign-public-ip=<публичный_доступ>,type=<тип_хоста> \ --datanode-resource-preset <класс_хостов_Data_node> \ --datanode-disk-size <размер_хранилища_ГБ> \ --datanode-disk-type <network-hdd|network-ssd|network-ssd-nonreplicated|local-ssd> \ --masternode-resource-preset <класс_хостов_Master_node> \ --masternode-disk-size <размер_хранилища_ГБ_Master_node> \ --masternode-disk-type <network-ssd> \ --security-group-ids <список_идентификаторов_групп_безопасности> \ --version <версия_Elasticsearch> \ --edition <редакция_Elasticsearch> \ --admin-password <пароль_пользователя_admin> \ --plugins=<имя_плагина_1>,...,<имя_плагина_N> \ --deletion-protection=<защита_от_удаления>
Где:
--environment
— окружение:prestable
илиproduction
.--host
— параметры хоста:zone-id
— зона доступности.subnet-id
— идентификатор подсети. Необходимо указывать, если в выбранной зоне доступности создано две или больше подсетей.assign-public-ip
— доступность хоста из интернета по публичному IP-адресу:true
илиfalse
.type
— роль хоста:datanode
илиmasternode
.
--datanode-resource-preset
— класс хостов c ролью Data node.--datanode-disk-size
— размер хранилища в гигабайтах для хостов с ролью Data node.--datanode-disk-type
— тип хранилища для хостов с ролью Data node.--masternode-resource-preset
— класс хостов с ролью Master node.--masternode-disk-size
— размер хранилища в гигабайтах для хостов с ролью Master node.--masternode-disk-type
— тип хранилища для хостов с ролью Master node.--version
(опционально) — версия Elasticsearch: 7.10, 7.11, 7.12, 7.13, 7.14, 7.15, 7.16 или 7.17.--edition
(опционально) — редакция Elasticsearch:basic
илиplatinum
.--deletion-protection
— защита от удаления кластера:true
илиfalse
.
Идентификатор подсети
subnet-id
необходимо указывать, если в выбранной зоне доступности больше одной подсети.Включенная защита от удаления кластера не помешает подключиться к нему вручную и удалить данные.
Примечание
По умолчанию при создании кластера Managed Service for Elasticsearch устанавливается режим технического обслуживания
anytime
— в любое время. Вы можете установить конкретное время обслуживания при изменении настроек кластера Managed Service for Elasticsearch.
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы создать кластер Managed Service for Elasticsearch:
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
-
Кластер базы данных — описание кластера Managed Service for Elasticsearch и его хостов.
-
Сеть — описание облачной сети, в которой будет расположен кластер. Если подходящая сеть у вас уже есть, описывать ее повторно не нужно.
-
Подсети — описание подсетей, к которым будут подключены хосты кластера. Если подходящие подсети у вас уже есть, описывать их повторно не нужно.
Пример структуры конфигурационного файла:
resource "yandex_mdb_elasticsearch_cluster" "<имя_кластера>" { name = "<имя_кластера>" environment = "<окружение>" network_id = "<идентификатор_сети>" deletion_protection = "<защита_от_удаления>" config { version = "<версия_Elasticsearch>" edition = "<редакция_Elasticsearch>" admin_password = "<пароль_пользователя-администратора>" data_node { resources { resource_preset_id = "<класс_хоста>" disk_type_id = "<тип_диска>" disk_size = <размер_хранилища_ГБ> } } master_node { resources { resource_preset_id = "<класс_хоста>" disk_type_id = "<тип_диска>" disk_size = <размер_хранилища_ГБ> } } plugins = [ "<список_имен_плагинов>" ] } security_group_ids = [ "<список_идентификаторов_групп_безопасности>" ] host { name = "<имя_хоста>" zone = "<зона_доступности>" type = "<роль_хоста>" assign_public_ip = <публичный_доступ> subnet_id = "<идентификатор_подсети>" } } resource "yandex_vpc_network" "<имя_сети>" { name = "<имя_сети>" } resource "yandex_vpc_subnet" "<имя_подсети>" { name = "<имя_подсети>" zone = "<зона_доступности>" network_id = "<идентификатор_сети>" v4_cidr_blocks = ["<диапазон>"] }
Где:
environment
— окружение:PRESTABLE
илиPRODUCTION
.deletion_protection
— защита от удаления:true
илиfalse
.version
(опционально) — версия Elasticsearch: 7.10, 7.11, 7.12, 7.13, 7.14, 7.15, 7.16 или 7.17.edition
(опционально) — редакция Elasticsearch:basic
илиplatinum
.host
— параметры хоста:name
— имя хоста.zone
— зона доступности.type
— роль хоста:DATA_NODE
илиMASTER_NODE
.assign_public_ip
— публичный доступ к хосту:true
илиfalse
.subnet-id
— идентификатор подсети. Необходимо указывать, если в выбранной зоне доступности создано две или больше подсетей.
Включенная защита от удаления кластера Managed Service for Elasticsearch не защищает содержимое БД.
-
Чтобы настроить время технического обслуживания (в т. ч. для выключенных кластеров), добавьте к описанию кластера блок
maintenance_window
:resource "yandex_mdb_elasticsearch_cluster" "<имя_кластера>" { ... maintenance_window { type = <тип_технического_обслуживания> day = <день_недели> hour = <час_дня> } ... }
Где:
type
— тип технического обслуживания. Принимает значения:ANYTIME
— в любое время.WEEKLY
— по расписанию.
day
— день недели для типаWEEKLY
в форматеDDD
. Например,MON
.hour
— час дня по UTC для типаWEEKLY
в форматеHH
. Например,21
.
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера Terraform
. -
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Создайте кластер Managed Service for Elasticsearch.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for Elasticsearch:
- создание, в т. ч. путем восстановления из резервной копии, — 30 минут;
- изменение — 60 минут;
- удаление — 15 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок
timeouts
, например:resource "yandex_mdb_elasticsearch_cluster" "<имя_кластера>" { ... timeouts { create = "1h30m" # Полтора часа update = "2h" # 2 часа delete = "30m" # 30 минут } }
-
Чтобы создать кластер Managed Service for Elasticsearch, воспользуйтесь методом REST API create для ресурса Cluster или вызовом gRPC API ClusterService/Create и передайте в запросе:
-
Идентификатор каталога, в котором должен быть размещен кластер Managed Service for Elasticsearch, в параметре
folderId
. -
Имя кластера Managed Service for Elasticsearch в параметре
name
. -
Версию Elasticsearch в параметре
configSpec.version
. -
Редакцию Elasticsearch в параметре
configSpec.edition
. -
Конфигурацию кластера Managed Service for Elasticsearch в параметре
configSpec
, в том числе:- Класс хостов с ролью Master node в параметре
configSpec.elasticsearchSpec.masterNode.resources
. Чтобы не создавать выделенных хостов с ролью Master node — не задавайте значения для группы параметровconfigSpec.elasticsearchSpec.masterNode
. - Класс хостов с ролью Data node в параметре
configSpec.elasticsearchSpec.dataNode.resources
.
- Класс хостов с ролью Master node в параметре
-
Конфигурацию хостов кластера Managed Service for Elasticsearch в одном или нескольких параметрах
hostSpecs
. -
Идентификатор сети в параметре
networkId
. -
Идентификаторы групп безопасности в параметре
securityGroupIds
. -
Список плагинов в параметре
configSpec.elasticsearchSpec.plugins
. -
Настройки времени технического обслуживания (в т. ч. для выключенных кластеров Managed Service for Elasticsearch) в параметре
maintenanceWindow
. -
Настройки доступа из Yandex Data Transfer в параметре
configSpec.access.dataTransfer
.
Важно
Если вы указали идентификаторы групп безопасности при создании кластера Managed Service for Elasticsearch, то для подключения к нему может потребоваться дополнительная настройка групп безопасности.
Примеры
Создание кластера с одним хостом
Чтобы создать кластер Managed Service for Elasticsearch с одним хостом, передайте один параметр --host
.
Создайте кластер Managed Service for Elasticsearch с тестовыми характеристиками:
-
Имя
my-es-clstr
. -
Версия
7.17
. -
Редакция
Platinum
. -
Окружение
PRODUCTION
. -
Сеть
default
. -
Группа безопасности с идентификатором
enpp2s8l3irh********
. -
Один публично доступный хост с ролью Data node класса
s2.micro
в подсетиb0rcctk2rvtr********
, в зоне доступностиru-central1-a
. -
Хранилище на сетевых SSD-дисках (
network-ssd
) объемом 20 ГБ. -
Пароль
esadminpwd
для пользователяadmin
. -
Защита от случайного удаления кластера Managed Service for Elasticsearch.
Выполните следующую команду:
yc managed-elasticsearch cluster create \
--name my-es-clstr \
--environment production \
--network-name default \
--host zone-id=ru-central1-a,assign-public-ip=true,type=datanode \
--datanode-resource-preset s2.micro \
--datanode-disk-type=network-ssd \
--datanode-disk-size=20 \
--admin-password=esadminpwd \
--security-group-ids enpp2s8l3irh******** \
--version 7.17 \
--edition platinum \
--deletion-protection=true
Создайте кластер Managed Service for Elasticsearch. Конфигурационный файл для кластера Managed Service for Elasticsearch выглядит так:
resource "yandex_mdb_elasticsearch_cluster" "my-es-clstr" {
name = "my-es-clstr"
environment = "PRODUCTION"
network_id = yandex_vpc_network.mynet.id
deletion_protection = "true"
config {
edition = "basic"
version = "7.17"
admin_password = "esadminpwd"
data_node {
resources {
resource_preset_id = "s2.micro"
disk_type_id = "network-ssd"
disk_size = 20
}
}
}
security_group_ids = [ yandex_vpc_security_group.es-sg.id ]
host {
name = "node"
zone = "ru-central1-a"
type = "DATA_NODE"
assign_public_ip = true
subnet_id = yandex_vpc_subnet.mysubnet.id
}
}
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.5.0.0/24"]
}
resource "yandex_vpc_security_group" "es-sg" {
name = "es-sg"
network_id = yandex_vpc_network.mynet.id
ingress {
description = "Kibana"
port = 443
protocol = "TCP"
v4_cidr_blocks = [ "0.0.0.0/0" ]
}
ingress {
description = "Elasticsearch"
port = 9200
protocol = "TCP"
v4_cidr_blocks = [ "0.0.0.0/0" ]
}
}
Где применены тестовые характеристики:
-
Имя
my-es-clstr
. -
Версия
7.17
. -
Редакция
Basic
. -
Окружение
PRODUCTION
. -
Защита кластера Managed Service for Elasticsearch от удаления
deletion_protection
. Пока опция включена, кластер Managed Service for Elasticsearch удалить невозможно. -
Облако с идентификатором
b1gq90dgh25********
. -
Каталог с идентификатором
b1gia87mbaom********
. -
Новая сеть
mynet
. -
Новая группа безопасности
es-sg
, разрешающая подключение к кластеру Managed Service for Elasticsearch из интернета через порты 443 (Kibana) и 9200 (Elasticsearch). -
Один публично доступный хост с ролью Data node класса
s2.micro
в новой подсетиmysubnet
, в зоне доступностиru-central1-a
. Подсетьmysubnet
будет иметь диапазон10.5.0.0/24
. -
Хранилище на сетевых SSD-дисках (
network-ssd
) объемом 20 ГБ. -
Пароль
esadminpwd
для пользователяadmin
.