From 3a96cb441e142a31ade69f0343265b033046d6ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=B2=D1=87=D0=B5=D0=BD=D0=BA=D0=BE=20=D0=9B?= =?UTF-8?q?=D1=8E=D0=B4=D0=BC=D0=B8=D0=BB=D0=B0=20=D0=90=D0=BB=D0=B5=D0=BA?= =?UTF-8?q?=D1=81=D0=B5=D0=B5=D0=B2=D0=BD=D0=B0?= Date: Thu, 30 Apr 2026 12:06:57 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20kafka?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/.vitepress/config.mts | 11 ++ src/PaaS/Apache-Kafka/Kafka-index.md | 22 ++++ src/PaaS/Apache-Kafka/about-service.md | 53 ++++----- src/PaaS/Apache-Kafka/base-tier-connection.md | 36 +++--- .../Apache-Kafka/base-tier-topics-guide.md | 44 +++----- .../Apache-Kafka/cluster-configuretion.md | 103 +++++++++--------- src/PaaS/Apache-Kafka/full-tier-connection.md | 68 +++++++----- 7 files changed, 173 insertions(+), 164 deletions(-) create mode 100644 src/PaaS/Apache-Kafka/Kafka-index.md diff --git a/src/.vitepress/config.mts b/src/.vitepress/config.mts index e80bcc5..59028e4 100644 --- a/src/.vitepress/config.mts +++ b/src/.vitepress/config.mts @@ -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/': [ diff --git a/src/PaaS/Apache-Kafka/Kafka-index.md b/src/PaaS/Apache-Kafka/Kafka-index.md new file mode 100644 index 0000000..e5d9693 --- /dev/null +++ b/src/PaaS/Apache-Kafka/Kafka-index.md @@ -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. \ No newline at end of file diff --git a/src/PaaS/Apache-Kafka/about-service.md b/src/PaaS/Apache-Kafka/about-service.md index 1a1d7a5..5f0c1a6 100644 --- a/src/PaaS/Apache-Kafka/about-service.md +++ b/src/PaaS/Apache-Kafka/about-service.md @@ -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. diff --git a/src/PaaS/Apache-Kafka/base-tier-connection.md b/src/PaaS/Apache-Kafka/base-tier-connection.md index 91f4094..cd603f2 100644 --- a/src/PaaS/Apache-Kafka/base-tier-connection.md +++ b/src/PaaS/Apache-Kafka/base-tier-connection.md @@ -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 :9092,:9092, --generate --topics-to-move-json-file topics.json --broker-list "0,1,2" --execute ``` -::: info +::: warning Примечание Операция перераспределения партиций требует времени и может создавать дополнительную нагрузку на кластер. Выполнение рекомендуется в период наименьшей активности. ::: diff --git a/src/PaaS/Apache-Kafka/base-tier-topics-guide.md b/src/PaaS/Apache-Kafka/base-tier-topics-guide.md index 0898a7c..f9929a8 100644 --- a/src/PaaS/Apache-Kafka/base-tier-topics-guide.md +++ b/src/PaaS/Apache-Kafka/base-tier-topics-guide.md @@ -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`). Если один брокер перезагрузится, запись в топик станет невозможной — система будет ждать подтверждения от всех трёх реплик, а одна недоступна. +::: \ No newline at end of file diff --git a/src/PaaS/Apache-Kafka/cluster-configuretion.md b/src/PaaS/Apache-Kafka/cluster-configuretion.md index 7da9bdf..d07b996 100644 --- a/src/PaaS/Apache-Kafka/cluster-configuretion.md +++ b/src/PaaS/Apache-Kafka/cluster-configuretion.md @@ -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.
**Примечание:** Количество узлов кластера формируется на основании параметра фактора репликации. Рекомендуется выбирать нечетное количество узлов для корректной работы механизмов выборов лидера.| -|**Средний размер сообщения**|Средний объем одного сообщения, передаваемого через топик.| -|**Максимальный размер сообщения**|Максимальный объем одного сообщения. Используется для расчета пиковых нагрузок.| -|**Частота сообщений**|Количество сообщений, отправляемых в топик за единицу времени.| -|**Срок хранения сообщения**|Период времени, в течение которого сообщения хранятся в топике после записи. По истечении этого срока данные удаляются.| -|**Имя продюсера**|Наименование приложения-отправителя (для идентификации в расчетах)| -|**Количество экземпляров продюсера**|Число одновременно работающих экземпляров продюсера.| -|**Имя консьюмера**|Наименование приложения-получателя (для идентификации в расчетах).| -|**Количество экземпляров консьюмера**|Число одновременно работающих экземпляров консьюмера.
**Примечание:** Формы продюсеров и консьюмеров можно добавлять, удалять и дублировать. Это позволяет учитывать множественные источники и приемники данных в рамках одного расчета.| +| Параметр |Описание | +|---------------------------------------|---------| +| **Имя топика** |Уникальное наименование топика в рамках кластера. Поле обязательное. Используется для идентификации топика при расчетах.| +| **Число партиций** |Количество партиций, на которые будет разбит топик. Значение должно быть больше числа консьюмеров.| +| **Фактор репликации** |Количество копий данных, хранящихся на разных брокерах. Для продуктивных кластеров рекомендуется значение не менее 3.
**Примечание:** Количество узлов кластера формируется на основании параметра фактора репликации. Рекомендуется выбирать нечетное количество узлов для корректной работы механизмов выборов лидера.| +| **Средний размер сообщения** |Средний объем одного сообщения, передаваемого через топик.| +| **Максимальный размер сообщения** |Максимальный объем одного сообщения. Используется для расчета пиковых нагрузок.| +| **Частота сообщений** |Количество сообщений, отправляемых в топик за единицу времени.| +| **Срок хранения сообщения** |Период времени, в течение которого сообщения хранятся в топике после записи. По истечении этого срока данные удаляются.| +| **Имя продюсера** |Наименование приложения-отправителя (для идентификации в расчетах)| +| **Количество экземпляров продюсера** |Число одновременно работающих экземпляров продюсера.| +| **Имя консьюмера** |Наименование приложения-получателя (для идентификации в расчетах).| +| **Количество экземпляров консьюмера** |Число одновременно работающих экземпляров консьюмера.
**Примечание:** Формы продюсеров и консьюмеров можно добавлять, удалять и дублировать. Это позволяет учитывать множественные источники и приемники данных в рамках одного расчета.| ## Расчет конфигурации кластера diff --git a/src/PaaS/Apache-Kafka/full-tier-connection.md b/src/PaaS/Apache-Kafka/full-tier-connection.md index d916845..4ec20ac 100644 --- a/src/PaaS/Apache-Kafka/full-tier-connection.md +++ b/src/PaaS/Apache-Kafka/full-tier-connection.md @@ -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 Примечание Операция перераспределения партиций требует времени и может создавать дополнительную нагрузку на кластер. Выполнение рекомендуется в период наименьшей активности. -: : : \ No newline at end of file +::: \ No newline at end of file