правки kafka

This commit is contained in:
Левченко Людмила Алексеевна
2026-04-30 12:06:57 +03:00
parent c01886e49b
commit 3a96cb441e
7 changed files with 173 additions and 164 deletions
+11
View File
@@ -176,6 +176,17 @@ export default defineConfig({
], ],
}, },
{text: 'Параметры конфигурации IPSEC', link: '/PaaS/IPSEC.md'}, {text: 'Параметры конфигурации IPSEC', link: '/PaaS/IPSEC.md'},
{ text: 'Apache-Kafka', link: '/PaaS/Apache-Kafka/Kafka-index.md',
collapsed: true,
items: [
{text: 'Обзор сервиса', link: '/PaaS/Apache-Kafka/about-service.md'},
{text: 'Работа с кластером Kafka по тарифу Base', link: '/PaaS/Apache-Kafka/base-tier-connection.md'},
{text: 'Настройка топика по тарифу Base', link: '/PaaS/Apache-Kafka/base-tier-topics-guide.md'},
{text: 'Конфигурация кластера', link: '/PaaS/Apache-Kafka/cluster-configuretion.md'},
{text: 'Работа с кластером Kafka по тарифу Full', link: '/PaaS/Apache-Kafka/full-tier-connection.md'},
],
},
], ],
// '/billing/': [ // '/billing/': [
+22
View File
@@ -0,0 +1,22 @@
---
section_links:
- title: Назначение сервиса
link: /Apache-Kafka/about-service.md
description: Назначения и преимущества сервиса
- title: Работа с кластером Kafka по тарифу Base
link: /Apache-Kafka/base-tier-connection.md
description: Подключение и работа с кластером Kafka по тарифу Base
- title: Настройка топика по тарифу Base
link: /Apache-Kafka/base-tier-topics-guide.md
description: Рекомендации по настройке топика Kafka по тарифу Base
- title: Конфигурация кластера
link: /Apache-Kafka/cluster-configuretion.md
description: Конфигурации и возможности кластера Kafka
- title: Работа с кластером Kafka по тарифу Full
link: /Apache-Kafka/full-tier-connection.md
description: Подключение и работа с кластером Kafka по тарифу Full
---
# Apache-Kafka
В данном разделе представлена документация по управляемому сервису **Apache-Kafka** платформы Beeline Cloud.
+19 -34
View File
@@ -8,37 +8,22 @@
## Основные понятия ## Основные понятия
### Продюсер (Producer) | Термин | Описание |
|--------------------------------|----------|
Программный компонент, который отправляет данные в Kafka. Продюсером может выступать любой сервис, генерирующий события: модуль приложения, система логирования, датчик IoT-устройства. | **Продюсер (Producer)** | Программный компонент, который отправляет данные в Kafka. Продюсером может выступать любой сервис, генерирующий события: модуль приложения, система логирования, датчик IoT-устройства. |
| **Консьюмер (Consumer)** | Программный компонент, который получает данные из Kafka. Консьюмер подписывается на интересующие его события и обрабатывает поступающие сообщения. |
### Консьюмер (Consumer) | **Топик (Topic)** | Именованный канал для хранения сообщений определённого типа. Топики организуют потоки данных по смыслу: например, «заказы», «ошибки», «события авторизации». Консьюмеры подписываются на один или несколько топиков для получения релевантных данных. |
| **Партиция (Partition)** | Каждый топик разделяется на партиции - логические сегменты, распределяемые между серверами кластера. Партиции обеспечивают параллельную обработку данных: различные части одного топика могут обрабатываться одновременно несколькими консьюмерами. |
Программный компонент, который получает данные из Kafka. Консьюмер подписывается на интересующие его события и обрабатывает поступающие сообщения. | **Репликация (Replication)** | Для обеспечения отказоустойчивости партиции копируются на несколько серверов (брокеров). При выходе одного сервера из строя данные остаются доступными на других узлах кластера. |
| **Микросервисная архитектура** | Kafka является стандартным решением для организации связи между микросервисами. В такой архитектуре сервисы обмениваются событиями асинхронно, что повышает надёжность и масштабируемость системы в целом. |
### Топик (Topic)
Именованный канал для хранения сообщений определённого типа. Топики организуют потоки данных по смыслу: например, «заказы», «ошибки», «события авторизации». Консьюмеры подписываются на один или несколько топиков для получения релевантных данных.
### Партиция (Partition)
Каждый топик разделяется на партиции - логические сегменты, распределяемые между серверами кластера. Партиции обеспечивают параллельную обработку данных: различные части одного топика могут обрабатываться одновременно несколькими консьюмерами.
### Репликация (Replication)
Для обеспечения отказоустойчивости партиции копируются на несколько серверов (брокеров). При выходе одного сервера из строя данные остаются доступными на других узлах кластера.
### Микросервисная архитектура
Kafka является стандартным решением для организации связи между микросервисами. В такой архитектуре сервисы обмениваются событиями асинхронно, что повышает надёжность и масштабируемость системы в целом.Преимущества управляемого сервиса
## Преимущества управляемого сервиса ## Преимущества управляемого сервиса
### Администрирование #### Администрирование
Клиенту не требуется самостоятельно разворачивать и обслуживать кластер Kafka. Мы берём на себя управление инфраструктурой, обновление версий, масштабирование и поддержку работоспособности. Клиенту не требуется самостоятельно разворачивать и обслуживать кластер Kafka. Сервис включает в себя управление инфраструктурой, обновление версий, масштабирование и поддержку работоспособности.
### Мониторинг #### Мониторинг
Предоставляются готовые дашборды в Grafana с визуализацией ключевых метрик: Предоставляются готовые дашборды в Grafana с визуализацией ключевых метрик:
@@ -47,17 +32,17 @@ Kafka является стандартным решением для орган
- настроенная система оповещений о критических событиях; - настроенная система оповещений о критических событиях;
- заполнение дискового пространства. - заполнение дискового пространства.
### Безопасность #### Безопасность
Поддерживается шифрованное подключение к кластеру с использованием SSL/TLS-сертификатов, что гарантирует защиту данных при передаче. Поддерживается шифрованное подключение к кластеру с использованием SSL/TLS-сертификатов, что гарантирует защиту данных при передаче.
### Экспертная поддержка #### Экспертная поддержка
Мы обладаем практическим опытом администрирования более 500 кластеров Kafka. Накопленная экспертиза позволяет обеспечивать стабильность работы, своевременно выявлять и устранять потенциальные проблемы, оптимизировать конфигурации под конкретные задачи. Сервис создан с учётом практического опыта администрирования более 500 кластеров Kafka. Накопленная экспертиза позволяет обеспечивать стабильность работы, своевременно выявлять и устранять потенциальные проблемы, оптимизировать конфигурации под конкретные задачи.
## Тарифные планы ## Тарифные планы
### Base ### 1. Тариф "Base"
Тарифный план для тех, кто имеет собственную экспертизу в работе с Kafka и желает самостоятельно управлять объектами верхнего уровня. Тарифный план для тех, кто имеет собственную экспертизу в работе с Kafka и желает самостоятельно управлять объектами верхнего уровня.
@@ -69,14 +54,14 @@ Kafka является стандартным решением для орган
**Возможности:** **Возможности:**
- **Управление учетными записями и правами доступа** - создание пользователей и настройка их прав для работы с Kafka; - **Управление учетными записями и правами доступа** создание пользователей и настройка их прав для работы с Kafka;
- **Администрирование топиков** - полный цикл управления: создание, конфигурирование, настройка параметров и удаление; - **Администрирование топиков** - полный цикл управления: создание, конфигурирование, настройка параметров и удаление;
- **Управление консьюмер-группами (Consumer Groups)** - возможность создавать, изменять и удалять логические объединения консьюмеров, которые совместно читают сообщения из топиков. Это обеспечивает высокую производительность и отказоустойчивость при обработке данных; - **Управление консьюмер-группами (Consumer Groups)**  возможность создавать, изменять и удалять логические объединения консьюмеров, которые совместно читают сообщения из топиков. Это обеспечивает высокую производительность и отказоустойчивость при обработке данных;
- **Работа с transactional ID** - полный цикл управления транзакционными идентификаторами (создание, изменение, удаление). Транзакционный идентификатор присваивается продюсеру Kafka для обеспечения атомарности операций: запись нескольких сообщений или коммит оффсетов выполняются по принципу «всё или ничего», а также предотвращается появление «зомби-продюсеров» при перезапусках. - **Работа с transactional ID**  полный цикл управления транзакционными идентификаторами (создание, изменение, удаление). Транзакционный идентификатор присваивается продюсеру Kafka для обеспечения атомарности операций: запись нескольких сообщений или коммит оффсетов выполняются по принципу «всё или ничего», а также предотвращается появление «зомби-продюсеров» при перезапусках.
Инфраструктурное ядро кластера (брокеры, репликация, отказоустойчивость) остаётся под управлением провайдера. Инфраструктурное ядро кластера (брокеры, репликация, отказоустойчивость) остаётся под управлением провайдера.
### Full ### 2. Тариф "Full"
Тарифный план для тех, кто предпочитает полностью делегировать задачи по администрированию Kafka. Тарифный план для тех, кто предпочитает полностью делегировать задачи по администрированию Kafka.
+20 -16
View File
@@ -1,7 +1,5 @@
# Подключение и работа с кластером Kafka (тариф Base) # Подключение и работа с кластером Kafka (тариф Base)
## О разделе
Раздел содержит описание способов подключения к управлению кластером Kafka. Поддерживаются два типа подключения: Раздел содержит описание способов подключения к управлению кластером Kafka. Поддерживаются два типа подключения:
- `SASL_PLAINTEXT` - незашифрованное; - `SASL_PLAINTEXT` - незашифрованное;
- `SASL_SSL` - зашифрованное (через SSL-сертификат). - `SASL_SSL` - зашифрованное (через SSL-сертификат).
@@ -11,6 +9,7 @@
## Предварительные требования ## Предварительные требования
Для начала работы с кластером Kafka необходимо выполнить предварительную настройку: Для начала работы с кластером Kafka необходимо выполнить предварительную настройку:
1. **Установить клиент Kafka** - скачивается дистрибутив Kafka (например, kafka_2.13-4.2.0) и распаковывается в удобную директорию; 1. **Установить клиент Kafka** - скачивается дистрибутив Kafka (например, kafka_2.13-4.2.0) и распаковывается в удобную директорию;
2. **Установить среду выполнения Java** - для работы необходимо установить среду выполнения, с помощью команды: `**sudo apt install openjdk-17-jre-headless**`. Рекомендуется использовать версию OpenJDK 17 или выше; 2. **Установить среду выполнения Java** - для работы необходимо установить среду выполнения, с помощью команды: `**sudo apt install openjdk-17-jre-headless**`. Рекомендуется использовать версию OpenJDK 17 или выше;
3. **Доступ к брокерам** - адреса брокеров (bootstrap servers) предоставляются после развертывания кластера; 3. **Доступ к брокерам** - адреса брокеров (bootstrap servers) предоставляются после развертывания кластера;
@@ -40,11 +39,11 @@
./kafka-topics.sh --help ./kafka-topics.sh --help
``` ```
### Конфигурационные файлы клиента #### Конфигурационные файлы клиента
Для подключения к Kafka используется файл настроек **client.properties**, который содержит параметры аутентификации, протокола и его механизмов (рекомендуются SCRAM_SHA_512 и SCRAM_SHA_256). Для подключения к Kafka используется файл настроек **client.properties**, который содержит параметры аутентификации, протокола и его механизмов (рекомендуются SCRAM_SHA_512 и SCRAM_SHA_256).
### Незашифрованное подключение (SASL_PLAINTEXT) ## Незашифрованное подключение (SASL_PLAINTEXT)
Создается файл **client.properties** со следующим содержимым: Создается файл **client.properties** со следующим содержимым:
@@ -56,11 +55,19 @@ sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule require
    password="вашпароль";     password="вашпароль";
``` ```
### Зашифрованное подключение (SASL_SSL) ::: warning Примечание
Для незашифрованного подключения (SASL_PLAINTEXT) используется порт 9091;
:::
## Зашифрованное подключение (SASL_SSL)
Для зашифрованного подключения (в production-средах рекомендуется использовать именно его) дополнительно требуется корневой сертификат и хранилище доверенных сертификатов (truststore). Для зашифрованного подключения (в production-средах рекомендуется использовать именно его) дополнительно требуется корневой сертификат и хранилище доверенных сертификатов (truststore).
#### Шаг 1. Создание truststore ::: warning Примечание
Для зашифрованного подключения (SASL_SSL) используется порт 9092.
:::
### Шаг 1. Создание truststore
С помощью утилиты **keytool** выполняется импорт сертификата в хранилище: С помощью утилиты **keytool** выполняется импорт сертификата в хранилище:
@@ -76,7 +83,7 @@ keytool -importcert -storetype PKCS12 -keystore /путь/к/трастстор
- **storepass** - пароль для доступа к хранилищу; - **storepass** - пароль для доступа к хранилищу;
- **keypass** - пароль для доступа к ключу. - **keypass** - пароль для доступа к ключу.
#### Шаг 2. Настройка client.properties ### Шаг 2. Настройка client.properties
В файл **client.properties** добавляются параметры SSL: В файл **client.properties** добавляются параметры SSL:
@@ -90,10 +97,7 @@ ssl.truststore.location=/путь/к/трастстору/truststore.jks
ssl.truststore.password=парольотхранилища ssl.truststore.password=парольотхранилища
``` ```
## Примеры подключения ## Работа с кластером Kafka
Для незашифрованного подключения (SASL_PLAINTEXT) используется порт 9091;
Для зашифрованного подключения (SASL_SSL) используется порт 9092.
### Создание топиков ### Создание топиков
@@ -139,12 +143,12 @@ command-config - путь к файлу с настройками клиент
Параметры: Параметры:
- **from-beginning **- чтение всех сообщений с начала (при отсутствии параметра чтение начинается с новых сообщений); - **from-beginning**- чтение всех сообщений с начала (при отсутствии параметра чтение начинается с новых сообщений);
- **group** - название consumer group, которая создастся автоматически. - **group** - название consumer group, которая создастся автоматически.
## Управление пользователями и доступом ## Управление пользователями и доступом
#### Рекомендации к паролям ### Рекомендации к созданию пароля
**Длина пароля (рекомендуемая):** **Длина пароля (рекомендуемая):**
@@ -219,11 +223,11 @@ sudo ./kafka-acls.sh --bootstrap-server <IP_брокера_0>:9092,<IP_брок
## Администрирование кластера ## Администрирование кластера
### Изменение объема RAM #### Изменение объема RAM
Для изменения объема оперативной памяти, выделенной под Kafka, направляется обращение в техническую поддержку с указанием требуемого объема RAM. Для изменения объема оперативной памяти, выделенной под Kafka, направляется обращение в техническую поддержку с указанием требуемого объема RAM.
### Изменение количества брокеров #### Изменение количества брокеров
Выполняется также через обращение в техническую поддержку. Выполняется также через обращение в техническую поддержку.
@@ -235,6 +239,6 @@ sudo ./kafka-acls.sh --bootstrap-server <IP_брокера_0>:9092,<IP_брок
./kafka-reassign-partitions.sh --bootstrap-server <адреса_брокеров> --generate --topics-to-move-json-file topics.json --broker-list "0,1,2" --execute ./kafka-reassign-partitions.sh --bootstrap-server <адреса_брокеров> --generate --topics-to-move-json-file topics.json --broker-list "0,1,2" --execute
``` ```
::: info ::: warning Примечание
Операция перераспределения партиций требует времени и может создавать дополнительную нагрузку на кластер. Выполнение рекомендуется в период наименьшей активности. Операция перераспределения партиций требует времени и может создавать дополнительную нагрузку на кластер. Выполнение рекомендуется в период наименьшей активности.
::: :::
+13 -31
View File
@@ -1,6 +1,4 @@
# Настройка топика # Рекомендации по настройке топика (тариф Base)
## Рекомендации по настройке топика (тариф Base)
В разделе описаны основные параметры топиков Apache Kafka, влияющие на производительность, отказоустойчивость и параллелизм обработки данных. В разделе описаны основные параметры топиков Apache Kafka, влияющие на производительность, отказоустойчивость и параллелизм обработки данных.
@@ -20,14 +18,6 @@
- не рекомендуется использовать имена, различающиеся только точкой и подчёркиванием (например, `topic_1` и `topic.1`): Kafka не различает такие названия; - не рекомендуется использовать имена, различающиеся только точкой и подчёркиванием (например, `topic_1` и `topic.1`): Kafka не различает такие названия;
- имена с двойным подчёркиванием в начале (например, `__consumer_offsets`) зарезервированы для внутренних топиков Kafka. - имена с двойным подчёркиванием в начале (например, `__consumer_offsets`) зарезервированы для внутренних топиков Kafka.
::: tip
Избегайте использования имен, отличающихся только точкой и подчеркиванием (например, topic_1 и topic.1), так как Kafka не различает такие названия
:::
::: tip
Не используйте имена, начинающиеся с двойного подчеркивания (__), например, **__consumer_offsets**. Эти имена зарезервированы для внутренних топиков Kafka.
:::
### Количество партиций (partitions) ### Количество партиций (partitions)
Партиции определяют уровень параллелизма при чтении и записи данных. Количество партиций выбирается исходя из требуемой пропускной способности. Партиции определяют уровень параллелизма при чтении и записи данных. Количество партиций выбирается исходя из требуемой пропускной способности.
@@ -50,33 +40,25 @@ Partitions = max(NP, NC)
- TP - максимальная пропускная способность одного продюсера для одной партиции; - TP - максимальная пропускная способность одного продюсера для одной партиции;
- TC - максимальная пропускная способность одного консьюмера для одной партиции. - TC - максимальная пропускная способность одного консьюмера для одной партиции.
### Фактор репликации (replication-factor) ## Фактор репликации (replication-factor)
Фактор репликации определяет количество копий данных, хранящихся на разных брокерах. Фактор репликации определяет количество копий данных, хранящихся на разных брокерах.
> **Рекомендация для production-сред:** установите значение **3**. **Рекомендация для production-сред:** установите значение **3**.
> При этом каждая партиция получает одного лидера и две реплики, что обеспечивает отказоустойчивость при выходе одного брокера. При этом каждая партиция получает одного лидера и две реплики, что обеспечивает отказоустойчивость при выходе одного брокера.
## Дополнительные параметры конфигурации ## Дополнительные параметры конфигурации
### `min.insync.replicas` (минимальное количество синхронизированных реплик) Параметр `min.insync.replicas` (минимальное количество синхронизированных реплик) работает вместе с настройкой продюсера `acks=all`. Он задаёт, сколько реплик (включая лидера) должны подтвердить запись, чтобы она считалась успешной.
Параметр действует совместно с настройкой продюсера `acks=all`. Определяет минимальное количество синхронизированных реплик (включая лидера), которые должны подтвердить запись для её успешного завершения. **Для production-кластера с фактором репликации = 3**
Установите `min.insync.replicas = 2`.
**Рекомендация:** при факторе репликации = 3 установите `min.insync.replicas = 2`. Что это даёт:
**Эффекты:** - **надёжность** — данные точно попали минимум на два брокера;
- **надёжность** — данные записаны минимум на два брокера; - **доступность** — если один брокер упадёт, запись продолжится.
- **доступность** — при отказе одного брокера запись продолжается.
> **Важно:** не устанавливайте значение, равное фактору репликации (например, 3). ::: warning Примечание
> В противном случае при перезагрузке одного брокера запись в топик станет невозможной: система будет ожидать подтверждения от всех трёх реплик. Не рекомендуется устанавливать значение равным фактору репликации (например, `min.insync.replicas = 3`). Если один брокер перезагрузится, запись в топик станет невозможной система будет ждать подтверждения от всех трёх реплик, а одна недоступна.
:::
При факторе репликации = 3 рекомендуется установить значение **2**. Это обеспечивает:
- **надежность**: данные записаны минимум на два брокера;
- **доступность**: при отказе одного брокера запись продолжается.
::: tip
Не рекомендуется устанавливать значение равным фактору репликации (например, 3). В этом случае при перезагрузке одного брокера запись в топик станет невозможной, так как для подтверждения потребуется подтверждение от всех трех реплик.
:::
+50 -53
View File
@@ -1,51 +1,43 @@
# Конфигурация кластера # Конфигурация кластера
## О разделе В разделе описаны технические параметры кластера Kafka и порядок их первичной настройки.
Данный раздел описывает технические параметры кластера Kafka и порядок их первичной конфигурации. Конфигурация выполняется администратором облачного провайдера на этапе развёртывания сервиса. Пользователь не имеет прямого доступа к изменению этих параметров. Перед созданием кластера клиент передаёт менеджеру перечень требуемых параметров. Администратор выполняет настройку в соответствии с согласованными требованиями.
Настройка указанных параметров выполняется администратором облачного провайдера на этапе развертывания сервиса. Пользователь не имеет прямого доступа к их самостоятельной установке.
Перед созданием кластера клиент предоставляет перечень требуемых параметров менеджеру. Администратор облачного провайдера выполняет конфигурацию в соответствии с согласованными требованиями.
## Выбор типа и размера дискового хранилища ## Выбор типа и размера дискового хранилища
Производительность брокера сообщений напрямую зависит от скорости, с которой он может читать и записывать данные на диск. При заказе кластера необходимо выбрать тип дискового хранилища, который определит максимальную скорость работы (IOPS) и время отклика. Производительность брокера сообщений напрямую зависит от скорости чтения и записи на диск. При заказе кластера необходимо выбрать тип дискового хранилища — он определяет максимальную скорость работы (IOPS) и время отклика.
**IOPS**- количество операций чтения или записи, которые диск может выполнить за секунду. Чем выше этот показатель, тем быстрее брокер сообщений обрабатывает запросы. **IOPS** (Input/Output Operations Per Second) — количество операций чтения или записи, которые диск выполняет за секунду. Чем выше IOPS, тем быстрее брокер обрабатывает запросы.
: : : info ::: warning Примечание
Каждые 15 IOPS обеспечивают примерно 1 мегабит в секунду (Мбит/с) скорости чтения или записи при размере блока данных 64 КБ. Каждые 15 IOPS обеспечивают примерно 1 Мбит/с скорости чтения или записи при размере блока данных 64 КБ.
: : : :::
### Доступные типы хранилищ: ### Доступные типы хранилищ:
|Название|Лимит IOPS| |Название | Лимит IOPS |
|---|---| |---------------|--------------------|
|**Fast SAS**|до 2 IOPS на 1 ГБ| |**Fast SAS** | до 2 IOPS на 1 ГБ |
|**SSD**|до 5 IOPS на 1 ГБ| |**SSD** | до 5 IOPS на 1 ГБ |
|**Fast SSD**|до 10 IOPS на 1 ГБ| |**Fast SSD** | до 10 IOPS на 1 ГБ |
|**Ultra NVMe**|до 25 IOPS на 1 ГБ| |**Ultra NVMe** | до 25 IOPS на 1 ГБ |
: : : info ::: warning Примечание
После выбора типа диска необходимо указать объем дискового хранилища, который будет выделен под данные кластера Kafka. Минимальный объем зависит от выбранного типа хранилища После выбора типа диска необходимо указать объем дискового хранилища, который будет выделен под данные кластера Kafka. Минимальный объем зависит от выбранного типа хранилища
: : : :::
## Конфигурация вычислительных ресурсов ## Конфигурация вычислительных ресурсов
В данном разделе определяются вычислительные мощности кластера: процессорные ресурсы, оперативная память и количество серверов (нод), из которых будет состоять кластер Kafka. В данном разделе определяются вычислительные мощности кластера: процессорные ресурсы, оперативная память и количество серверов (нод), из которых будет состоять кластер Kafka.
### Количество нод в кластере #### Основные понятия
Количество нод определяет отказоустойчивость кластера и возможность распределять запросы на чтение между репликами. Чем больше нод, тем выше надежность и производительность чтения. Количество нод выбирается в диапазоне от 3 до 14. | Термин | Описание |
|-------------------------------|----------|
### Процессор (CPU) | **Количество нод в кластере** | Количество нод определяет отказоустойчивость кластера и возможность распределять запросы на чтение между репликами. Чем больше нод, тем выше надежность и производительность чтения. Количество нод выбирается в диапазоне от 3 до 14. |
| **Процессор (CPU)** | Процессор - это вычислительная мощность, которая выделяется каждой ноде кластера. Количество vCPU определяет, насколько быстро брокер сообщений сможет обрабатывать запросы, выполнять сложные операции (сортировки, объединения таблиц) и обслуживать одновременные подключения. Доступный диапазон выбора процессора: от 2 шт до 24 шт. |
Процессор - это вычислительная мощность, которая выделяется каждой ноде кластера. Количество vCPU определяет, насколько быстро брокер сообщений сможет обрабатывать запросы, выполнять сложные операции (сортировки, объединения таблиц) и обслуживать одновременные подключения. Доступный диапазон выбора процессора: от 2 шт до 24 шт. | **Оперативная память (RAM)** | Оперативная память - один из ключевых ресурсов для производительности. Данные, помещающиеся в RAM, обрабатываются максимально быстро, без обращения к диску. Доступный диапазон выбора оперативной памяти: от 4 ГБ до 768 ГБ. |
### Оперативная память (RAM)
Оперативная память - один из ключевых ресурсов для производительности. Данные, помещающиеся в RAM, обрабатываются максимально быстро, без обращения к диску. Доступный диапазон выбора оперативной памяти: от 4 ГБ до 768 ГБ.
## Интернет ## Интернет
@@ -61,41 +53,46 @@
- 500 Мбит/с; - 500 Мбит/с;
- 1000 Мбит/с (1 Гбит/с). - 1000 Мбит/с (1 Гбит/с).
: : : info ::: warning Примечание
Для выбранного канала предоставляется публичный IP-адрес. Для выбранного канала предоставляется **публичный IP-адрес**.
: : : :::
## Сетевой доступ к кластеру ## Сетевой доступ к кластеру
Для организации защищенного подключения к кластеру Kafka доступны стандартные механизмы, используемые во всех сервисах платформы: Выбор способа подключения зависит от архитектуры приложений и требований к безопасности. Доступны два варианта:
- **IPsec-подключение** - организация защищенного туннеля между инфраструктурой и кластером Kafka. Подробнее см. раздел IPSEC; - **IPsec-подключение** организация защищённого туннеля между инфраструктурой клиента и кластером Kafka. Подробнее см. раздел «IPsec»;
- **Interconnect** - прямое сетевое соединение между сервисами внутри платформы без выхода в интернет. Подробнее см. раздел Interconnect. - **Interconnect** прямое сетевое соединение между сервисами внутри платформы без использования публичных сетей. Подробнее см. раздел «Interconnect».
Для построения Interconnect-соединения требуется сначала заказать PaaS-сервис и дождаться его предоставления, после чего отдельно заказать Interconnect через менеджера. **Особенности Interconnect:**
- сначала закажите PaaS-сервис и дождитесь его предоставления;
- затем отдельно закажите Interconnect через менеджера.
Выбор конкретного способа подключения зависит от архитектуры приложений и требований к безопасности. ## Калькулятор расчёта кластера
# Калькулятор Для расчёта параметров кластера Kafka разработан специализированный калькулятор — простое веб-приложение.
Для облегчения расчета параметров кластера Kafka разработан специализированный калькулятор - простое одностраничное приложение. В калькулятор вносятся исходные данные о планируемой нагрузке, после чего по нажатию кнопки **Получить** производится автоматический расчет конфигурации кластера. **Как работает:**
- в калькулятор вносятся исходные данные о планируемой нагрузке (пропускная способность, количество партиций и т.д.);
- после нажатия кнопки **«Получить»** автоматически рассчитывается конфигурация кластера.
Все поля обязательны для заполнения. Формы можно удалять, добавлять и дублировать ранее заполненные, что позволяет гибко настраивать параметры под различные сценарии использования. Все поля обязательны для заполнения. Формы можно удалять, добавлять и дублировать — это позволяет гибко настраивать параметры под разные сценарии использования.
## Параметры топиков ## Параметры топиков
|Параметр|Описание| | Параметр |Описание |
|---|---| |---------------------------------------|---------|
|**Имя топика**|Уникальное наименование топика в рамках кластера. Поле обязательное. Используется для идентификации топика при расчетах.| | **Имя топика** |Уникальное наименование топика в рамках кластера. Поле обязательное. Используется для идентификации топика при расчетах.|
|**Число партиций**|Количество партиций, на которые будет разбит топик. Значение должно быть больше числа консьюмеров.| | **Число партиций** |Количество партиций, на которые будет разбит топик. Значение должно быть больше числа консьюмеров.|
|**Фактор репликации**|Количество копий данных, хранящихся на разных брокерах. Для продуктивных кластеров рекомендуется значение не менее 3. <br>**Примечание:** Количество узлов кластера формируется на основании параметра фактора репликации. Рекомендуется выбирать нечетное количество узлов для корректной работы механизмов выборов лидера.| | **Фактор репликации** |Количество копий данных, хранящихся на разных брокерах. Для продуктивных кластеров рекомендуется значение не менее 3. <br>**Примечание:** Количество узлов кластера формируется на основании параметра фактора репликации. Рекомендуется выбирать нечетное количество узлов для корректной работы механизмов выборов лидера.|
|**Средний размер сообщения**|Средний объем одного сообщения, передаваемого через топик.| | **Средний размер сообщения** |Средний объем одного сообщения, передаваемого через топик.|
|**Максимальный размер сообщения**|Максимальный объем одного сообщения. Используется для расчета пиковых нагрузок.| | **Максимальный размер сообщения** |Максимальный объем одного сообщения. Используется для расчета пиковых нагрузок.|
|**Частота сообщений**|Количество сообщений, отправляемых в топик за единицу времени.| | **Частота сообщений** |Количество сообщений, отправляемых в топик за единицу времени.|
|**Срок хранения сообщения**|Период времени, в течение которого сообщения хранятся в топике после записи. По истечении этого срока данные удаляются.| | **Срок хранения сообщения** |Период времени, в течение которого сообщения хранятся в топике после записи. По истечении этого срока данные удаляются.|
|**Имя продюсера**|Наименование приложения-отправителя (для идентификации в расчетах)| | **Имя продюсера** |Наименование приложения-отправителя (для идентификации в расчетах)|
|**Количество экземпляров продюсера**|Число одновременно работающих экземпляров продюсера.| | **Количество экземпляров продюсера** |Число одновременно работающих экземпляров продюсера.|
|**Имя консьюмера**|Наименование приложения-получателя (для идентификации в расчетах).| | **Имя консьюмера** |Наименование приложения-получателя (для идентификации в расчетах).|
|**Количество экземпляров консьюмера**|Число одновременно работающих экземпляров консьюмера. <br>**Примечание:** Формы продюсеров и консьюмеров можно добавлять, удалять и дублировать. Это позволяет учитывать множественные источники и приемники данных в рамках одного расчета.| | **Количество экземпляров консьюмера** |Число одновременно работающих экземпляров консьюмера. <br>**Примечание:** Формы продюсеров и консьюмеров можно добавлять, удалять и дублировать. Это позволяет учитывать множественные источники и приемники данных в рамках одного расчета.|
## Расчет конфигурации кластера ## Расчет конфигурации кластера
+38 -30
View File
@@ -1,27 +1,32 @@
# Подключение и работа с кластером Kafka (тариф Full) # Подключение и работа с кластером Kafka (тариф Full)
## О разделе Раздел содержит описание способов подключения к управлению кластером Kafka. Поддерживаются два типа подключения:
- `SASL_PLAINTEXT` - незашифрованное;
- `SASL_SSL` - зашифрованное (через SSL-сертификат).
В данном разделе описаны способы подключения к управляемому кластеру Kafka. Рассматриваются два варианта: незашифрованное подключение (SASL_PLAINTEXT) и зашифрованное подключение с использованием SSL-сертификатов (SASL_SSL). Также приведены примеры работы с клиентскими утилитами. Также в разделе приведены примеры работы с клиентскими утилитами и базовые операции администрирования.
## Предварительные требования ## Предварительные требования
Для работы с кластером Kafka необходимо наличие следующих компонентов: Для начала работы с кластером Kafka необходимо выполнить предварительную настройку:
1. **Установленный клиент Kafka** - скачивается дистрибутив Kafka (например, kafka_2.13-4.2.0) и распаковывается в удобную директорию; 1. **Установить клиент Kafka** - скачивается дистрибутив Kafka (например, kafka_2.13-4.2.0) и распаковывается в удобную директорию;
2. **Установленная Java** - для работы с Kafka требуется среда выполнения Java. Установка выполняется командой: **sudo apt install openjdk-17-jre-headless.** Рекомендуется использовать версию OpenJDK 17 или выше; 2. **Установить среду выполнения Java** - для работы необходимо установить среду выполнения, с помощью команды: `**sudo apt install openjdk-17-jre-headless**`. Рекомендуется использовать версию OpenJDK 17 или выше;
3. **Доступ к брокерам** - адреса брокеров (bootstrap servers) предоставляются после развертывания кластера; 3. **Доступ к брокерам** - адреса брокеров (bootstrap servers) предоставляются после развертывания кластера;
4. **Учетные данные** - пользователи создаются по Вашему запросу. Например, с правами чтения топиков и записи в них. 4. **Учетные данные**:
- Имя пользователя (username) - стандартное значение client;
- Пароль - предоставляется после развертывания кластера.
5. **Корневой сертификат (для SSL-подключения)** - сертификат для зашифрованного подключения предоставляется файлом при заказе сервиса Kafka. 5. **Корневой сертификат (для SSL-подключения)** - сертификат для зашифрованного подключения предоставляется файлом при заказе сервиса Kafka.
## Структура клиентского дистрибутива  ## Структура клиентского дистрибутива 
После распаковки архива Kafka в директории bin доступны скрипты, например: После распаковки архива Kafka в директории bin доступны скрипты, например:
|Скрипт|Назначение| | Скрипт | Назначение |
|---|---| |---------------------------|--------------------------|
|`kafka-console-producer.sh`|Отправка сообщений в топик| |`kafka-console-producer.sh`|Отправка сообщений в топик|
|`kafka-console-consumer.sh`|Чтение сообщений из топика |`kafka-console-consumer.sh`|Чтение сообщений из топика|
В разделе ниже приведены примеры использования скриптов. В разделе ниже приведены примеры использования скриптов.
Подробное описание операций с данными и другими скриптами приведено в [официальной документации Kafka](https://kafka.apache.org/42/getting-started/introduction/). Дополнительную информацию можно получить, выполнив любой скрипт с флагом --help: Подробное описание операций с данными и другими скриптами приведено в [официальной документации Kafka](https://kafka.apache.org/42/getting-started/introduction/). Дополнительную информацию можно получить, выполнив любой скрипт с флагом --help:
@@ -32,7 +37,7 @@
## Конфигурационные файлы клиента ## Конфигурационные файлы клиента
Для подключения к Kafka используется файл настроек (client.properties), который содержит параметры аутентификации, протокола и его механизмов (рекомендуются SCRAM_SHA_512 и SCRAM_SHA_256). Для подключения к Kafka используется файл настроек **client.properties**, который содержит параметры аутентификации, протокола и его механизмов (рекомендуются SCRAM_SHA_512 и SCRAM_SHA_256).
### Незашифрованное подключение (SASL_PLAINTEXT) ### Незашифрованное подключение (SASL_PLAINTEXT)
@@ -46,11 +51,19 @@ sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule require
    password="вашпароль";     password="вашпароль";
``` ```
::: warning Примечание
Для незашифрованного подключения (SASL_PLAINTEXT) используется порт 9091;
:::
### Зашифрованное подключение (SASL_SSL) ### Зашифрованное подключение (SASL_SSL)
Для зашифрованного подключения (в production-средах рекомендуется использовать именно его) дополнительно требуется корневой сертификат и хранилище доверенных сертификатов (truststore). Для зашифрованного подключения (в production-средах рекомендуется использовать именно его) дополнительно требуется корневой сертификат и хранилище доверенных сертификатов (truststore).
Шаг 1. Создание truststore ::: warning Примечание
Для зашифрованного подключения (SASL_SSL) используется порт 9092.
:::
### Шаг 1. Создание truststore
С помощью утилиты **keytool** выполняется импорт сертификата в хранилище: С помощью утилиты **keytool** выполняется импорт сертификата в хранилище:
@@ -60,13 +73,13 @@ keytool -importcert -storetype PKCS12 -keystore /путь/к/трастстор
Параметры: Параметры:
- keystore - путь к создаваемому хранилищу; - **keystore** - путь к создаваемому хранилищу;
- alias - псевдоним сертификата в хранилище; - **alias** - псевдоним сертификата в хранилище;
- file - путь к загруженному корневому сертификату; - **file** - путь к загруженному корневому сертификату;
- storepass - пароль для доступа к хранилищу; - **storepass** - пароль для доступа к хранилищу;
- keypass - пароль для доступа к ключу. - **keypass** - пароль для доступа к ключу.
Шаг 2. Настройка client.properties ### Шаг 2. Настройка client.properties
В файл **client.properties** добавляются параметры SSL: В файл **client.properties** добавляются параметры SSL:
@@ -80,11 +93,6 @@ ssl.truststore.location=/путь/к/трастстору/truststore.jks
ssl.truststore.password=парольотхранилища ssl.truststore.password=парольотхранилища
``` ```
## Примеры подключения
Для незашифрованного подключения (SASL_PLAINTEXT) используется порт 9091;
Для зашифрованного подключения (SASL_SSL) используется порт 9092.
### Отправка сообщения в топик ### Отправка сообщения в топик
Выполняется команда с указанием брокеров, файла конфигурации и топика: Выполняется команда с указанием брокеров, файла конфигурации и топика:
@@ -95,12 +103,12 @@ ssl.truststore.password=парольотхранилища
Параметры: Параметры:
- bootstrap-server - список брокеров кластера (адреса и порты); - **bootstrap-server** - список брокеров кластера (адреса и порты);
- command-config - путь к файлу с настройками клиента; - **command-config** - путь к файлу с настройками клиента;
После выполнения команды сообщения вводятся построчно. Для завершения используется сочетание клавиш Ctrl+C. После выполнения команды сообщения вводятся построчно. Для завершения используется сочетание клавиш Ctrl+C.
### Чтение сообщений из топика ### Чтение сообщений из топика
Выполняется команда с указанием топика и, при необходимости, consumer group: Выполняется команда с указанием топика и, при необходимости, consumer group:
@@ -115,9 +123,9 @@ ssl.truststore.password=парольотхранилища
## Администрирование кластера ## Администрирование кластера
: : : info ::: warning Примечание
Для изменения параметров кластера Kafka (CPU, RAM, DISK, количества брокеров, параметров топиков) необходимо направить запрос в Service Desk по адресу servicedesk@datafort.ru с указанием требуемых значений. Для изменения параметров кластера Kafka (CPU, RAM, DISK, количества брокеров, параметров топиков) необходимо направить запрос в **Service Desk** по адресу `servicedesk@datafort.ru` с указанием требуемых значений.
: : : :::
### Изменение количества брокеров ### Изменение количества брокеров
@@ -125,6 +133,6 @@ ssl.truststore.password=парольотхранилища
Брокеров в кластере рекомендуется поддерживать **нечетным** для корректной работы механизмов выборов лидера. Брокеров в кластере рекомендуется поддерживать **нечетным** для корректной работы механизмов выборов лидера.
: : : info ::: warning Примечание
Операция перераспределения партиций требует времени и может создавать дополнительную нагрузку на кластер. Выполнение рекомендуется в период наименьшей активности. Операция перераспределения партиций требует времени и может создавать дополнительную нагрузку на кластер. Выполнение рекомендуется в период наименьшей активности.
: : : :::