Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex Managed Service for Apache Kafka®
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Информация об имеющихся кластерах
    • Создание кластера
    • Подключение к кластеру
    • Остановка и запуск кластера
    • Обновление версии Apache Kafka®
    • Изменение настроек кластера
    • Управление хостами Apache Kafka®
    • Работа с топиками и разделами
    • Управление пользователями Apache Kafka®
    • Управление коннекторами
    • Просмотр логов кластера
    • Удаление кластера
    • Мониторинг состояния кластера и хостов
  • Практические руководства
    • Все руководства
    • Настройка Kafka Connect для работы с Managed Service for Apache Kafka®
    • Использование схем формата данных с Managed Service for Apache Kafka®
      • Обзор
      • Работа с управляемым реестром схем формата данных
      • Использование Confluent Schema Registry с Managed Service for Apache Kafka®
    • Миграция базы данных из стороннего кластера Apache Kafka®
    • Перенос данных между кластерами Managed Service for Apache Kafka® с помощью Yandex Data Transfer
    • Поставка данных из Yandex Managed Service for PostgreSQL с помощью Debezium
    • Поставка данных из Yandex Managed Service for MySQL с помощью Debezium
    • Поставка данных из Yandex Managed Service for PostgreSQL с помощью Yandex Data Transfer
    • Поставка данных в Managed Service for ClickHouse
    • Поставка данных в Yandex Managed Service for ClickHouse с помощью Yandex Data Transfer
    • Поставка данных в ksqlDB
    • Поставка данных в Yandex Managed Service for YDB с помощью Yandex Data Transfer
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Топики и разделы
    • Брокеры
    • Производители и потребители
    • Управление схемами данных
    • Классы хостов
    • Сеть в Managed Service for Apache Kafka®
    • Квоты и лимиты
    • Типы дисков
    • Коннекторы
    • Техническое обслуживание
    • Настройки Apache Kafka®
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • ClusterService
      • ConnectorService
      • ResourcePresetService
      • TopicService
      • UserService
      • OperationService
    • REST (англ.)
      • Overview
      • Cluster
        • Overview
        • create
        • delete
        • get
        • list
        • listHosts
        • listLogs
        • listOperations
        • move
        • rescheduleMaintenance
        • start
        • stop
        • streamLogs
        • update
      • Connector
        • Overview
        • create
        • delete
        • get
        • list
        • pause
        • resume
        • update
      • ResourcePreset
        • Overview
        • get
        • list
      • Topic
        • Overview
        • create
        • delete
        • get
        • list
        • update
      • User
        • Overview
        • create
        • delete
        • get
        • grantPermission
        • list
        • revokePermission
        • update
      • Operation
        • Overview
        • get
  • История изменений
  • Вопросы и ответы
  1. Пошаговые инструкции
  2. Создание кластера

Создание кластера Apache Kafka®

Статья создана
Yandex Cloud
  • Как создать кластер Managed Service for Apache Kafka®
  • Примеры
    • Создание кластера с одним хостом

Кластер Managed Service for Apache Kafka® — это один или несколько хостов-брокеров, на которых размещены топики и соответствующие топикам разделы. Производители и потребители могут работать с этими топиками, подключившись к хостам кластера.

Примечание

  • Количество хостов-брокеров, которые можно создать вместе с кластером Apache Kafka®, зависит от выбранного типа диска и класса хостов.
  • Доступные типы диска зависят от выбранного класса хостов.

Важно

Если вы создаете кластер из более чем одного хоста, в кластер будут добавлены три выделенных хоста ZooKeeper. Подробнее см. в разделе Взаимосвязь ресурсов в Managed Service for Apache Kafka®.

Как создать кластер Managed Service for Apache Kafka®

Перед созданием кластера рассчитайте минимальный размер хранилища для топиков.

Консоль управления
CLI
Terraform
API
  1. В консоли управления перейдите в нужный каталог.

  2. В списке сервисов выберите Managed Service for Apache Kafka®.

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

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

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

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

      • PRODUCTION — для стабильных версий ваших приложений.
      • PRESTABLE — для тестирования, в том числе самого сервиса Managed Service for Apache Kafka®. В Prestable-окружении раньше появляются новая функциональность, улучшения и исправления ошибок. При этом не все обновления обеспечивают обратную совместимость.
    3. Выберите версию Apache Kafka®.

    4. Чтобы управлять топиками через Admin API Apache Kafka®:

      1. Включите настройку Управление топиками через API.
      2. После создания кластера создайте пользователя-администратора.

      Включенную настройку управления топиками через Apache Kafka® Admin API невозможно выключить. При необходимости ее можно включить позже при изменении настроек кластера.

    5. Чтобы управлять схемами данных с помощью Managed Schema Registry, включите настройку Реестр схем данных.

      Важно

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

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

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

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

  6. В блоке Хранилище:

    • Выберите тип диска.

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

      • хранилище на локальных SSD-дисках — с шагом 100 ГБ;
      • хранилище на нереплицируемых SSD-дисках — с шагом 93 ГБ;
      • хранилища на сетевых SSD- и HDD-дисках — с шагом 1 ГБ.

      Тип диска для кластера Managed Service for Apache Kafka® нельзя изменить после создания.

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

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

    1. Выберите одну или несколько зон доступности, в которых нужно разместить брокеры Apache Kafka®. Если создать кластер с одной зоной доступности, то в дальнейшем увеличить количество зон и брокеров будет невозможно.

    2. Выберите сеть.

    3. Выберите подсети в каждой зоне доступности для этой сети. Чтобы создать новую подсеть, нажмите на кнопку Создать новую рядом с нужной зоной доступности.

      Примечание

      Для кластера из нескольких хостов-брокеров нужно указать подсети в каждой зоне доступности, даже если вы планируете разместить брокеры только в некоторых из них. Эти подсети понадобятся для размещения трех хостов ZooKeeper — по одному в каждой зоне доступности. Подробнее см. в разделе Взаимосвязь ресурсов в Managed Service for Apache Kafka®.

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

    5. Для доступа к хостам-брокерам из интернета выберите опцию Публичный доступ. В этом случае подключаться к ним можно только с использованием SSL-соединения. Запросить публичный доступ после создания кластера невозможно. Подробнее см. в разделе Подключение к топикам в кластере Apache Kafka®.

  8. В блоке Хосты:

    1. Укажите количество хостов-брокеров Apache Kafka® для размещения в каждой выбранной зоне доступности.

      При выборе количества хостов учитывайте, что:

      • Хосты кластера Apache Kafka® будут равномерно расположены в выбранных зонах доступности. Количество зон и хостов в зоне следует выбирать исходя из требуемой модели отказоустойчивости и нагрузки на кластер.
      • Репликация возможна при наличии как минимум двух хостов в кластере.
      • Если в блоке Хранилище выбран тип local-ssd или network-ssd-nonreplicated, то необходимо добавить не менее трех хостов в кластер.
      • Добавление в кластер более одного хоста приведет к автоматическому добавлению трех хостов ZooKeeper.
    2. (Опционально) Выберите группы выделенных хостов, на которых будет размещен кластер.

      Внимание

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

  9. Если вы указали более одного хоста-брокера, то в блоке Класс хоста ZooKeeper укажите характеристики хостов ZooKeeper для размещения в каждой выбранной зоне доступности.

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

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

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

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

    • Доступ из Data Transfer — включите эту опцию, чтобы разрешить доступ к кластеру из сервиса Yandex Data Transfer в Serverless-режиме.

      Это позволит через специальную сеть подключаться к Yandex Data Transfer, запущенному в Kubernetes. В результате будут быстрее выполняться, например, запуск и деактивация трансфера.

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

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

  11. При необходимости задайте настройки Apache Kafka®.

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

  13. Дождитесь, когда кластер будет готов к работе: его статус на панели Managed Service for Apache Kafka® сменится на Running, а состояние — на Alive. Это может занять некоторое время.

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

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

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

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

    yc managed-kafka cluster create \
      --name <имя кластера> \
      --environment <окружение: prestable или production> \
      --version <версия Apache Kafka®: 2.8, 3.0, 3.1 или 3.2> \
      --network-name <имя сети> \
      --brokers-count <количество брокеров в зоне> \
      --resource-preset <класс хоста> \
      --disk-type <network-hdd | network-ssd | local-ssd | network-ssd-nonreplicated> \
      --disk-size <размер хранилища в гигабайтах> \
      --assign-public-ip <публичный доступ> \
      --security-group-ids <список идентификаторов групп безопасности> \
      --deletion-protection=<защита от удаления кластера: true или false>
    

    Совет

    При необходимости здесь же можно задать настройки Apache Kafka®.

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

  3. Чтобы настроить время технического обслуживания (в т. ч. для выключенных кластеров), передайте нужное значение в параметре --maintenance-window при создании кластера:

    yc managed-kafka cluster create \
    ...
       --maintenance-window type=<тип технического обслуживания: anytime или weekly>,`
                           `day=<день недели для типа weekly>,`
                           `hour=<час дня для типа weekly>
    

    Где:

    • type — тип технического обслуживания:
      • anytime — в любое время.
      • weekly — по расписанию.
    • day — день недели для типа weekly в формате DDD. Например, MON.
    • hour — час дня по UTC для типа weekly в формате HH. Например, 21.
  4. Чтобы управлять топиками через Admin API Apache Kafka®:

    1. Задайте значение true для параметра --unmanaged-topics при создании кластера:

      yc managed-kafka cluster create \
        ...
        --unmanaged-topics true
      

      Эту настройку невозможно изменить после создания кластера.

    2. После создания кластера создайте пользователя-администратора.

  5. Чтобы разрешить доступ к кластеру из сервиса Yandex Data Transfer в Serverless-режиме, передайте параметр --datatransfer-access.

    Это позволит через специальную сеть подключаться к Yandex Data Transfer, запущенному в Kubernetes. В результате будут быстрее выполняться, например, запуск и деактивация трансфера.

  6. Чтобы создать кластер, размещенный на группах выделенных хостов, укажите через запятую их идентификаторы в параметре --host-group-ids при создании кластера:

    yc managed-kafka cluster create \
      ...
      --host-group-ids <идентификаторы групп выделенных хостов>
    

    Внимание

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

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

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

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

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

Чтобы создать кластер:

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

    • Кластер Apache Kafka® — описание кластера и его хостов. При необходимости здесь же можно задать настройки Apache Kafka®.

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

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

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

    terraform {
      required_providers {
        yandex = {
         source = "yandex-cloud/yandex"
        }
      }
    }
    
    provider "yandex" {
      token     = "<OAuth или статический ключ сервисного аккаунта>"
      cloud_id  = "<идентификатор облака>"
      folder_id = "<идентификатор каталога>"
      zone      = "<зона доступности>"
    }
    
    resource "yandex_mdb_kafka_cluster" "<имя кластера>" {
      environment         = "<окружение: PRESTABLE или PRODUCTION>"
      name                = "<имя кластера>"
      network_id          = "<идентификатор сети>"
      security_group_ids  = ["<список идентификаторов групп безопасности кластера>"]
      deletion_protection = <защита от удаления кластера: true или false>
    
      config {
        assign_public_ip = "<публичный доступ к кластеру: true или false>"
        brokers_count    = <количество брокеров>
        version          = "<версия Apache Kafka®: 2.8, 3.0, 3.1 или 3.2>"
        schema_registry  = "<управление схемами данных: true или false>"
        kafka {
          resources {
            disk_size          = <размер хранилища в гигабайтах>
            disk_type_id       = "<тип диска>"
            resource_preset_id = "<класс хоста>"
          }
        }
    
        zones = [
          "<зоны доступности>"
        ]
      }
    }
    
    resource "yandex_vpc_network" "<имя сети>" {
      name = "<имя сети>"
    }
    
    resource "yandex_vpc_subnet" "<имя подсети>" {
      name           = "<имя подсети>"
      zone           = "<зона доступности>"
      network_id     = "<идентификатор сети>"
      v4_cidr_blocks = ["<диапазон>"]
    }
    

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

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

    resource "yandex_mdb_kafka_cluster" "<имя кластера>" {
      ...
      maintenance_window {
        type = <тип технического обслуживания: ANYTIME или WEEKLY>
        day  = <день недели для типа WEEKLY>
        hour = <час дня для типа WEEKLY>
      }
      ...
    }
    

    Где:

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

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

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

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

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

Провайдер Terraform ограничивает время на выполнение всех операций с кластером Managed Service for Apache Kafka® 60 минутами.

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

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

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

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

Воспользуйтесь методом API create и передайте в запросе:

  • Идентификатор каталога, в котором должен быть размещен кластер, в параметре folderId.

  • Имя кластера в параметре name.

    • Идентификаторы групп безопасности в параметре securityGroupIds.
  • Настройки времени технического обслуживания (в т. ч. для выключенных кластеров) в параметре maintenanceWindow.

  • Настройки защиты от удаления кластера в параметре deletionProtection.

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

Чтобы управлять топиками через Admin API Apache Kafka®:

  1. Передайте значение true для параметра unmanagedTopics. Эту настройку невозможно изменить после создания кластера.
  2. После создания кластера создайте пользователя-администратора.

Чтобы управлять схемами данных с помощью Managed Schema Registry, передайте значение true для параметра configSpec.schemaRegistry. Эту настройку невозможно изменить после создания кластера.

Чтобы разрешить доступ к кластеру из сервиса Yandex Data Transfer в Serverless-режиме, передайте значение true для параметра configSpec.access.dataTransfer.

Это позволит через специальную сеть подключаться к Yandex Data Transfer, запущенному в Kubernetes. В результате будут быстрее выполняться, например, запуск и деактивация трансфера.

Чтобы создать кластер, размещенный на группах выделенных хостов, передайте список их идентификаторов в параметре hostGroupIds.

Внимание

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

Важно

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

Примеры

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

CLI
Terraform

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

  • С именем mykf.
  • В окружении production.
  • С Apache Kafka® версии 3.2.
  • В сети default.
  • В группе безопасности enp6saqnq4ie244g67sb.
  • С одним хостом класса s2.micro, в зоне доступности ru-central1-a.
  • С одним брокером.
  • С хранилищем на сетевых SSD-дисках (network-ssd) объемом 10 ГБ.
  • С публичным доступом.
  • С защитой от случайного удаления кластера.

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

yc managed-kafka cluster create \
  --name mykf \
  --environment production \
  --version 3.2 \
  --network-name default \
  --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 enp6saqnq4ie244g67sb \
  --deletion-protection=true

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

  • В облаке с идентификатором b1gq90dgh25bebiu75o.
  • В каталоге с идентификатором b1gia87mbaomkfvsleds.
  • С именем mykf.
  • В окружении PRODUCTION.
  • С Apache Kafka® версии 3.2.
  • В новой сети mynet с подсетью mysubnet.
    • В новой группе безопасности mykf-sg, разрешающей подключение к кластеру из интернета по порту 9091.
  • С одним хостом класса s2.micro, в зоне доступности ru-central1-a.
  • С одним брокером.
  • С хранилищем на сетевых SSD-дисках (network-ssd) объемом 10 ГБ.
  • С публичным доступом.
  • С защитой от случайного удаления кластера.

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

terraform {
  required_providers {
    yandex = {
      source = "yandex-cloud/yandex"
    }
  }
}

provider "yandex" {
  token     = "<OAuth или статический ключ сервисного аккаунта>"
  cloud_id  = "b1gq90dgh25bebiu75o"
  folder_id = "b1gia87mbaomkfvsleds"
  zone      = "ru-central1-a"
}

resource "yandex_mdb_kafka_cluster" "mykf" {
  environment         = "PRODUCTION"
  name                = "mykf"
  network_id          = yandex_vpc_network.mynet.id
  security_group_ids  = [ yandex_vpc_security_group.mykf-sg.id ]
  deletion_protection = true

  config {
    assign_public_ip = true
    brokers_count    = 1
    version          = "3.2"
    kafka {
      resources {
        disk_size          = 10
        disk_type_id       = "network-ssd"
        resource_preset_id = "s2.micro"
      }
    }

    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" ]
  }
}

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

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Как создать кластер Managed Service for Apache Kafka®
  • Примеры
  • Создание кластера с одним хостом