2026-04-07 11:35:23 +03:00
# Подключение и работа с кластером Kafka (тариф Full)
## О разделе
2026-04-21 17:35:44 +03:00
В данном разделе описаны способы подключения к управляемому кластеру Kafka. Рассматриваются два варианта: незашифрованное подключение (SASL_PLAINTEXT) и зашифрованное подключение с использованием SSL-сертификатов (SASL_SSL). Также приведены примеры работы с клиентскими утилитами.
2026-04-07 11:35:23 +03:00
## Предварительные требования
Для работы с кластером Kafka необходимо наличие следующих компонентов:
1. **Установленный клиент Kafka ** - скачивается дистрибутив Kafka (например, kafka_2.13-4.2.0) и распаковывается в удобную директорию;
2026-04-21 17:35:44 +03:00
2. **Установленная Java ** - для работы с Kafka требуется среда выполнения Java. Установка выполняется командой: **sudo apt install openjdk-17-jre-headless. ** Рекомендуется использовать версию OpenJDK 17 или выше;
2026-04-07 11:35:23 +03:00
3. **Доступ к брокерам ** - адреса брокеров (bootstrap servers) предоставляются после развертывания кластера;
4. **Учетные данные ** - пользователи создаются по Вашему запросу. Например, с правами чтения топиков и записи в них.
5. **Корневой сертификат (для SSL-подключения) ** - сертификат для зашифрованного подключения предоставляется файлом при заказе сервиса Kafka.
## Структура клиентского дистрибутива
После распаковки архива Kafka в директории bin доступны скрипты, например:
|Скрипт|Назначение|
|---|---|
2026-04-21 17:35:44 +03:00
|`kafka-console-producer.sh` |Отправка сообщений в топик|
|`kafka-console-consumer.sh` |Чтение сообщений из топика
2026-04-07 11:35:23 +03:00
В разделе ниже приведены примеры использования скриптов.
2026-04-21 17:35:44 +03:00
Подробное описание операций с данными и другими скриптами приведено в [официальной документации Kafka ](https://kafka.apache.org/42/getting-started/introduction/ ). Дополнительную информацию можно получить, выполнив любой скрипт с флагом --help:
2026-04-07 11:35:23 +03:00
```
./kafka-console-producer.sh
```
## Конфигурационные файлы клиента
2026-04-21 17:35:44 +03:00
Для подключения к Kafka используется файл настроек (client.properties), который содержит параметры аутентификации, протокола и его механизмов (рекомендуются SCRAM_SHA_512 и SCRAM_SHA_256).
2026-04-07 11:35:23 +03:00
### Незашифрованное подключение (SASL_PLAINTEXT)
2026-04-21 17:35:44 +03:00
Создается файл client.properties со следующим содержимым:
2026-04-07 11:35:23 +03:00
```
2026-04-21 17:35:44 +03:00
sasl.mechanism=SCRAM-SHA-512
security.protocol=SASLPLAINTEXT
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
username="вашлогин" \
2026-04-07 11:35:23 +03:00
password="вашпароль";
```
### Зашифрованное подключение (SASL_SSL)
2026-04-21 17:35:44 +03:00
Для зашифрованного подключения (в production-средах рекомендуется использовать именно его) дополнительно требуется корневой сертификат и хранилище доверенных сертификатов (truststore).
2026-04-07 11:35:23 +03:00
2026-04-21 17:35:44 +03:00
Шаг 1. Создание truststore
2026-04-07 11:35:23 +03:00
С помощью утилиты **keytool ** выполняется импорт сертификата в хранилище:
```
2026-04-21 17:35:44 +03:00
keytool -importcert -storetype PKCS12 -keystore /путь/к/трастстору/truststore.jks -alias myalias -file ca.crt -storepass любойвашпароль -keypass любойвашпароль
2026-04-07 11:35:23 +03:00
```
2026-04-21 17:35:44 +03:00
Параметры:
- keystore - путь к создаваемому хранилищу;
- alias - псевдоним сертификата в хранилище;
- file - путь к загруженному корневому сертификату;
- storepass - пароль для доступа к хранилищу;
- keypass - пароль для доступа к ключу.
2026-04-07 11:35:23 +03:00
2026-04-21 17:35:44 +03:00
Шаг 2. Настройка client.properties
2026-04-07 11:35:23 +03:00
В файл **client.properties ** добавляются параметры SSL:
```
2026-04-21 17:35:44 +03:00
sasl.mechanism=SCRAM-SHA-512
security.protocol=SASLSSL
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
username="вашлогин" \
password="вашпароль";
ssl.truststore.location=/путь/к/трастстору/truststore.jks
2026-04-07 11:35:23 +03:00
ssl.truststore.password=парольотхранилища
```
## Примеры подключения
2026-04-21 17:35:44 +03:00
Для незашифрованного подключения (SASL_PLAINTEXT) используется порт 9091;
Для зашифрованного подключения (SASL_SSL) используется порт 9092.
2026-04-07 11:35:23 +03:00
### Отправка сообщения в топик
Выполняется команда с указанием брокеров, файла конфигурации и топика:
```
./kafka-console-producer.sh --bootstrap-server <IP_брокера_0>:9092,<IP_брокера_1>:9092,<IP_брокера_2>:9092 --command-config~/client.properties --topic test-topic
```
2026-04-21 17:35:44 +03:00
Параметры:
2026-04-07 11:35:23 +03:00
2026-04-21 17:35:44 +03:00
- bootstrap-server - список брокеров кластера (адреса и порты);
- command-config - путь к файлу с настройками клиента;
2026-04-07 11:35:23 +03:00
После выполнения команды сообщения вводятся построчно. Для завершения используется сочетание клавиш Ctrl+C.
2026-04-21 17:35:44 +03:00
### Чтение сообщений из топика
2026-04-07 11:35:23 +03:00
Выполняется команда с указанием топика и, при необходимости, consumer group:
```
./kafka-console-consumer.sh --bootstrap-server <IP_брокера_0>:9092,<IP_брокера_1>:9092,<IP_брокера_2>:9092 --command-config~/client.properties --topic test-topic --from-beginning --group my-new-consumer-group
```
2026-04-21 17:35:44 +03:00
Параметры:
2026-04-07 11:35:23 +03:00
2026-04-21 17:35:44 +03:00
- **from-beginning** - чтение всех сообщений с начала (при отсутствии параметра чтение начинается с новых сообщений);
- **group** - название consumer group, которая при её указании создастся автоматически.
2026-04-07 11:35:23 +03:00
## Администрирование кластера
: : : info
2026-04-21 17:35:44 +03:00
Для изменения параметров кластера Kafka (CPU, RAM, DISK, количества брокеров, параметров топиков) необходимо направить запрос в Service Desk по адресу servicedesk@datafort .ru с указанием требуемых значений.
2026-04-07 11:35:23 +03:00
: : :
### Изменение количества брокеров
Выполняется также через обращение в техническую поддержку.
2026-04-21 17:35:44 +03:00
2026-04-07 11:35:23 +03:00
Брокеров в кластере рекомендуется поддерживать **нечетным ** для корректной работы механизмов выборов лидера.
: : : info
Операция перераспределения партиций требует времени и может создавать дополнительную нагрузку на кластер. Выполнение рекомендуется в период наименьшей активности.
: : :