правки kafka
This commit is contained in:
@@ -176,6 +176,17 @@ export default defineConfig({
|
||||
],
|
||||
},
|
||||
{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/': [
|
||||
|
||||
@@ -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.
|
||||
@@ -8,37 +8,22 @@
|
||||
|
||||
## Основные понятия
|
||||
|
||||
### Продюсер (Producer)
|
||||
|
||||
Программный компонент, который отправляет данные в Kafka. Продюсером может выступать любой сервис, генерирующий события: модуль приложения, система логирования, датчик IoT-устройства.
|
||||
|
||||
### Консьюмер (Consumer)
|
||||
|
||||
Программный компонент, который получает данные из Kafka. Консьюмер подписывается на интересующие его события и обрабатывает поступающие сообщения.
|
||||
|
||||
### Топик (Topic)
|
||||
|
||||
Именованный канал для хранения сообщений определённого типа. Топики организуют потоки данных по смыслу: например, «заказы», «ошибки», «события авторизации». Консьюмеры подписываются на один или несколько топиков для получения релевантных данных.
|
||||
|
||||
### Партиция (Partition)
|
||||
|
||||
Каждый топик разделяется на партиции - логические сегменты, распределяемые между серверами кластера. Партиции обеспечивают параллельную обработку данных: различные части одного топика могут обрабатываться одновременно несколькими консьюмерами.
|
||||
|
||||
### Репликация (Replication)
|
||||
|
||||
Для обеспечения отказоустойчивости партиции копируются на несколько серверов (брокеров). При выходе одного сервера из строя данные остаются доступными на других узлах кластера.
|
||||
|
||||
### Микросервисная архитектура
|
||||
|
||||
Kafka является стандартным решением для организации связи между микросервисами. В такой архитектуре сервисы обмениваются событиями асинхронно, что повышает надёжность и масштабируемость системы в целом.Преимущества управляемого сервиса
|
||||
| Термин | Описание |
|
||||
|--------------------------------|----------|
|
||||
| **Продюсер (Producer)** | Программный компонент, который отправляет данные в Kafka. Продюсером может выступать любой сервис, генерирующий события: модуль приложения, система логирования, датчик IoT-устройства. |
|
||||
| **Консьюмер (Consumer)** | Программный компонент, который получает данные из Kafka. Консьюмер подписывается на интересующие его события и обрабатывает поступающие сообщения. |
|
||||
| **Топик (Topic)** | Именованный канал для хранения сообщений определённого типа. Топики организуют потоки данных по смыслу: например, «заказы», «ошибки», «события авторизации». Консьюмеры подписываются на один или несколько топиков для получения релевантных данных. |
|
||||
| **Партиция (Partition)** | Каждый топик разделяется на партиции - логические сегменты, распределяемые между серверами кластера. Партиции обеспечивают параллельную обработку данных: различные части одного топика могут обрабатываться одновременно несколькими консьюмерами. |
|
||||
| **Репликация (Replication)** | Для обеспечения отказоустойчивости партиции копируются на несколько серверов (брокеров). При выходе одного сервера из строя данные остаются доступными на других узлах кластера. |
|
||||
| **Микросервисная архитектура** | Kafka является стандартным решением для организации связи между микросервисами. В такой архитектуре сервисы обмениваются событиями асинхронно, что повышает надёжность и масштабируемость системы в целом. |
|
||||
|
||||
## Преимущества управляемого сервиса
|
||||
|
||||
### Администрирование
|
||||
#### Администрирование
|
||||
|
||||
Клиенту не требуется самостоятельно разворачивать и обслуживать кластер Kafka. Мы берём на себя управление инфраструктурой, обновление версий, масштабирование и поддержку работоспособности.
|
||||
Клиенту не требуется самостоятельно разворачивать и обслуживать кластер Kafka. Сервис включает в себя управление инфраструктурой, обновление версий, масштабирование и поддержку работоспособности.
|
||||
|
||||
### Мониторинг
|
||||
#### Мониторинг
|
||||
|
||||
Предоставляются готовые дашборды в Grafana с визуализацией ключевых метрик:
|
||||
|
||||
@@ -47,17 +32,17 @@ Kafka является стандартным решением для орган
|
||||
- настроенная система оповещений о критических событиях;
|
||||
- заполнение дискового пространства.
|
||||
|
||||
### Безопасность
|
||||
#### Безопасность
|
||||
|
||||
Поддерживается шифрованное подключение к кластеру с использованием SSL/TLS-сертификатов, что гарантирует защиту данных при передаче.
|
||||
|
||||
### Экспертная поддержка
|
||||
#### Экспертная поддержка
|
||||
|
||||
Мы обладаем практическим опытом администрирования более 500 кластеров Kafka. Накопленная экспертиза позволяет обеспечивать стабильность работы, своевременно выявлять и устранять потенциальные проблемы, оптимизировать конфигурации под конкретные задачи.
|
||||
Сервис создан с учётом практического опыта администрирования более 500 кластеров Kafka. Накопленная экспертиза позволяет обеспечивать стабильность работы, своевременно выявлять и устранять потенциальные проблемы, оптимизировать конфигурации под конкретные задачи.
|
||||
|
||||
## Тарифные планы
|
||||
|
||||
### Base
|
||||
### 1. Тариф "Base"
|
||||
|
||||
Тарифный план для тех, кто имеет собственную экспертизу в работе с Kafka и желает самостоятельно управлять объектами верхнего уровня.
|
||||
|
||||
@@ -69,14 +54,14 @@ Kafka является стандартным решением для орган
|
||||
|
||||
**Возможности:**
|
||||
|
||||
- **Управление учетными записями и правами доступа** - создание пользователей и настройка их прав для работы с Kafka;
|
||||
- **Управление учетными записями и правами доступа** – создание пользователей и настройка их прав для работы с Kafka;
|
||||
- **Администрирование топиков** - полный цикл управления: создание, конфигурирование, настройка параметров и удаление;
|
||||
- **Управление консьюмер-группами (Consumer Groups)** - возможность создавать, изменять и удалять логические объединения консьюмеров, которые совместно читают сообщения из топиков. Это обеспечивает высокую производительность и отказоустойчивость при обработке данных;
|
||||
- **Работа с transactional ID** - полный цикл управления транзакционными идентификаторами (создание, изменение, удаление). Транзакционный идентификатор присваивается продюсеру Kafka для обеспечения атомарности операций: запись нескольких сообщений или коммит оффсетов выполняются по принципу «всё или ничего», а также предотвращается появление «зомби-продюсеров» при перезапусках.
|
||||
- **Управление консьюмер-группами (Consumer Groups)** – возможность создавать, изменять и удалять логические объединения консьюмеров, которые совместно читают сообщения из топиков. Это обеспечивает высокую производительность и отказоустойчивость при обработке данных;
|
||||
- **Работа с transactional ID** – полный цикл управления транзакционными идентификаторами (создание, изменение, удаление). Транзакционный идентификатор присваивается продюсеру Kafka для обеспечения атомарности операций: запись нескольких сообщений или коммит оффсетов выполняются по принципу «всё или ничего», а также предотвращается появление «зомби-продюсеров» при перезапусках.
|
||||
|
||||
Инфраструктурное ядро кластера (брокеры, репликация, отказоустойчивость) остаётся под управлением провайдера.
|
||||
|
||||
### Full
|
||||
### 2. Тариф "Full"
|
||||
|
||||
Тарифный план для тех, кто предпочитает полностью делегировать задачи по администрированию Kafka.
|
||||
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
# Подключение и работа с кластером Kafka (тариф Base)
|
||||
|
||||
## О разделе
|
||||
|
||||
Раздел содержит описание способов подключения к управлению кластером Kafka. Поддерживаются два типа подключения:
|
||||
- `SASL_PLAINTEXT` - незашифрованное;
|
||||
- `SASL_SSL` - зашифрованное (через SSL-сертификат).
|
||||
@@ -11,6 +9,7 @@
|
||||
## Предварительные требования
|
||||
|
||||
Для начала работы с кластером Kafka необходимо выполнить предварительную настройку:
|
||||
|
||||
1. **Установить клиент Kafka** - скачивается дистрибутив Kafka (например, kafka_2.13-4.2.0) и распаковывается в удобную директорию;
|
||||
2. **Установить среду выполнения Java** - для работы необходимо установить среду выполнения, с помощью команды: `**sudo apt install openjdk-17-jre-headless**`. Рекомендуется использовать версию OpenJDK 17 или выше;
|
||||
3. **Доступ к брокерам** - адреса брокеров (bootstrap servers) предоставляются после развертывания кластера;
|
||||
@@ -40,11 +39,11 @@
|
||||
./kafka-topics.sh --help
|
||||
```
|
||||
|
||||
### Конфигурационные файлы клиента
|
||||
#### Конфигурационные файлы клиента
|
||||
|
||||
Для подключения к Kafka используется файл настроек **client.properties**, который содержит параметры аутентификации, протокола и его механизмов (рекомендуются SCRAM_SHA_512 и SCRAM_SHA_256).
|
||||
|
||||
### Незашифрованное подключение (SASL_PLAINTEXT)
|
||||
## Незашифрованное подключение (SASL_PLAINTEXT)
|
||||
|
||||
Создается файл **client.properties** со следующим содержимым:
|
||||
|
||||
@@ -56,11 +55,19 @@ sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule require
|
||||
password="вашпароль";
|
||||
```
|
||||
|
||||
### Зашифрованное подключение (SASL_SSL)
|
||||
::: warning Примечание
|
||||
Для незашифрованного подключения (SASL_PLAINTEXT) используется порт 9091;
|
||||
:::
|
||||
|
||||
## Зашифрованное подключение (SASL_SSL)
|
||||
|
||||
Для зашифрованного подключения (в production-средах рекомендуется использовать именно его) дополнительно требуется корневой сертификат и хранилище доверенных сертификатов (truststore).
|
||||
|
||||
#### Шаг 1. Создание truststore
|
||||
::: warning Примечание
|
||||
Для зашифрованного подключения (SASL_SSL) используется порт 9092.
|
||||
:::
|
||||
|
||||
### Шаг 1. Создание truststore
|
||||
|
||||
С помощью утилиты **keytool** выполняется импорт сертификата в хранилище:
|
||||
|
||||
@@ -76,7 +83,7 @@ keytool -importcert -storetype PKCS12 -keystore /путь/к/трастстор
|
||||
- **storepass** - пароль для доступа к хранилищу;
|
||||
- **keypass** - пароль для доступа к ключу.
|
||||
|
||||
#### Шаг 2. Настройка client.properties
|
||||
### Шаг 2. Настройка client.properties
|
||||
|
||||
В файл **client.properties** добавляются параметры SSL:
|
||||
|
||||
@@ -90,10 +97,7 @@ ssl.truststore.location=/путь/к/трастстору/truststore.jks
|
||||
ssl.truststore.password=парольотхранилища
|
||||
```
|
||||
|
||||
## Примеры подключения
|
||||
|
||||
Для незашифрованного подключения (SASL_PLAINTEXT) используется порт 9091;
|
||||
Для зашифрованного подключения (SASL_SSL) используется порт 9092.
|
||||
## Работа с кластером Kafka
|
||||
|
||||
### Создание топиков
|
||||
|
||||
@@ -139,12 +143,12 @@ command-config - путь к файлу с настройками клиент
|
||||
|
||||
Параметры:
|
||||
|
||||
- **from-beginning **- чтение всех сообщений с начала (при отсутствии параметра чтение начинается с новых сообщений);
|
||||
- **from-beginning**- чтение всех сообщений с начала (при отсутствии параметра чтение начинается с новых сообщений);
|
||||
- **group** - название consumer group, которая создастся автоматически.
|
||||
|
||||
## Управление пользователями и доступом
|
||||
|
||||
#### Рекомендации к паролям
|
||||
### Рекомендации к созданию пароля
|
||||
|
||||
**Длина пароля (рекомендуемая):**
|
||||
|
||||
@@ -219,11 +223,11 @@ sudo ./kafka-acls.sh --bootstrap-server <IP_брокера_0>:9092,<IP_брок
|
||||
|
||||
## Администрирование кластера
|
||||
|
||||
### Изменение объема RAM
|
||||
#### Изменение объема 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
|
||||
```
|
||||
|
||||
::: info
|
||||
::: warning Примечание
|
||||
Операция перераспределения партиций требует времени и может создавать дополнительную нагрузку на кластер. Выполнение рекомендуется в период наименьшей активности.
|
||||
:::
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
# Настройка топика
|
||||
|
||||
## Рекомендации по настройке топика (тариф Base)
|
||||
# Рекомендации по настройке топика (тариф Base)
|
||||
|
||||
В разделе описаны основные параметры топиков Apache Kafka, влияющие на производительность, отказоустойчивость и параллелизм обработки данных.
|
||||
|
||||
@@ -20,14 +18,6 @@
|
||||
- не рекомендуется использовать имена, различающиеся только точкой и подчёркиванием (например, `topic_1` и `topic.1`): Kafka не различает такие названия;
|
||||
- имена с двойным подчёркиванием в начале (например, `__consumer_offsets`) зарезервированы для внутренних топиков Kafka.
|
||||
|
||||
::: tip
|
||||
Избегайте использования имен, отличающихся только точкой и подчеркиванием (например, topic_1 и topic.1), так как Kafka не различает такие названия
|
||||
:::
|
||||
|
||||
::: tip
|
||||
Не используйте имена, начинающиеся с двойного подчеркивания (__), например, **__consumer_offsets**. Эти имена зарезервированы для внутренних топиков Kafka.
|
||||
:::
|
||||
|
||||
### Количество партиций (partitions)
|
||||
|
||||
Партиции определяют уровень параллелизма при чтении и записи данных. Количество партиций выбирается исходя из требуемой пропускной способности.
|
||||
@@ -50,33 +40,25 @@ Partitions = max(NP, NC)
|
||||
- TP - максимальная пропускная способность одного продюсера для одной партиции;
|
||||
- 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).
|
||||
> В противном случае при перезагрузке одного брокера запись в топик станет невозможной: система будет ожидать подтверждения от всех трёх реплик.
|
||||
|
||||
|
||||
При факторе репликации = 3 рекомендуется установить значение **2**. Это обеспечивает:
|
||||
- **надежность**: данные записаны минимум на два брокера;
|
||||
- **доступность**: при отказе одного брокера запись продолжается.
|
||||
|
||||
::: tip
|
||||
Не рекомендуется устанавливать значение равным фактору репликации (например, 3). В этом случае при перезагрузке одного брокера запись в топик станет невозможной, так как для подтверждения потребуется подтверждение от всех трех реплик.
|
||||
:::
|
||||
::: warning Примечание
|
||||
Не рекомендуется устанавливать значение равным фактору репликации (например, `min.insync.replicas = 3`). Если один брокер перезагрузится, запись в топик станет невозможной — система будет ждать подтверждения от всех трёх реплик, а одна недоступна.
|
||||
:::
|
||||
@@ -1,51 +1,43 @@
|
||||
# Конфигурация кластера
|
||||
|
||||
## О разделе
|
||||
В разделе описаны технические параметры кластера Kafka и порядок их первичной настройки.
|
||||
|
||||
Данный раздел описывает технические параметры кластера Kafka и порядок их первичной конфигурации.
|
||||
|
||||
Настройка указанных параметров выполняется администратором облачного провайдера на этапе развертывания сервиса. Пользователь не имеет прямого доступа к их самостоятельной установке.
|
||||
|
||||
Перед созданием кластера клиент предоставляет перечень требуемых параметров менеджеру. Администратор облачного провайдера выполняет конфигурацию в соответствии с согласованными требованиями.
|
||||
Конфигурация выполняется администратором облачного провайдера на этапе развёртывания сервиса. Пользователь не имеет прямого доступа к изменению этих параметров. Перед созданием кластера клиент передаёт менеджеру перечень требуемых параметров. Администратор выполняет настройку в соответствии с согласованными требованиями.
|
||||
|
||||
## Выбор типа и размера дискового хранилища
|
||||
|
||||
Производительность брокера сообщений напрямую зависит от скорости, с которой он может читать и записывать данные на диск. При заказе кластера необходимо выбрать тип дискового хранилища, который определит максимальную скорость работы (IOPS) и время отклика.
|
||||
Производительность брокера сообщений напрямую зависит от скорости чтения и записи на диск. При заказе кластера необходимо выбрать тип дискового хранилища — он определяет максимальную скорость работы (IOPS) и время отклика.
|
||||
|
||||
**IOPS**- количество операций чтения или записи, которые диск может выполнить за секунду. Чем выше этот показатель, тем быстрее брокер сообщений обрабатывает запросы.
|
||||
**IOPS** (Input/Output Operations Per Second) — количество операций чтения или записи, которые диск выполняет за секунду. Чем выше IOPS, тем быстрее брокер обрабатывает запросы.
|
||||
|
||||
: : : info
|
||||
Каждые 15 IOPS обеспечивают примерно 1 мегабит в секунду (Мбит/с) скорости чтения или записи при размере блока данных 64 КБ.
|
||||
: : :
|
||||
::: warning Примечание
|
||||
Каждые 15 IOPS обеспечивают примерно 1 Мбит/с скорости чтения или записи при размере блока данных 64 КБ.
|
||||
:::
|
||||
|
||||
### Доступные типы хранилищ:
|
||||
|
||||
|Название|Лимит IOPS|
|
||||
|---|---|
|
||||
|**Fast SAS**|до 2 IOPS на 1 ГБ|
|
||||
|**SSD**|до 5 IOPS на 1 ГБ|
|
||||
|**Fast SSD**|до 10 IOPS на 1 ГБ|
|
||||
|**Ultra NVMe**|до 25 IOPS на 1 ГБ|
|
||||
|Название | Лимит IOPS |
|
||||
|---------------|--------------------|
|
||||
|**Fast SAS** | до 2 IOPS на 1 ГБ |
|
||||
|**SSD** | до 5 IOPS на 1 ГБ |
|
||||
|**Fast SSD** | до 10 IOPS на 1 ГБ |
|
||||
|**Ultra NVMe** | до 25 IOPS на 1 ГБ |
|
||||
|
||||
: : : info
|
||||
::: warning Примечание
|
||||
После выбора типа диска необходимо указать объем дискового хранилища, который будет выделен под данные кластера Kafka. Минимальный объем зависит от выбранного типа хранилища
|
||||
: : :
|
||||
:::
|
||||
|
||||
## Конфигурация вычислительных ресурсов
|
||||
|
||||
В данном разделе определяются вычислительные мощности кластера: процессорные ресурсы, оперативная память и количество серверов (нод), из которых будет состоять кластер Kafka.
|
||||
|
||||
### Количество нод в кластере
|
||||
#### Основные понятия
|
||||
|
||||
Количество нод определяет отказоустойчивость кластера и возможность распределять запросы на чтение между репликами. Чем больше нод, тем выше надежность и производительность чтения. Количество нод выбирается в диапазоне от 3 до 14.
|
||||
|
||||
### Процессор (CPU)
|
||||
|
||||
Процессор - это вычислительная мощность, которая выделяется каждой ноде кластера. Количество vCPU определяет, насколько быстро брокер сообщений сможет обрабатывать запросы, выполнять сложные операции (сортировки, объединения таблиц) и обслуживать одновременные подключения. Доступный диапазон выбора процессора: от 2 шт до 24 шт.
|
||||
|
||||
### Оперативная память (RAM)
|
||||
|
||||
Оперативная память - один из ключевых ресурсов для производительности. Данные, помещающиеся в RAM, обрабатываются максимально быстро, без обращения к диску. Доступный диапазон выбора оперативной памяти: от 4 ГБ до 768 ГБ.
|
||||
| Термин | Описание |
|
||||
|-------------------------------|----------|
|
||||
| **Количество нод в кластере** | Количество нод определяет отказоустойчивость кластера и возможность распределять запросы на чтение между репликами. Чем больше нод, тем выше надежность и производительность чтения. Количество нод выбирается в диапазоне от 3 до 14. |
|
||||
| **Процессор (CPU)** | Процессор - это вычислительная мощность, которая выделяется каждой ноде кластера. Количество vCPU определяет, насколько быстро брокер сообщений сможет обрабатывать запросы, выполнять сложные операции (сортировки, объединения таблиц) и обслуживать одновременные подключения. Доступный диапазон выбора процессора: от 2 шт до 24 шт. |
|
||||
| **Оперативная память (RAM)** | Оперативная память - один из ключевых ресурсов для производительности. Данные, помещающиеся в RAM, обрабатываются максимально быстро, без обращения к диску. Доступный диапазон выбора оперативной памяти: от 4 ГБ до 768 ГБ. |
|
||||
|
||||
## Интернет
|
||||
|
||||
@@ -61,41 +53,46 @@
|
||||
- 500 Мбит/с;
|
||||
- 1000 Мбит/с (1 Гбит/с).
|
||||
|
||||
: : : info
|
||||
Для выбранного канала предоставляется публичный IP-адрес.
|
||||
: : :
|
||||
::: warning Примечание
|
||||
Для выбранного канала предоставляется **публичный IP-адрес**.
|
||||
:::
|
||||
|
||||
## Сетевой доступ к кластеру
|
||||
|
||||
Для организации защищенного подключения к кластеру Kafka доступны стандартные механизмы, используемые во всех сервисах платформы:
|
||||
Выбор способа подключения зависит от архитектуры приложений и требований к безопасности. Доступны два варианта:
|
||||
|
||||
- **IPsec-подключение** - организация защищенного туннеля между инфраструктурой и кластером Kafka. Подробнее см. раздел IPSEC;
|
||||
- **Interconnect** - прямое сетевое соединение между сервисами внутри платформы без выхода в интернет. Подробнее см. раздел Interconnect.
|
||||
- **IPsec-подключение** — организация защищённого туннеля между инфраструктурой клиента и кластером Kafka. Подробнее см. раздел «IPsec»;
|
||||
- **Interconnect** — прямое сетевое соединение между сервисами внутри платформы без использования публичных сетей. Подробнее см. раздел «Interconnect».
|
||||
|
||||
Для построения Interconnect-соединения требуется сначала заказать PaaS-сервис и дождаться его предоставления, после чего отдельно заказать Interconnect через менеджера.
|
||||
**Особенности Interconnect:**
|
||||
- сначала закажите PaaS-сервис и дождитесь его предоставления;
|
||||
- затем отдельно закажите Interconnect через менеджера.
|
||||
|
||||
Выбор конкретного способа подключения зависит от архитектуры приложений и требований к безопасности.
|
||||
## Калькулятор расчёта кластера
|
||||
|
||||
# Калькулятор
|
||||
Для расчёта параметров кластера Kafka разработан специализированный калькулятор — простое веб-приложение.
|
||||
|
||||
Для облегчения расчета параметров кластера Kafka разработан специализированный калькулятор - простое одностраничное приложение. В калькулятор вносятся исходные данные о планируемой нагрузке, после чего по нажатию кнопки **Получить** производится автоматический расчет конфигурации кластера.
|
||||
**Как работает:**
|
||||
- в калькулятор вносятся исходные данные о планируемой нагрузке (пропускная способность, количество партиций и т.д.);
|
||||
- после нажатия кнопки **«Получить»** автоматически рассчитывается конфигурация кластера.
|
||||
|
||||
Все поля обязательны для заполнения. Формы можно удалять, добавлять и дублировать ранее заполненные, что позволяет гибко настраивать параметры под различные сценарии использования.
|
||||
Все поля обязательны для заполнения. Формы можно удалять, добавлять и дублировать — это позволяет гибко настраивать параметры под разные сценарии использования.
|
||||
|
||||
## Параметры топиков
|
||||
|
||||
|Параметр|Описание|
|
||||
|---|---|
|
||||
|**Имя топика**|Уникальное наименование топика в рамках кластера. Поле обязательное. Используется для идентификации топика при расчетах.|
|
||||
|**Число партиций**|Количество партиций, на которые будет разбит топик. Значение должно быть больше числа консьюмеров.|
|
||||
|**Фактор репликации**|Количество копий данных, хранящихся на разных брокерах. Для продуктивных кластеров рекомендуется значение не менее 3. <br>**Примечание:** Количество узлов кластера формируется на основании параметра фактора репликации. Рекомендуется выбирать нечетное количество узлов для корректной работы механизмов выборов лидера.|
|
||||
|**Средний размер сообщения**|Средний объем одного сообщения, передаваемого через топик.|
|
||||
|**Максимальный размер сообщения**|Максимальный объем одного сообщения. Используется для расчета пиковых нагрузок.|
|
||||
|**Частота сообщений**|Количество сообщений, отправляемых в топик за единицу времени.|
|
||||
|**Срок хранения сообщения**|Период времени, в течение которого сообщения хранятся в топике после записи. По истечении этого срока данные удаляются.|
|
||||
|**Имя продюсера**|Наименование приложения-отправителя (для идентификации в расчетах)|
|
||||
|**Количество экземпляров продюсера**|Число одновременно работающих экземпляров продюсера.|
|
||||
|**Имя консьюмера**|Наименование приложения-получателя (для идентификации в расчетах).|
|
||||
|**Количество экземпляров консьюмера**|Число одновременно работающих экземпляров консьюмера. <br>**Примечание:** Формы продюсеров и консьюмеров можно добавлять, удалять и дублировать. Это позволяет учитывать множественные источники и приемники данных в рамках одного расчета.|
|
||||
| Параметр |Описание |
|
||||
|---------------------------------------|---------|
|
||||
| **Имя топика** |Уникальное наименование топика в рамках кластера. Поле обязательное. Используется для идентификации топика при расчетах.|
|
||||
| **Число партиций** |Количество партиций, на которые будет разбит топик. Значение должно быть больше числа консьюмеров.|
|
||||
| **Фактор репликации** |Количество копий данных, хранящихся на разных брокерах. Для продуктивных кластеров рекомендуется значение не менее 3. <br>**Примечание:** Количество узлов кластера формируется на основании параметра фактора репликации. Рекомендуется выбирать нечетное количество узлов для корректной работы механизмов выборов лидера.|
|
||||
| **Средний размер сообщения** |Средний объем одного сообщения, передаваемого через топик.|
|
||||
| **Максимальный размер сообщения** |Максимальный объем одного сообщения. Используется для расчета пиковых нагрузок.|
|
||||
| **Частота сообщений** |Количество сообщений, отправляемых в топик за единицу времени.|
|
||||
| **Срок хранения сообщения** |Период времени, в течение которого сообщения хранятся в топике после записи. По истечении этого срока данные удаляются.|
|
||||
| **Имя продюсера** |Наименование приложения-отправителя (для идентификации в расчетах)|
|
||||
| **Количество экземпляров продюсера** |Число одновременно работающих экземпляров продюсера.|
|
||||
| **Имя консьюмера** |Наименование приложения-получателя (для идентификации в расчетах).|
|
||||
| **Количество экземпляров консьюмера** |Число одновременно работающих экземпляров консьюмера. <br>**Примечание:** Формы продюсеров и консьюмеров можно добавлять, удалять и дублировать. Это позволяет учитывать множественные источники и приемники данных в рамках одного расчета.|
|
||||
|
||||
## Расчет конфигурации кластера
|
||||
|
||||
|
||||
@@ -1,27 +1,32 @@
|
||||
# Подключение и работа с кластером 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) и распаковывается в удобную директорию;
|
||||
2. **Установленная Java** - для работы с Kafka требуется среда выполнения Java. Установка выполняется командой: **sudo apt install openjdk-17-jre-headless.** Рекомендуется использовать версию OpenJDK 17 или выше;
|
||||
1. **Установить клиент Kafka** - скачивается дистрибутив Kafka (например, kafka_2.13-4.2.0) и распаковывается в удобную директорию;
|
||||
2. **Установить среду выполнения Java** - для работы необходимо установить среду выполнения, с помощью команды: `**sudo apt install openjdk-17-jre-headless**`. Рекомендуется использовать версию OpenJDK 17 или выше;
|
||||
3. **Доступ к брокерам** - адреса брокеров (bootstrap servers) предоставляются после развертывания кластера;
|
||||
4. **Учетные данные** - пользователи создаются по Вашему запросу. Например, с правами чтения топиков и записи в них.
|
||||
4. **Учетные данные**:
|
||||
- Имя пользователя (username) - стандартное значение client;
|
||||
- Пароль - предоставляется после развертывания кластера.
|
||||
5. **Корневой сертификат (для SSL-подключения)** - сертификат для зашифрованного подключения предоставляется файлом при заказе сервиса Kafka.
|
||||
|
||||
## Структура клиентского дистрибутива
|
||||
|
||||
После распаковки архива Kafka в директории bin доступны скрипты, например:
|
||||
|
||||
|Скрипт|Назначение|
|
||||
|---|---|
|
||||
| Скрипт | Назначение |
|
||||
|---------------------------|--------------------------|
|
||||
|`kafka-console-producer.sh`|Отправка сообщений в топик|
|
||||
|`kafka-console-consumer.sh`|Чтение сообщений из топика
|
||||
|`kafka-console-consumer.sh`|Чтение сообщений из топика|
|
||||
|
||||
В разделе ниже приведены примеры использования скриптов.
|
||||
|
||||
Подробное описание операций с данными и другими скриптами приведено в [официальной документации 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)
|
||||
|
||||
@@ -46,11 +51,19 @@ sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule require
|
||||
password="вашпароль";
|
||||
```
|
||||
|
||||
::: warning Примечание
|
||||
Для незашифрованного подключения (SASL_PLAINTEXT) используется порт 9091;
|
||||
:::
|
||||
|
||||
### Зашифрованное подключение (SASL_SSL)
|
||||
|
||||
Для зашифрованного подключения (в production-средах рекомендуется использовать именно его) дополнительно требуется корневой сертификат и хранилище доверенных сертификатов (truststore).
|
||||
|
||||
Шаг 1. Создание truststore
|
||||
::: warning Примечание
|
||||
Для зашифрованного подключения (SASL_SSL) используется порт 9092.
|
||||
:::
|
||||
|
||||
### Шаг 1. Создание truststore
|
||||
|
||||
С помощью утилиты **keytool** выполняется импорт сертификата в хранилище:
|
||||
|
||||
@@ -60,13 +73,13 @@ keytool -importcert -storetype PKCS12 -keystore /путь/к/трастстор
|
||||
|
||||
Параметры:
|
||||
|
||||
- keystore - путь к создаваемому хранилищу;
|
||||
- alias - псевдоним сертификата в хранилище;
|
||||
- file - путь к загруженному корневому сертификату;
|
||||
- storepass - пароль для доступа к хранилищу;
|
||||
- keypass - пароль для доступа к ключу.
|
||||
- **keystore** - путь к создаваемому хранилищу;
|
||||
- **alias** - псевдоним сертификата в хранилище;
|
||||
- **file** - путь к загруженному корневому сертификату;
|
||||
- **storepass** - пароль для доступа к хранилищу;
|
||||
- **keypass** - пароль для доступа к ключу.
|
||||
|
||||
Шаг 2. Настройка client.properties
|
||||
### Шаг 2. Настройка client.properties
|
||||
|
||||
В файл **client.properties** добавляются параметры SSL:
|
||||
|
||||
@@ -80,11 +93,6 @@ ssl.truststore.location=/путь/к/трастстору/truststore.jks
|
||||
ssl.truststore.password=парольотхранилища
|
||||
```
|
||||
|
||||
## Примеры подключения
|
||||
|
||||
Для незашифрованного подключения (SASL_PLAINTEXT) используется порт 9091;
|
||||
Для зашифрованного подключения (SASL_SSL) используется порт 9092.
|
||||
|
||||
### Отправка сообщения в топик
|
||||
|
||||
Выполняется команда с указанием брокеров, файла конфигурации и топика:
|
||||
@@ -95,12 +103,12 @@ ssl.truststore.password=парольотхранилища
|
||||
|
||||
Параметры:
|
||||
|
||||
- bootstrap-server - список брокеров кластера (адреса и порты);
|
||||
- command-config - путь к файлу с настройками клиента;
|
||||
- **bootstrap-server** - список брокеров кластера (адреса и порты);
|
||||
- **command-config** - путь к файлу с настройками клиента;
|
||||
|
||||
После выполнения команды сообщения вводятся построчно. Для завершения используется сочетание клавиш Ctrl+C.
|
||||
|
||||
### Чтение сообщений из топика
|
||||
### Чтение сообщений из топика
|
||||
|
||||
Выполняется команда с указанием топика и, при необходимости, consumer group:
|
||||
|
||||
@@ -115,9 +123,9 @@ ssl.truststore.password=парольотхранилища
|
||||
|
||||
## Администрирование кластера
|
||||
|
||||
: : : info
|
||||
Для изменения параметров кластера Kafka (CPU, RAM, DISK, количества брокеров, параметров топиков) необходимо направить запрос в Service Desk по адресу servicedesk@datafort.ru с указанием требуемых значений.
|
||||
: : :
|
||||
::: warning Примечание
|
||||
Для изменения параметров кластера Kafka (CPU, RAM, DISK, количества брокеров, параметров топиков) необходимо направить запрос в **Service Desk** по адресу `servicedesk@datafort.ru` с указанием требуемых значений.
|
||||
:::
|
||||
|
||||
### Изменение количества брокеров
|
||||
|
||||
@@ -125,6 +133,6 @@ ssl.truststore.password=парольотхранилища
|
||||
|
||||
Брокеров в кластере рекомендуется поддерживать **нечетным** для корректной работы механизмов выборов лидера.
|
||||
|
||||
: : : info
|
||||
::: warning Примечание
|
||||
Операция перераспределения партиций требует времени и может создавать дополнительную нагрузку на кластер. Выполнение рекомендуется в период наименьшей активности.
|
||||
: : :
|
||||
:::
|
||||
Reference in New Issue
Block a user