Управление топиками Apache Kafka®
Кластер Managed Service for Apache Kafka® позволяет управлять топиками и разделами двумя способами (как отдельно, так и совместно):
-
С помощью стандартных интерфейсов Yandex Cloud (CLI, API, консоль управления). Способ подходит, если вы хотите управлять топиками, используя возможности сервиса Managed Service for Apache Kafka®.
Вы можете выполнить следующие действия над топиками Managed Service for Apache Kafka®:
-
С помощью Admin API Apache Kafka®. Способ подходит, если вы хотите использовать уже существующее у вас решение для управления топиками и разделами.
Управление топиками через интерфейсы Yandex Cloud
Создать топик
Перед созданием топика рассчитайте минимальный размер хранилища.
- В консоли управления
перейдите в нужный каталог. - В списке сервисов выберите Managed Service for Kafka.
- Нажмите на имя нужного кластера и перейдите на вкладку Топики.
- Нажмите кнопку Создать топик.
- В блоке Базовые параметры задайте базовые параметры топика:
- Имя топика (должно быть уникально в пределах кластера Apache Kafka®).
- Количество разделов в топике.
- Фактор репликации. Значение этого параметра не должно превышать количество брокеров в кластере. Минимальное значение:
1
. Максимальное значение:3
. Значение по умолчанию:- для кластера из одного или двух брокеров:
1
; - для кластера с тремя и более брокерами:
3
.
- для кластера из одного или двух брокеров:
- В блоке Настройки топика задайте настройки топика.
- Нажмите кнопку Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать топик:
-
Посмотрите описание команды CLI для создания топиков:
yc managed-kafka topic create --help
-
Создайте топик:
yc managed-kafka topic create <имя_топика> \ --cluster-name <имя_кластера> \ --partitions <количество_разделов> \ --replication-factor <фактор_репликации>
При необходимости здесь же задайте настройки топика.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Добавьте ресурс
yandex_mdb_kafka_topic
и, при необходимости, задайте настройки топика в блокеtopic_config
:resource "yandex_mdb_kafka_topic" "<имя_топика>" { cluster_id = "<идентификатор_кластера>" name = "<имя_топика>" partitions = <количество_разделов> replication_factor = <фактор_репликации> topic_config { compression_type = "<тип_сжатия>" flush_messages = <максимальное_число_сообщений_в_памяти> ... } }
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform
Чтобы создать топик, воспользуйтесь методом REST API create для ресурса Topic или вызовом gRPC API TopicService/Create и передайте в запросе:
- Идентификатор кластера, в котором нужно создать топик, в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Настройки топика в параметре
topicSpec
.
Примечание
В процессе своей работы Managed Service for Apache Kafka® может создавать служебные топики. Записывать пользовательские данные в такие топики нельзя.
Изменить настройки топика
Количество разделов в топиках Managed Service for Apache Kafka® нельзя уменьшить. Если в хранилище не хватает места, создать новые разделы нельзя.
Подробнее см. в разделе Минимальный размер хранилища.
- В консоли управления
перейдите в нужный каталог. - В списке сервисов выберите Managed Service for Kafka.
- Нажмите на имя нужного кластера, затем выберите вкладку Топики.
- Нажмите значок
для нужного топика и выберите пункт Редактировать. - Измените базовые параметры топика:
- Количество разделов в топике.
- Фактор репликации. Значение этого параметра не должно превышать количество брокеров в кластере. Минимальное значение:
1
. Максимальное значение:3
. Значение по умолчанию:- Для кластера из одного или двух брокеров:
1
. - Для кластера с тремя и более брокерами:
3
.
- Для кластера из одного или двух брокеров:
- Измените дополнительные настройки топика.
- Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы изменить настройки топика:
-
Посмотрите описание команды CLI для изменения топиков:
yc managed-kafka topic update --help
-
Измените настройки топика:
yc managed-kafka topic update <имя_топика> \ --cluster-name <имя_кластера> \ --partitions <количество_разделов> \ --replication-factor <фактор_репликации>
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Измените значение параметров в описании ресурса
yandex_mdb_kafka_topic
:resource "yandex_mdb_kafka_topic" "<имя_топика>" { cluster_id = "<идентификатор_кластера>" name = "<имя_топика>" partitions = <количество_разделов> replication_factor = <фактор_репликации> topic_config { compression_type = "<тип_сжатия>" flush_messages = <максимальное_число_сообщений_в_памяти> ... } }
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform
Чтобы изменить настройки топика, воспользуйтесь методом REST API update для ресурса Topic или вызовом gRPC API TopicService/Update и передайте в запросе:
- Идентификатор кластера, в котором находится топик, в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Имя топика в параметре
topicName
. Чтобы узнать имя, получите список топиков в кластере. - Новые значения настроек топика в параметре
topicSpec
. - Список настроек, которые необходимо изменить, в параметре
updateMask
.
Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask
(одной строкой через запятую).
Получить список топиков в кластере
- В консоли управления
перейдите в нужный каталог. - В списке сервисов выберите Managed Service for Kafka.
- Нажмите на имя нужного кластера и перейдите на вкладку Топики.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы получить список топиков, выполните следующую команду:
yc managed-kafka topic list --cluster-name <имя_кластера>
Чтобы получить список топиков в кластере, воспользуйтесь методом REST API list для ресурса Topic или вызовом gRPC API TopicService/List и передайте в запросе идентификатор требуемого кластера в параметре clusterId
.
Чтобы узнать идентификатор кластера, получите список кластеров в каталоге.
Получить детальную информацию о топике
- В консоли управления
перейдите в нужный каталог. - В списке сервисов выберите Managed Service for Kafka.
- Нажмите на имя нужного кластера и перейдите на вкладку Топики.
- Нажмите на имя нужного топика.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы получить детальную информацию о топике, выполните следующую команду:
yc managed-kafka topic get <имя_топика> --cluster-name <имя_кластера>
Чтобы получить детальную информацию о топике, воспользуйтесь методом REST API get для ресурса Topic или вызовом gRPC API TopicService/Get и передайте в запросе:
- Идентификатор кластера, в котором находится топик, в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Имя топика в параметре
topicName
. Чтобы узнать имя, получите список топиков в кластере.
Импортировать топик в Terraform
С помощью импорта вы можете передать существующие в кластере топики под управление Terraform.
-
Укажите в конфигурационном файле Terraform топик, который необходимо импортировать:
resource "yandex_mdb_kafka_topic" "<имя_топика>" {}
-
Выполните команду для импорта топика:
terraform import yandex_mdb_kafka_topic.<имя_топика> <идентификатор_кластера>:<имя_топика>
Подробнее об импорте топиков см. в документации провайдера Terraform
.
Удалить топик
Примечание
Выданные пользователю права на доступ к топику сохраняются после его удаления . Если после удаления вы не отзывали права, то при создании топика с тем же именем пользователь сможет работать с ним без переназначения прав.
- В консоли управления
перейдите в нужный каталог. - В списке сервисов выберите Managed Service for Kafka.
- Нажмите на имя нужного кластера и перейдите на вкладку Топики.
- Нажмите значок
для нужного топика и выберите пункт Удалить топик. - В открывшемся окне нажмите кнопку Удалить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы удалить топик:
-
Посмотрите описание команды CLI для изменения топиков:
yc managed-kafka topic delete --help
-
Удалите топик:
yc managed-kafka topic delete <имя_топика> --cluster-name <имя_кластера>
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Удалите ресурс
yandex_mdb_kafka_topic
с описанием нужного топика. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform
Чтобы удалить топик, воспользуйтесь методом REST API delete для ресурса Topic или вызовом gRPC API TopicService/Delete и передайте в запросе:
- Идентификатор кластера, в котором находится топик, в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Имя топика в параметре
topicName
. Чтобы узнать имя, получите список топиков в кластере.
Управление топиками через Admin API Apache Kafka®
Чтобы управлять топиками через Admin API Apache Kafka®:
- Создайте в кластере пользователя-администратора с ролью
ACCESS_ROLE_ADMIN
. - Управляйте топиками от имени этого пользователя с помощью запросов к Admin API Apache Kafka®. О работе с Admin API читайте в документации выбранного языка программирования.
Подробнее о работе с Admin API и о действующих ограничениях читайте в разделе Управление топиками и разделами и в документации Apache Kafka®