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

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

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

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

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

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

Название каждого сервера в кластере будет в формате cs-<server_name>-<cluster_number>, где <server_name> — имя сервера, а<cluster_number> — номер сервера в кластере от 1 до 3.

Созданные три облачных сервера находятся в той же подсети, что и временный облачный сервер.

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

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

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

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

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

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

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

Создайте сервисного пользователя, в разрешении выберите роль member или reader и область доступа Проекты. Создавать пользователей может Владелец аккаунта или пользователи с ролью iam_admin.

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

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

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

  3. Заполните блоки:

  4. Проверьте цену облачного сервера. Обратите внимание, что после настройки цена за трехнодовый кластер будет рассчитываться по формуле: цена за облачный сервер * 3.

  5. Нажмите Создать.

Имя и расположение

  1. Введите имя сервера. Оно будет установлено как имя хоста в операционной системе.

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

Источник

  1. Откройте вкладку Приложения.

  2. Выберите Cloud Kafka.

  3. Опционально: если вам нужна другая актуальная или архивная версия приложения, в поле Версия выберите нужную версию.

Конфигурация

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

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

  1. Нажмите Фиксированная.

  2. Откройте вкладку с нужной линейкой.

  3. Выберите конфигурацию.

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

    • локальный диск — отметьте чекбокс Локальный SSD NVMe диск. Сервер с локальным диском можно создать только из образов и приложений;
    • сетевой диск — не отмечайте чекбокс.

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

Диски

  1. Если при настройке конфигурации вы не отметили чекбокс Локальный SSD NVMe диск, в качестве загрузочного диска сервера будет использоваться первый указанный сетевой диск. Чтобы настроить его:

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

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

    1.3. Если вы выбрали тип диска Универсальный v2, укажите общее количество операций чтения и записи в IOPS. После создания диска вы можете изменить количество IOPS — уменьшить или увеличить. Количество изменений IOPS не ограничено.

  2. Опционально: добавьте дополнительный сетевой диск сервера:

    2.1. Нажмите Добавить.

    2.2. Выберите тип сетевого диска.

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

    2.4. Если вы выбрали тип диска Универсальный v2, укажите общее количество операций чтения и записи в IOPS. После создания диска вы можете изменить количество IOPS — уменьшить или увеличить. Количество изменений IOPS не ограничено.

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

Сеть

Сервер может быть добавлен в новую приватную подсеть или в уже существующую.

Приватная — подсеть без доступа из интернета или с одним статическим публичным IP-адресом. Публичный IP-адрес подключается к серверу, который будет доступен из интернета.

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

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

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

  4. В поле Приватный IP укажите приватный IP-адрес сервера.

Безопасность

Выберите группы безопасности для фильтрации трафика на портах сервера. Без групп безопасности трафик будет запрещен. Если блок отсутствует, в сети сервера выключена фильтрация трафика (port security). С выключенной фильтрацией трафика весь трафик будет разрешен.

Доступ

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

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

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

  2. Опционально: в поле Пароль для «root»:

    2.1. Скопируйте пароль пользователя root — пользователя с неограниченными правами на все действия над системой.

    2.2. Сохраните пароль в безопасном месте и не передавайте в открытом виде.

Дополнительные настройки

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

    1.1. Чтобы создать новую группу, в поле Группа размещения нажмите Создать.

    1.2. Выберите Новая группа и введите имя группы.

    1.3. Выберите политику размещения на разных хостах:

    • желательно — soft-anti-affinity. Система постарается разместить серверы на разных хостах. Если при создании сервера не будет подходящего хоста, он будет создан на том же хосте;
    • обязательно — anti-affinity. Серверы в группе обязательно располагаются на разных хостах. Если при создании сервера не будет подходящего хоста, сервер не будет создан.

    1.4. Если группа создана, в поле Группа размещения выберите группу размещения.

  2. Чтобы добавить дополнительную информацию или фильтровать серверы в списке, добавьте теги сервера. Автоматически добавляются теги операционной системы и конфигурации. Чтобы добавить новый тег, в поле Теги введите тег.

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

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

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

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

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

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

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

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