Создание кластера Apache Kafka®
Кластер Managed Service for Apache Kafka® — один или несколько хостов-брокеров, на которых размещены топики и соответствующие топикам разделы. Производители и потребители могут работать с этими топиками, подключившись к хостам кластера Managed Service for Apache Kafka®.
Примечание
- Количество хостов-брокеров, которые можно создать вместе с кластером Managed Service for Apache Kafka®, зависит от выбранного типа диска и класса хостов.
- Доступные типы диска зависят от выбранного класса хостов.
Различия в конфигурации кластеров с ZooKeeper и протоколом Apache Kafka® Raft
Если вы создаете кластер с версией Apache Kafka® 3.5 или ниже, в котором больше одного хоста, то в кластер будут добавлены три выделенных хоста ZooKeeper.
В кластерах с версией Apache Kafka® 3.6 и выше поддержан протокол Apache Kafka® Raft (сокращенно KRaft). Он используется для хранения метаданных вместо ZooKeeper.
При создании кластера с протоколом KRaft действуют ограничения на конфигурацию:
- Можно создать кластер только с одной или тремя зонами доступности.
- Ограничено количество хостов-брокеров:
- Если выбрана одна зона доступности, можно создать один или три хоста-брокера.
- Если выбраны три зоны доступности, можно создать только один хост-брокер.
Подробнее о различиях в конфигурации кластеров с ZooKeeper и KRaft см. в разделе Взаимосвязь ресурсов в Managed Service for Apache Kafka®.
Перед началом работы
- Рассчитайте минимальный размер хранилища для топиков.
- Убедитесь, что у вашего аккаунта есть роль vpc.user и роль managed-kafka.editor или выше.
Если вы указываете идентификаторы групп безопасности при создании кластера Managed Service for Apache Kafka®, для подключения к нему может понадобиться дополнительная настройка групп безопасности.
Создать кластер
Чтобы создать кластер Managed Service for Apache Kafka®:
-
В консоли управления
перейдите в нужный каталог. -
В списке сервисов выберите Managed Service for Kafka.
-
Нажмите кнопку Создать кластер.
-
В блоке Базовые параметры:
- Введите имя кластера Managed Service for Apache Kafka® и его описание. Имя кластера Managed Service for Apache Kafka® должно быть уникальным в рамках каталога.
- Выберите окружение, в котором нужно создать кластер Managed Service for Apache Kafka® (после создания кластера изменить окружение невозможно):
PRODUCTION
— для стабильных версий приложений.PRESTABLE
— для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
- Выберите версию Apache Kafka®.
-
В блоке Класс хоста выберите платформу, тип хостов и класс хостов.
Класс хостов определяет технические характеристики виртуальных машин, на которых будут развернуты хосты-брокеры Apache Kafka®. Все доступные варианты перечислены в разделе Классы хостов.
При изменении класса хостов для кластера Managed Service for Apache Kafka® меняются характеристики всех уже созданных экземпляров.
-
В блоке Хранилище:
-
Выберите тип диска.
Важно
Тип диска нельзя изменить после создания кластера.
От выбранного типа зависит, с каким шагом можно будет изменить размер диска:
- Сетевые HDD- и SSD-диски — с шагом 1 ГБ.
- Локальные SSD-диски:
- для платформы Intel Cascade Lake — с шагом 100 ГБ;
- для платформы Intel Ice Lake — с шагом 368 ГБ.
- Нереплицируемые SSD-диски — с шагом 93 ГБ.
Тип диска для кластера Managed Service for Apache Kafka® нельзя изменить после создания.
-
Выберите объем хранилища, который будет использоваться для данных.
-
-
В блоке Автоматическое увеличение размера хранилища задайте пороги заполненности хранилища, при достижении которых его размер будет увеличиваться:
- В поле Увеличивать размер выберите один или оба порога:
- В окно обслуживания при заполненности более — порог для планового увеличения. Когда он достигнут, объем хранилища увеличивается во время ближайшего окна обслуживания.
- Незамедлительно при заполненности более — порог для незамедлительного увеличения. Когда он достигнут, объем хранилища увеличивается немедленно.
- Задайте пороговое значение (в процентах от общего объема хранилища). Если выбраны оба порога, значение для незамедлительного увеличения должно быть выше, чем для планового.
- Задайте Максимальный размер хранилища.
- В поле Увеличивать размер выберите один или оба порога:
-
В блоке Сетевые настройки:
-
Выберите одну или несколько зон доступности, в которых нужно разместить хосты-брокеры Apache Kafka®.
Если создать кластер Managed Service for Apache Kafka® с одной зоной доступности, в дальнейшем увеличить количество зон и хостов-брокеров будет невозможно.
Для кластеров с версией Apache Kafka® 3.6 и выше можно выбрать только одну или три зоны доступности. -
Выберите сеть.
-
Выберите подсети в каждой зоне доступности для этой сети. Чтобы создать новую подсеть, нажмите на кнопку Создать новую рядом с нужной зоной доступности.
Примечание
Для кластера с версией Apache Kafka® 3.5 или ниже, в котором несколько хостов-брокеров, укажите подсети в каждой зоне доступности, даже если вы планируете разместить хосты-брокеры только в некоторых из них. Эти подсети понадобятся для размещения трех хостов ZooKeeper — по одному в каждой зоне доступности. Подробнее см. в разделе Взаимосвязь ресурсов сервиса.
-
Выберите группы безопасности для сетевого трафика кластера Managed Service for Apache Kafka®.
-
Для доступа к хостам-брокерам из интернета выберите опцию Публичный доступ. В этом случае подключаться к ним можно только с использованием SSL-соединения. Подробнее см. в разделе Подключение к топикам в кластере.
-
-
В блоке Хосты:
-
Укажите количество хостов-брокеров Apache Kafka® для размещения в каждой выбранной зоне доступности.
При выборе количества хостов учтите следующие особенности:
-
В версиях Apache Kafka® 3.6 и выше количество хостов-брокеров зависит от выбранных зон доступности:
- Одна зона доступности — один или три хоста-брокера. Чтобы использовать три хоста-брокера, включите настройку Комбинированный режим.
- Три зоны доступности — один хост-брокер.
Задать количество хостов-брокеров вручную нельзя.
-
Репликация возможна при наличии как минимум двух хостов в кластере Managed Service for Apache Kafka®.
-
Если в блоке Хранилище выбран тип
local-ssd
илиnetwork-ssd-nonreplicated
, необходимо добавить не менее трех хостов в кластер Managed Service for Apache Kafka®. -
Для отказоустойчивости кластера Managed Service for Apache Kafka® должны выполняться определенные условия.
-
Добавление в кластер с версией Apache Kafka® 3.5 или ниже более одного хоста приведет к автоматическому добавлению трех хостов ZooKeeper.
-
-
(Опционально) Выберите группы выделенных хостов, на которых будет размещен кластер Managed Service for Apache Kafka®.
Внимание
Эту настройку нельзя изменить после создания кластера. Использование выделенных хостов существенно влияет на тарификацию кластера.
-
-
Если вы создаете кластер с версией Apache Kafka® 3.5 или ниже и указали более одного хоста-брокера, то в блоке Класс хоста ZooKeeper укажите характеристики хостов ZooKeeper для размещения в каждой выбранной зоне доступности.
-
При необходимости задайте дополнительные настройки кластера Managed Service for Apache Kafka®:
-
Окно обслуживания — настройки времени технического обслуживания:
- Чтобы разрешить проведение технического обслуживания в любое время, выберите пункт произвольное (по умолчанию).
- Чтобы указать предпочтительное время начала обслуживания, выберите пункт по расписанию и укажите нужные день недели и час дня по UTC. Например, можно выбрать время, когда кластер наименее загружен.
Операции по техническому обслуживанию проводятся для включенных и выключенных кластеров. Они могут включать в себя: обновление СУБД, применение патчей и так далее.
-
Защита от удаления — управляет защитой кластера, его баз данных и пользователей от непреднамеренного удаления.
Включенная защита от удаления кластера не помешает подключиться к нему вручную и удалить данные.
-
Чтобы управлять схемами данных с помощью Managed Schema Registry, включите настройку Реестр схем данных.
Важно
Настройку Реестр схем данных невозможно отключить после ее включения.
-
Чтобы разрешить отправку запросов к API Apache Kafka®, включите настройку Kafka Rest API.
В качестве реализации используется приложение с открытым исходным кодом Karapace
. API Karapace совместимо с API Confluent REST Proxy за исключением небольших расхождений.Важно
Настройку Kafka Rest API невозможно отключить после ее включения.
-
-
При необходимости задайте настройки Apache Kafka®.
-
Нажмите кнопку Создать.
-
Дождитесь, когда кластер Managed Service for Apache Kafka® будет готов к работе: его статус на панели Managed Service for Apache Kafka® сменится на
Running
, а состояние — наAlive
. Это может занять некоторое время.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Важно
При создании кластера с KRaft не указывайте настройки ZooKeeper.
Чтобы создать кластер Managed Service for Apache Kafka®:
-
Посмотрите описание команды CLI для создания кластера Managed Service for Apache Kafka®:
yc managed-kafka cluster create --help
-
Укажите параметры кластера Managed Service for Apache Kafka® в команде создания (в примере приведены не все параметры):
yc managed-kafka cluster create \ --name <имя_кластера> \ --environment <окружение> \ --version <версия> \ --network-name <имя_сети> \ --subnet-ids <идентификаторы_подсетей> \ --zone-ids <зоны_доступности> \ --brokers-count <количество_хостов-брокеров_в_зоне> \ --resource-preset <класс_хоста> \ --disk-type <network-hdd|network-ssd|network-ssd-nonreplicated|local-ssd> \ --disk-size <размер_хранилища_ГБ> \ --assign-public-ip <публичный_доступ> \ --security-group-ids <список_идентификаторов_групп_безопасности> \ --deletion-protection
Где:
-
--environment
— окружение кластера:prestable
илиproduction
. -
--version
— версия Apache Kafka®: 2.8, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5 или 3.6. -
--zone-ids
и--brokers-count
— зоны доступности и число хостов-брокеров в каждой зоне.Для кластеров с версией Apache Kafka® 3.6 и выше доступны только следующие конфигурации:
--zone-ids=ru-central1-a,ru-central1-b,ru-central1-d --brokers-count=1
;--zone-ids=<одна_зона_доступности> --brokers-count=1
;--zone-ids=<одна_зона_доступности> --brokers-count=3
.
-
--resource-preset
— класс хостов. -
--disk-type
— тип диска.Важно
Тип диска нельзя изменить после создания кластера.
-
--deletion-protection
— защита кластера, его баз данных и пользователей от непреднамеренного удаления.Включенная защита от удаления кластера не помешает подключиться к нему вручную и удалить данные.
Совет
При необходимости здесь же можно задать настройки Apache Kafka®.
-
-
Чтобы настроить время технического обслуживания (в т. ч. для выключенных кластеров Managed Service for Apache Kafka®), передайте нужное значение в параметре
--maintenance-window
при создании кластера:yc managed-kafka cluster create \ ... --maintenance-window type=<тип_технического_обслуживания>,` `day=<день_недели>,` `hour=<час_дня> \
Где
type
— тип технического обслуживания:anytime
(по умолчанию) — в любое время.weekly
— по расписанию. При задании этого значения укажите день недели и час дня:day
— день недели в форматеDDD
:MON
,TUE
,WED
,THU
,FRI
,SAT
илиSUN
.hour
— час дня по UTC в форматеHH
: от1
до24
.
-
Чтобы в кластере не заканчивалось место на диске, создайте кластер с автоматическим увеличением размера хранилища:
yc managed-kafka cluster create \ ... --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,` `planned-usage-threshold=<процент_для_планового_увеличения>,` `emergency-usage-threshold=<процент_для_незамедлительного_увеличения>
Где:
-
planned-usage-threshold
— процент заполнения хранилища, при котором хранилище будет увеличено в следующее окно технического обслуживания.Значение задается в процентах от
0
до100
. По умолчанию —0
(автоматическое расширение отключено).Если вы задали этот параметр, настройте расписание технического обслуживания.
-
emergency-usage-threshold
— процент заполнения хранилища, при котором хранилище будет увеличено немедленно.Значение задается в процентах от
0
до100
. По умолчанию —0
(автоматическое расширение отключено). Должно быть не меньше значенияplanned-usage-threshold
. -
disk-size-limit
— максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.Если указать значение
0
, автоматическое увеличение размера хранилища будет отключено.
Важно
- Размер хранилища нельзя уменьшить.
- Во время изменения размера хранилища хосты кластера будут недоступны.
-
-
Чтобы создать кластер Managed Service for Apache Kafka®, размещенный на группах выделенных хостов, укажите через запятую их идентификаторы в параметре
--host-group-ids
при создании кластера:yc managed-kafka cluster create \ ... --host-group-ids <идентификаторы_групп_выделенных_хостов>
Внимание
Эту настройку нельзя изменить после создания кластера. Использование выделенных хостов существенно влияет на тарификацию кластера.
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Важно
При создании кластера с KRaft не указывайте настройки ZooKeeper.
Чтобы создать кластер Managed Service for Apache Kafka®:
-
Опишите в конфигурационном файле создаваемые ресурсы:
-
Кластер Managed Service for Apache Kafka® — описание кластера и его хостов. При необходимости здесь же можно задать настройки Apache Kafka®.
-
Сеть — описание облачной сети, в которой будет расположен кластер. Если подходящая сеть у вас уже есть, описывать ее повторно не нужно.
-
Подсети — описание подсетей, к которым будут подключены хосты кластера. Если подходящие подсети у вас уже есть, описывать их повторно не нужно.
Пример структуры конфигурационного файла:
resource "yandex_mdb_kafka_cluster" "<имя_кластера>" { environment = "<окружение>" name = "<имя_кластера>" network_id = "<идентификатор_сети>" subnet_ids = ["<список_идентификаторов_подсетей>"] security_group_ids = ["<список_идентификаторов_групп_безопасности_кластера>"] deletion_protection = <защита_от_удаления> config { version = "<версия>" zones = ["<зоны_доступности>"] brokers_count = <количество_хостов-брокеров> assign_public_ip = "<публичный_доступ>" schema_registry = "<управление_схемами_данных>" kafka { resources { disk_size = <размер_хранилища_ГБ> disk_type_id = "<тип_диска>" resource_preset_id = "<класс_хоста>" } kafka_config {} } } } resource "yandex_vpc_network" "<имя_сети>" { name = "<имя_сети>" } resource "yandex_vpc_subnet" "<имя_подсети>" { name = "<имя_подсети>" zone = "<зона_доступности>" network_id = "<идентификатор_сети>" v4_cidr_blocks = ["<диапазон>"] }
Где:
-
environment
— окружение кластера:PRESTABLE
илиPRODUCTION
. -
version
— версия Apache Kafka®: 2.8, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5 или 3.6. -
zones
иbrokers_count
— зоны доступности и число хостов-брокеров в каждой зоне.Если вы создаете кластер с версией Apache Kafka® 3.6 и выше, укажите одну из доступных конфигураций:
zones = ["ru-central1-a","ru-central1-b","ru-central1-d"] brokers_count = 1
;zones = ["<одна_зона_доступности>"] brokers_count = 1
;zones = ["<одна_зона_доступности>"] brokers_count = 3
.
-
deletion_protection
— защита от удаления кластера:true
илиfalse
. -
assign_public_ip
— публичный доступ к кластеру:true
илиfalse
. -
schema_registry
— управление схемами данных:true
илиfalse
.
Включенная защита от удаления кластера не помешает подключиться к нему вручную и удалить данные.
Чтобы настроить время технического обслуживания (в т. ч. для выключенных кластеров), добавьте к описанию кластера блок
maintenance_window
:resource "yandex_mdb_kafka_cluster" "<имя_кластера>" { ... maintenance_window { type = <тип_технического_обслуживания> day = <день_недели> hour = <час_дня> } ... }
Где:
type
— тип технического обслуживания. Принимает значения:ANYTIME
— в любое время.WEEKLY
— по расписанию.
day
— день недели для типаWEEKLY
в форматеDDD
. Например,MON
.hour
— час дня по UTC для типаWEEKLY
в форматеHH
. Например,21
.
-
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Создайте кластер Managed Service for Apache Kafka®.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
После этого в указанном каталоге будут созданы все требуемые ресурсы, а в терминале отобразятся FQDN хостов кластера Managed Service for Apache Kafka®. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Подробнее см. в документации провайдера Terraform
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение всех операций с кластером Managed Service for Apache Kafka® 60 минутами.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts
, например:
resource "yandex_mdb_kafka_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
Важно
При создании кластера с KRaft не указывайте настройки ZooKeeper.
Чтобы создать кластер Managed Service for Apache Kafka®, воспользуйтесь методом REST API create для ресурса Cluster или вызовом gRPC API ClusterService/Create и передайте в запросе:
-
Идентификатор каталога, в котором должен быть размещен кластер Managed Service for Apache Kafka®, в параметре
folderId
. -
Имя кластера Managed Service for Apache Kafka® в параметре
name
. -
Окружение:
PRESTABLE
илиPRODUCTION
— в параметреenvironment
. -
Версию Apache Kafka®: 2.8, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5 или 3.6. — в параметре
configSpec.version
. -
Зоны доступности в параметре
configSpec.zoneId
.
При создании кластера с версией Apache Kafka® 3.6 и выше можно указать только одну или три зоны доступности. -
Количество хостов-брокеров в параметре
configSpec.brokersCount
.
При создании кластера с версией Apache Kafka® 3.6 и выше можно указать только один или три хоста-брокера:- Если в параметре
configSpec.zoneId
указаны три зоны доступности, укажите количество хостов-брокеров1
. - Если в параметре
configSpec.zoneId
указана одна зона доступности, укажите количество хостов-брокеров1
или3
.
- Если в параметре
-
Идентификаторы групп безопасности в параметре
securityGroupIds
. -
Настройки времени технического обслуживания (в т. ч. для выключенных кластеров Managed Service for Apache Kafka®) в параметре
maintenanceWindow
. -
Настройки защиты от удаления кластера Managed Service for Apache Kafka® в параметре
deletionProtection
.Включенная защита от удаления кластера не помешает подключиться к нему вручную и удалить данные.
Чтобы управлять схемами данных с помощью Managed Schema Registry, передайте значение true
для параметра configSpec.schemaRegistry
. Эту настройку невозможно изменить после создания кластера Managed Service for Apache Kafka®.
Чтобы создать кластер Managed Service for Apache Kafka®, размещенный на группах выделенных хостов, передайте список их идентификаторов в параметре hostGroupIds
.
Внимание
Эту настройку нельзя изменить после создания кластера. Использование выделенных хостов существенно влияет на тарификацию кластера.
Чтобы в кластере не заканчивалось место на диске, создайте кластер с автоматическим увеличением размера хранилища. Для этого передайте в запросе:
-
Процент заполнения хранилища, при котором хранилище будет увеличено в следующее окно обслуживания, в параметре
configSpec.diskSizeAutoscaling.plannedUsageThreshold
.Значение задается в процентах от
0
до100
. По умолчанию —0
(автоматическое расширение отключено).Если вы задали этот параметр, настройте расписание окна технического обслуживания.
-
Процент заполнения хранилища, при котором хранилище будет увеличено немедленно, в параметре
configSpec.diskSizeAutoscaling.emergencyUsageThreshold
.Значение задается в процентах от
0
до100
. По умолчанию —0
(автоматическое расширение отключено). Должно быть не меньше значенияconfigSpec.diskSizeAutoscaling.plannedUsageThreshold
. -
Максимальный размер хранилища (в байтах), который может быть установлен при достижении одного из заданных процентов заполнения, в параметре
configSpec.diskSizeAutoscaling.diskSizeLimit
.
Важно
- Размер хранилища нельзя уменьшить.
- Во время изменения размера хранилища хосты кластера будут недоступны.
Чтобы убедиться, что созданный кластер с версией Apache Kafka® 3.6 или выше использует протокол KRaft, получите информацию о хостах кластера:
- В консоли управления
перейдите в нужный каталог. - В списке сервисов выберите Managed Service for Kafka.
- Нажмите на имя созданного кластера.
- На панели слева выберите Хосты.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы получить список хостов кластера Managed Service for Apache Kafka®:
-
Посмотрите описание команды CLI для получения списка хостов кластера Managed Service for Apache Kafka®:
yc managed-kafka cluster list-hosts --help
-
Получите список хостов кластера:
yc managed-kafka cluster list-hosts <имя_или_идентификатор_кластера>
Чтобы получить список хостов кластера Managed Service for Apache Kafka®, воспользуйтесь методом REST API listHosts для ресурса Cluster или вызовом gRPC API ClusterService/ListHosts и передайте в запросе идентификатор кластера.
Чтобы узнать идентификатор кластера, получите список кластеров в каталоге.
Отсутствие хостов ZooKeeper говорит о том, что в кластере используется протокол KRaft.
Создать копию кластера
Вы можете создать кластер Apache Kafka®, который будет обладать настройками созданного ранее кластера. Для этого конфигурация исходного кластера Apache Kafka® импортируется в Terraform. В результате вы можете либо создать идентичную копию, либо взять за основу импортированную конфигурацию и внести в нее изменения. Использовать импорт удобно, если исходный кластер Apache Kafka® обладает множеством настроек и нужно создать похожий на него кластер.
Чтобы создать копию кластера Apache Kafka®:
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
В той же рабочей директории разместите файл с расширением
.tf
и содержимым:resource "yandex_mdb_kafka_cluster" "old" { }
-
Запишите идентификатор первоначального кластера Apache Kafka® в переменную окружения:
export KAFKA_CLUSTER_ID=<идентификатор_кластера>
Идентификатор можно запросить вместе со списком кластеров в каталоге.
-
Импортируйте настройки первоначального кластера Apache Kafka® в конфигурацию Terraform:
terraform import yandex_mdb_kafka_cluster.old ${KAFKA_CLUSTER_ID}
-
Получите импортированную конфигурацию:
terraform show
-
Скопируйте ее из терминала и вставьте в файл с расширением
.tf
. -
Расположите файл в новой директории
imported-cluster
. -
Измените скопированную конфигурацию так, чтобы из нее можно было создать новый кластер:
- Укажите новое имя кластера в строке
resource
и параметреname
. - Удалите параметры
created_at
,health
,host
,id
иstatus
. - Добавьте параметр
subnet_ids
и укажите в нем список идентификаторов подсетей для каждой зоны доступности. - Если в блоке
maintenance_window
указано значение параметраtype = "ANYTIME"
, удалите параметрhour
. - (Опционально) Внесите дополнительные изменения, если вам нужна не идентичная, а кастомизированная копия.
- Укажите новое имя кластера в строке
-
В директории
imported-cluster
получите данные для аутентификации. -
В этой же директории настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в директорию
imported-cluster
и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле. -
Проверьте корректность файлов конфигурации Terraform:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение всех операций с кластером Managed Service for Apache Kafka® 60 минутами.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts
, например:
resource "yandex_mdb_kafka_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
Примеры
Создание кластера с одним хостом
Создайте кластер Managed Service for Apache Kafka® с тестовыми характеристиками:
- С именем
mykf
. - В окружении
production
. - С Apache Kafka® версии 3.5.
- В сети
default
. - В подсети с идентификатором
b0rcctk2rvtr********
. - В группе безопасности
enp6saqnq4ie********
. - С одним хостом класса
s2.micro
, в зоне доступностиru-central1-a
. - С одним хостом-брокером.
- С хранилищем на сетевых SSD-дисках (
network-ssd
) объемом 10 ГБ. - С публичным доступом.
- С защитой от случайного удаления кластера Managed Service for Apache Kafka®.
Выполните следующую команду:
yc managed-kafka cluster create \
--name mykf \
--environment production \
--version 3.5 \
--network-name default \
--subnet-ids b0rcctk2rvtr******** \
--zone-ids ru-central1-a \
--brokers-count 1 \
--resource-preset s2.micro \
--disk-size 10 \
--disk-type network-ssd \
--assign-public-ip \
--security-group-ids enp6saqnq4ie******** \
--deletion-protection
Создайте кластер Managed Service for Apache Kafka® с тестовыми характеристиками:
-
В облаке с идентификатором
b1gq90dgh25********
. -
В каталоге с идентификатором
b1gia87mbaom********
. -
С именем
mykf
. -
В окружении
PRODUCTION
. -
С Apache Kafka® версии 3.5.
-
В новой сети
mynet
с подсетьюmysubnet
. -
В новой группе безопасности
mykf-sg
, разрешающей подключение к кластеру Managed Service for Apache Kafka® из интернета по порту9091
. -
С одним хостом класса
s2.micro
, в зоне доступностиru-central1-a
. -
С одним хостом-брокером.
-
С хранилищем на сетевых SSD-дисках (
network-ssd
) объемом 10 ГБ. -
С публичным доступом.
-
С защитой от случайного удаления кластера Managed Service for Apache Kafka®.
Конфигурационный файл для такого кластера Managed Service for Apache Kafka® выглядит так:
resource "yandex_mdb_kafka_cluster" "mykf" {
environment = "PRODUCTION"
name = "mykf"
network_id = yandex_vpc_network.mynet.id
subnet_ids = [ yandex_vpc_subnet.mysubnet.id ]
security_group_ids = [ yandex_vpc_security_group.mykf-sg.id ]
deletion_protection = true
config {
assign_public_ip = true
brokers_count = 1
version = "3.5"
kafka {
resources {
disk_size = 10
disk_type_id = "network-ssd"
resource_preset_id = "s2.micro"
}
kafka_config {}
}
zones = [
"ru-central1-a"
]
}
}
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" "mykf-sg" {
name = "mykf-sg"
network_id = yandex_vpc_network.mynet.id
ingress {
description = "Kafka"
port = 9091
protocol = "TCP"
v4_cidr_blocks = [ "0.0.0.0/0" ]
}
}