Перейти к основному содержимому

Кластер из трех нод с Apache Kafka

Последнее изменение:

Apache Kafka — распределенный программный брокер сообщений для обработки потоков данных в реальном времени от The Apache Software Foundation. Брокер позволяет собирать, хранить и обрабатывать большие объемы данных из различных источников и передавать их в системы обработки и анализа данных. Apache Kafka использует архитектуру распределенного кластера с тремя нодами для устойчивости к сбоям.

Можно создать кластер из трех нод с готовым приложением Apache Kafka. В России ноды кластера работают с настроенной операционной системой SelectOS 1.1. В других странах — Ubuntu 22.04.

В Selectel, чтобы создать кластер, нужно сначала создать временный облачный сервер с Apache Kafka. Создание временного сервера инициирует создание кластера из трех нод.

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

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

Стоимость кластера будет высчитываться как стоимость трех облачных серверов. Подробнее о модели оплаты облачной платформы в статье Модель оплаты и цены.

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

Чтобы настроить Apache Kafka при создании сервера, нужно указать user data — пользовательские параметры конфигурации, которые используются для подключения к OpenStack API.

  1. Создайте сервисного пользователя.
  2. Создайте облачный сервер с Apache Kafka.

1. Создать сервисного пользователя

Создайте сервисного пользователя с ролью Администратор проекта или Наблюдатель проекта. Создавать пользователей могут пользователи с ролью Владелец аккаунта или Администратор пользователей.

2. Создать облачный сервер с Apache Kafka

  1. В панели управления в верхнем меню нажмите Продукты и выберите Облачные серверы.

  2. Нажмите Создать сервер.

  3. В блоке Имя и расположение:

    3.1. В поле Имя введите имя сервера. Оно будет использоваться в названиях каждого сервера в кластере в формате cs-<server_name>-<cluster_number>.

    Здесь:

    * `<server_name>` — имя сервера;
    * `<cluster_number>` — номер сервера в кластере от 1 до 3.

    3.2. В полях Регион и Пул выберите регион и сегмент пула, в котором будет создан сервер. От сегмента пула зависит список доступных конфигураций сервера и стоимость ресурсов. После создания сервера изменить сегмент пула нельзя.

  4. В блоке Источник выберите источник, из которого будет создан сервер.

    Нажмите на имя источника по умолчанию, откройте вкладку Приложения, выберите Cloud Apache Kafka Cluster <version> 64-bit и нажмите Выбрать.

  5. В блоке Конфигурация выберите конфигурацию сервера в зависимости от объема обрабатываемых данных, количества топиков и партиций и количества клиентов. Если сервер нужен для разработки и тестирования, выберите конфигурацию от 2 vCPU и RAM от 8 ГБ. Если сервер нужен для умеренной рабочей нагрузки в продуктивной среде, выберите конфигурацию от 8 vCPU и RAM от 32 ГБ. Можно выбрать:

    *   [фиксированную](/cloud-servers/create/configurations.mdx#fixed-configurations) конфигурацию — линейки, в которых зафиксировано соотношение ресурсов;
    * или [произвольную](/cloud-servers/create/configurations.mdx#custom-configurations) конфигурацию, в которой можно указать любое соотношение ресурсов.

    В конфигурациях используются разные [процессоры](/cloud-servers/create/configurations.mdx#available-processors) в зависимости от линейки и сегмента пула.

    5.1. Чтобы выбрать фиксированную конфигурацию, нажмите **Фиксированная**, откройте вкладку с нужной линейкой и выберите конфигурацию.

    5.2. Чтобы выбрать произвольную конфигурацию, нажмите **Произвольная**, укажите количество vCPU и размер RAM.

    5.3. Чтобы в качестве загрузочного диска сервера выбрать [локальный диск](/cloud-servers/volumes/about-local-disks.mdx), отметьте чекбокс **Локальный SSD NVMe диск**. Чтобы в качестве загрузочного диска выбрать [сетевой диск](/cloud-servers/volumes/about-network-volumes.mdx), не отмечайте чекбокс.

    Объем оперативной памяти, который выделяется серверу, может быть меньше указанного в конфигурации, — ядро операционной системы резервирует часть оперативной памяти в зависимости от версии ядра и дистрибутива. Выделенный объем на сервере можно проверить с помощью команды `sudo dmesg | grep Memory`.

    После создания сервера можно [изменить конфигурацию](/cloud-servers/manage/change-server-configuration.mdx).
  6. Если вы не отметили чекбокс Локальный SSD NVMe диск на шаге 5.3, в качестве загрузочного диска сервера будет использоваться первый указанный сетевой диск. В блоке Диски:

    6.1. В поле Тип диска выберите тип сетевого загрузочного диска.

    6.2. Укажите размер сетевого загрузочного диска в ГБ или ТБ. Учитывайте лимиты сетевых дисков на максимальный размер.

  7. В блоке Сеть подключите существующую приватную подсеть с облачным роутером или создайте новую:

    7.1. Нажмите Приватная подсеть.

    7.2. В поле Публичный IP-адрес для доступа из интернета выберите Новый публичный IP-адрес.

    7.3. Разверните блок с настройками приватной подсети.

    7.4. В поле Подсеть выберите существующую подсеть.

    7.5. В поле Приватный IP укажите приватный IP-адрес сервера. Публичный IP-адрес будет автоматически подключен к приватному адресу.

  8. В блоке Доступ:

    8.1. Разместите на сервере SSH-ключ для безопасного подключения.

    Чтобы добавить в облачную платформу новый SSH-ключ, нажмите Добавить SSH-ключ, введите имя ключа, вставьте публичный SSH-ключ в формате OpenSSH и нажмите Добавить.

    Если SSH-ключ добавлен в облачную платформу, в поле SSH-ключ выберите существующий ключ.

    8.2. Опционально: в поле Пароль для «root» скопируйте пароль пользователя root (пользователь с неограниченными правами на все действия над системой). Сохраните пароль в безопасном месте и не передавайте в открытом виде.

  9. В блоке Автоматизация в поле User data вставьте скрипт, который выполнится при загрузке системы:

    #cloud-config

    write_files:
    - path: "/opt/gomplate/values/user-values.yaml"
    permissions: "0644"
    content: |
    ServiceUsername: <username>
    ServicePassword: '<password>'
    ProjectId: '<project_id>'
    CloudRegion: <pool>
    CloudZone: <pool_segment>
    AccountNumber: <account_id>

    Укажите:

    • <username> — имя сервисного пользователя. Можно посмотреть в панели управления: в верхнем меню нажмите Аккаунт и перейдите в раздел Пользователи → вкладка Сервисные пользователи (раздел доступен только Владельцу аккаунта и Администратору пользователей);
    • <password> — пароль сервисного пользователя. Можно посмотреть при создании пользователя или изменить на новый.
    • <project_id> — ID проекта. Можно скопировать в панели управления: в верхнем меню нажмите Продукты и выберите Облачные серверы → откройте меню проектов → в строке проекта нажмите ;
    • <pool> — пул, в котором будет создан облачный сервер, например ru-3;
    • <pool_segment> — сегмент пула, в котором будет создан облачный сервер, например ru-3b;
    • <account_id> — номер аккаунта в панели управления. Можно посмотреть в панели управления в правом верхнем углу.
  10. Проверьте цену облачного сервера. Обратите внимание, что после настройки трехнодового кластера цена будет рассчитываться по формуле:

    Цена кластера из трех нод = Цена за облачный сервер * 3
  11. Нажмите Создать.

Посмотреть логи

Если временный облачный сервер не удалился, при настройке кластера Apache Kafka возникла проблема. Например, у сервисного пользователя недостаточно прав, был введен неверный пароль или настройки в user data указаны с ошибками.

  1. Подключитесь к серверу, который вы создали раннее.

  2. Чтобы посмотреть лог ошибок, откройте файл cloud-init-output.log в текстовом редакторе vi:

    vi /var/log/cloud-init-output.log
  3. В зависимости от лога ошибки выдайте доступ сервисному пользователю или измените настройки user data.

  4. Пересоздайте сервер.

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