Merge branch 'Apache-Kafka' into 'main'

Apache kafka

See merge request common/lk-beecloud/beecloud-docs!31
This commit is contained in:
Левченко Людмила Алексеевна
2026-05-20 11:41:38 +03:00
11 changed files with 717 additions and 9 deletions
+38 -7
View File
@@ -227,13 +227,44 @@ export default defineConfig({
text: 'Cloud NGFW', link: '/security/Cloud-NGFW/NGFW-index.md',
collapsed: true,
items: [
{ text: 'Обзор сервиса', link: '/security/Cloud-NGFW/about.md'},
{ text: 'Основные возможности', link: '/security/Cloud-NGFW/possibilities.md' },
{ text: 'Спецификация сервиса', link: '/security/Cloud-NGFW/specification.md' },
{ text: 'Состав сервиса', link: '/security/Cloud-NGFW/compound.md' },
{ text: 'Сроки и условия предоставления сервиса. Зоны ответственности', link: '/security/Cloud-NGFW/provision.md' },
{ text: 'Порядок платежей', link: '/security/Cloud-NGFW/payment.md' },
]
{text: 'Обзор сервиса', link: '/PaaS/PostgreSQL/about.md'},
{text: 'Описание технических параметров', link: '/PaaS/PostgreSQL/cluster-parameter.md'},
{text: 'Общая схема подключения', link: '/PaaS/PostgreSQL/connection.md'},
{text: 'Возможности пользователя', link: '/PaaS/PostgreSQL/user-capabilities.md'},
{text: 'Веб-интерфейс pgAdmin', link: '/PaaS/PostgreSQL/pgadmin.md'},
{text: 'Веб-интерфейс Grafana', link: '/PaaS/PostgreSQL/grafana.md'},
],
},
{text: 'Параметры конфигурации IPSEC', link: '/PaaS/IPSEC.md'},
],
'/Apache-Kafka/': [
{ text: 'Apache-Kafka', link: '/Apache-Kafka/Kafka-index.md',
collapsed: true,
items: [
{text: 'Обзор сервиса', link: '/Apache-Kafka/about-service.md'},
{text: 'Работа с кластером Kafka по тарифу Base', link: '/Apache-Kafka/base-tier-connection.md'},
{text: 'Настройка топика по тарифу Base', link: '/Apache-Kafka/base-tier-topics-guide.md'},
{text: 'Конфигурация кластера', link: '/Apache-Kafka/cluster-configuretion.md'},
{text: 'Работа с кластером Kafka по тарифу Full', link: '/Apache-Kafka/full-tier-connection.md'},
],
}
],
// '/billing/': [
// ],
'/backups/': [
{
text: 'Резервное копирование', link: '/backups/index.md',
},
{
text: 'Обзор сервиса', link: '/backups/backups-overview.md',
collapsed: true,
items: [
{text: 'О сервисе', link: '/backups/about.md'},
{text: 'Квоты и лимиты', link: '/backups/backup-quatos.md'},
]
},
{
text: 'Cloud NGFW F', link: '/security/Cloud-NGFW-F/NGFW-F-index.md',
+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.
+75
View File
@@ -0,0 +1,75 @@
# Назначение сервиса
Данный сервис предназначен для команд, которым требуется надёжный и масштабируемый конвейер данных без необходимости самостоятельно разворачивать и обслуживать инфраструктуру Kafka.
**Apache Kafka** - это распределённая система для потоковой передачи данных в реальном времени. Сервис обеспечивает надёжную и масштабируемую доставку сообщений между компонентами приложений, гарантируя отказоустойчивость и высокую производительность.
В архитектуре современных информационных систем Kafka выполняет роль централизованного конвейера данных: одни сервисы (продюсеры) публикуют сообщения, а другие (консьюмеры) получают эти сообщения по мере необходимости.
## Основные понятия
| Термин | Описание |
|--------------------------------|----------|
| **Продюсер (Producer)** | Программный компонент, который отправляет данные в Kafka. Продюсером может выступать любой сервис, генерирующий события: модуль приложения, система логирования, датчик IoT-устройства. |
| **Консьюмер (Consumer)** | Программный компонент, который получает данные из Kafka. Консьюмер подписывается на интересующие его события и обрабатывает поступающие сообщения. |
| **Топик (Topic)** | Именованный канал для хранения сообщений определённого типа. Топики организуют потоки данных по смыслу: например, «заказы», «ошибки», «события авторизации». Консьюмеры подписываются на один или несколько топиков для получения релевантных данных. |
| **Партиция (Partition)** | Каждый топик разделяется на партиции - логические сегменты, распределяемые между серверами кластера. Партиции обеспечивают параллельную обработку данных: различные части одного топика могут обрабатываться одновременно несколькими консьюмерами. |
| **Репликация (Replication)** | Для обеспечения отказоустойчивости партиции копируются на несколько серверов (брокеров). При выходе одного сервера из строя данные остаются доступными на других узлах кластера. |
| **Микросервисная архитектура** | Kafka является стандартным решением для организации связи между микросервисами. В такой архитектуре сервисы обмениваются событиями асинхронно, что повышает надёжность и масштабируемость системы в целом. |
## Преимущества управляемого сервиса
#### Администрирование
Клиенту не требуется самостоятельно разворачивать и обслуживать кластер Kafka. Сервис включает в себя управление инфраструктурой, обновление версий, масштабирование и поддержку работоспособности.
#### Мониторинг
Предоставляются готовые дашборды в Grafana с визуализацией ключевых метрик:
- состояние брокеров;
- нагрузка на кластер;
- настроенная система оповещений о критических событиях;
- заполнение дискового пространства.
#### Безопасность
Поддерживается шифрованное подключение к кластеру с использованием SSL/TLS-сертификатов, что гарантирует защиту данных при передаче.
#### Экспертная поддержка
Сервис создан с учётом практического опыта администрирования более 500 кластеров Kafka. Накопленная экспертиза позволяет обеспечивать стабильность работы, своевременно выявлять и устранять потенциальные проблемы, оптимизировать конфигурации под конкретные задачи.
## Тарифные планы
### 1. Тариф "Base"
Тарифный план для тех, кто имеет собственную экспертизу в работе с Kafka и желает самостоятельно управлять объектами верхнего уровня.
**Обязательства провайдера:**
- поддержка инсталляции кластера;
- своевременное обновление версий Kafka;
- расширение вычислительных ресурсов кластера по запросу клиента.
**Возможности:**
- **Управление учетными записями и правами доступа** – создание пользователей и настройка их прав для работы с Kafka;
- **Администрирование топиков** - полный цикл управления: создание, конфигурирование, настройка параметров и удаление;
- **Управление консьюмер-группами (Consumer Groups)** – возможность создавать, изменять и удалять логические объединения консьюмеров, которые совместно читают сообщения из топиков. Это обеспечивает высокую производительность и отказоустойчивость при обработке данных;
- **Работа с transactional ID** – полный цикл управления транзакционными идентификаторами (создание, изменение, удаление). Транзакционный идентификатор присваивается продюсеру Kafka для обеспечения атомарности операций: запись нескольких сообщений или коммит оффсетов выполняются по принципу «всё или ничего», а также предотвращается появление «зомби-продюсеров» при перезапусках.
Инфраструктурное ядро кластера (брокеры, репликация, отказоустойчивость) остаётся под управлением провайдера.
### 2. Тариф "Full"
Тарифный план для тех, кто предпочитает полностью делегировать задачи по администрированию Kafka.
**Обязательства провайдера:**
- полное управление кластером;
- администрирование топиков;
- управление консьюмер-группами;
- работа с transactional id.
Kafka используется как готовый сервис, не вовлекаясь в вопросы настройки и обслуживания.
+244
View File
@@ -0,0 +1,244 @@
# Подключение и работа с кластером Kafka (тариф Base)
Раздел содержит описание способов подключения к управлению кластером Kafka. Поддерживаются два типа подключения:
- `SASL_PLAINTEXT` - незашифрованное;
- `SASL_SSL` - зашифрованное (через SSL-сертификат).
Также в разделе приведены примеры работы с клиентскими утилитами и базовые операции администрирования.
## Предварительные требования
Для начала работы с кластером Kafka необходимо выполнить предварительную настройку:
1. **Установить клиент Kafka** - скачивается дистрибутив Kafka (например, kafka_2.13-4.2.0) и распаковывается в удобную директорию;
2. **Установить среду выполнения Java** - для работы необходимо установить среду выполнения, с помощью команды: `sudo apt install openjdk-17-jre-headless`. Рекомендуется использовать версию OpenJDK 17 или выше;
3. **Доступ к брокерам** - адреса брокеров (bootstrap servers) предоставляются после развертывания кластера;
4. **Учетные данные**:
- **Имя пользователя (username)** - стандартное значение client;
- **Пароль** - предоставляется после развертывания кластера.
5. **Корневой сертификат (для SSL-подключения)** - сертификат для зашифрованного подключения предоставляется файлом при заказе сервиса Kafka.
## Структура клиентского дистрибутива
После распаковки архива Kafka в директории bin доступны основные скрипты для управления:
| Скрипт | Назначение |
| --------------------------- | -------------------------------------------------- |
| `kafka-topics.sh` | Управление топиками (создание, удаление, просмотр) |
| `kafka-console-producer.sh` | Отправка сообщений в топик |
| `kafka-console-consumer.sh` | Чтение сообщений из топика |
| `kafka-consumer-groups.sh` | Управление консьюмер-группами |
| `kafka-configs.sh` | Изменение конфигурации топиков и других объектов |
| `kafka-acls.sh` | Управление списками доступа (ACL) |
В разделе ниже приведены примеры использования скриптов.
Подробное описание операций с данными и другими скриптами приведено в [официальной документации Kafka](https://kafka.apache.org/42/getting-started/introduction/). Дополнительную информацию можно получить, выполнив любой скрипт с флагом --help:
```
./kafka-topics.sh --help
```
#### Конфигурационные файлы клиента
Для подключения к Kafka используется файл настроек **client.properties**, который содержит параметры аутентификации, протокола и его механизмов (рекомендуются SCRAM_SHA_512 и SCRAM_SHA_256).
## Незашифрованное подключение (SASL_PLAINTEXT)
Создается файл **client.properties** со следующим содержимым:
```
sasl.mechanism=SCRAM-SHA-512
security.protocol=SASLPLAINTEXT
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
    username="client" \
    password="вашпароль";
```
::: warning Примечание
Для незашифрованного подключения (SASL_PLAINTEXT) используется порт 9091;
:::
## Зашифрованное подключение (SASL_SSL)
Для зашифрованного подключения (в production-средах рекомендуется использовать именно его) дополнительно требуется корневой сертификат и хранилище доверенных сертификатов (truststore).
::: warning Примечание
Для зашифрованного подключения (SASL_SSL) используется порт 9092.
:::
### Шаг 1. Создание truststore
С помощью утилиты **keytool** выполняется импорт сертификата в хранилище:
```
keytool -importcert -storetype PKCS12 -keystore /путь/к/трастстору/truststore.jks -alias myalias -file ca.crt -storepass любойвашпароль -keypass любойвашпароль
```
Параметры:
- **keystore** - путь к создаваемому хранилищу;
- **alias** - псевдоним сертификата в хранилище;
- **file** - путь к загруженному корневому сертификату;
- **storepass** - пароль для доступа к хранилищу;
- **keypass** - пароль для доступа к ключу.
### Шаг 2. Настройка client.properties
В файл **client.properties** добавляются параметры SSL:
```
sasl.mechanism=SCRAM-SHA-512
security.protocol=SASLSSL
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
    username="client" \
    password="вашпароль";
ssl.truststore.location=/путь/к/трастстору/truststore.jks
ssl.truststore.password=парольотхранилища
```
## Работа с кластером Kafka
### Создание топиков
```
./kafka-topics.sh --bootstrap-server <IP машины 0>:9092,<IP машины 1>:9092,<IP машины X>:9092 --command-config ../config/client.properties --create --topic <имя топика> --partitions <количество партиций> --replication-factor <значение> --config min.insync.replicas=<значение>
```
**Ознакомиться с рекомендациями по настройке топиков можно в разделе [Настройка топиков](./base-tier-topics-guide.md).**
По умолчанию топик создаётся с --partitions 10 --replication-factor 3 --config min.insync.replicas=2, поэтому, если нет необходимости создавать топик со специфическими настройками, эти флаги в команде можно не указывать.
### Просмотр списка топиков
Выполняется команда с указанием брокеров и файла конфигурации:
```
./kafka-topics.sh --bootstrap-server <IP_брокера_0>:9092,<IP_брокера_1>:9092,<IP_брокера_2>:9092 --command-config ~/client.properties --list
```
Параметры:
- **bootstrap-server** - список брокеров кластера (адреса и порты);
command-config - путь к файлу с настройками клиента;
- **list** - вывод списка топиков.
### Отправка сообщения в топик
Выполняется команда с указанием брокеров, файла конфигурации и топика:
```
./kafka-console-producer.sh --bootstrap-server <IP_брокера_0>:9092,<IP_брокера_1>:9092,<IP_брокера_2>:9092 --command-config~/client.properties --topic test-topic
```
После выполнения команды сообщения вводятся построчно. Для завершения используется сочетание клавиш Ctrl+C.
### Чтение сообщений из топика
Выполняется команда с указанием топика и, при необходимости, consumer group:
```
./kafka-console-consumer.sh --bootstrap-server <IP_брокера_0>:9092,<IP_брокера_1>:9092,<IP_брокера_2>:9092 --command-config~/client.properties --topic test-topic --from-beginning --group my-new-consumer-group
```
Параметры:
- **from-beginning**- чтение всех сообщений с начала (при отсутствии параметра чтение начинается с новых сообщений);
- **group** - название consumer group, которая создастся автоматически.
## Управление пользователями и доступом
### Рекомендации к созданию пароля
**Длина пароля (рекомендуемая):**
- для учётной записи пользователя - не менее 12 знаков;
- для учётных записей администраторов, технических и служебных учётных записей - не менее 16 знаков.
**Сложность пароля:** рекомендуется использовать уникальный пароль, содержащий символы как минимум трёх из четырёх указанных ниже групп (при отсутствии технических ограничений):
- буквы латинского алфавита в верхнем регистре (A-Z);
- буквы латинского алфавита в нижнем регистре (a-z);
- цифры (0-9);
- специальные символы и знаки пунктуации (например, `!@#$%^&*(),.?`).
**Периодичность смены:** рекомендуемая периодичность смены пароля - не реже одного раза в год.
### Создание пользователей
Для удобства можно написать скрипт, который создает пользователя сразу для двух методов шифрования - SHA-256 и SHA-512:
```
#!/bin/bash
username="имя_пользователя"
password="сгенерированный_пароль"
bootstrap="<IP_брокера_0>:9092,<IP_брокера_1>:9092,<IP_брокера_X>:9092"
/opt/kafka/bin/kafka-configs.sh \
          --bootstrap-server $bootstrap \
          --alter \
          --add-config SCRAM-SHA-256=[password="$password"] \
          --command-config /opt/kafka/config/client.properties \
          --entity-type users \
          --entity-name $username
/opt/kafka/bin/kafka-configs.sh \
          --bootstrap-server $bootstrap \
          --alter \
          --add-config SCRAM-SHA-512=[password="$password"] \
          --command-config /opt/kafka/config/client.properties \
          --entity-type users \
          --entity-name $username
```
**Запуск скрипта:**
```
sudo ./kafka-user-add.sh
```
### Просмотр данных о пользователе
Для просмотра информации о существующих пользователях выполняется команда:
```
sudo ./kafka-console-consumer.sh --bootstrap-server <IP_брокеров>:9092 --describe --command-config ../config/client.properties --entity-type users
```
### Управление consumer groups
Consumer Group создается автоматически при обращении к ней. Например, при чтении сообщений из топика с указанием этой consumer group:
```
sudo ./kafka-console-consumer.sh --bootstrap-server <IP_брокеров>:9092 --command-config ../config/client.properties --topic test-topic --group test-group --from-beginning
```
### Просмотр списка ACL
Действия с ACL из командной строки осуществляются скриптом kafka-acls.sh. Пример просмотра списка ACL:
```
sudo ./kafka-acls.sh --bootstrap-server <IP_брокера_0>:9092,<IP_брокера_1>:9092,<IP_брокера_X>:9092 --command-config ../config/client.properties --list
```
## Администрирование кластера
#### Изменение объема RAM
Для изменения объема оперативной памяти, выделенной под Kafka, направляется обращение в техническую поддержку с указанием требуемого объема RAM.
#### Изменение количества брокеров
Выполняется также через обращение в техническую поддержку.
Брокеров в кластере рекомендуется поддерживать **нечетным** для корректной работы механизмов выборов лидера.
После добавления брокера выполняется перераспределение существующих партиций с учетом нового узла с помощью утилиты **kafka-reassign-partitions.sh:**
```
./kafka-reassign-partitions.sh --bootstrap-server <адреса_брокеров> --generate --topics-to-move-json-file topics.json --broker-list "0,1,2" --execute
```
::: warning Примечание
Операция перераспределения партиций требует времени и может создавать дополнительную нагрузку на кластер. Выполнение рекомендуется в период наименьшей активности.
:::
@@ -0,0 +1,64 @@
# Рекомендации по настройке топика (тариф Base)
В разделе описаны основные параметры топиков Apache Kafka, влияющие на производительность, отказоустойчивость и параллелизм обработки данных.
## Базовые параметры топика
### Имя топика
При именовании топика применяются следующие правила:
**Допустимые символы:**
- первый символ — буква (a–z, A–Z), цифра (0–9) или подчёркивание (_);
- последующие символы — буквы, цифры, точки (.), дефисы (-) или подчёркивания;
- длина имени — от 3 до 200 символов.
**Ограничения:**
- имя топика нельзя изменить после создания;
- не рекомендуется использовать имена, различающиеся только точкой и подчёркиванием (например, `topic_1` и `topic.1`): Kafka не различает такие названия;
- имена с двойным подчёркиванием в начале (например, `__consumer_offsets`) зарезервированы для внутренних топиков Kafka.
### Количество партиций (partitions)
Партиции определяют уровень параллелизма при чтении и записи данных. Количество партиций выбирается исходя из требуемой пропускной способности.
**Правила:**
- количество партиций можно только увеличивать (уменьшение невозможно);
- при наличии нескольких брокеров рекомендуется выбирать число партиций, кратное количеству брокеров — для равномерного распределения нагрузки;
- рекомендуется мониторить отставание потребителей (consumer lag) и при необходимости увеличивать число партиций.
**Расчет количества партиций:**
Количество партиций определяется по формуле:
```
Partitions = max(NP, NC)
```
где:
- NP = TT / TP - количество необходимых продюсеров;
- NC = TT / TC - количество необходимых консьюмеров;
- TT - общая ожидаемая пропускная способность системы;
- TP - максимальная пропускная способность одного продюсера для одной партиции;
- TC - максимальная пропускная способность одного консьюмера для одной партиции.
## Фактор репликации (replication-factor)
Фактор репликации определяет количество копий данных, хранящихся на разных брокерах.
**Рекомендация для production-сред:** установите значение **3**.
При этом каждая партиция получает одного лидера и две реплики, что обеспечивает отказоустойчивость при выходе одного брокера.
## Дополнительные параметры конфигурации
Параметр `min.insync.replicas` (минимальное количество синхронизированных реплик) работает вместе с настройкой продюсера `acks=all`. Он задаёт, сколько реплик (включая лидера) должны подтвердить запись, чтобы она считалась успешной.
**Для production-кластера с фактором репликации = 3**
Установите `min.insync.replicas = 2`.
Что это даёт:
- **надёжность** — данные точно попали минимум на два брокера;
- **доступность** — если один брокер упадёт, запись продолжится.
::: warning Примечание
Не рекомендуется устанавливать значение равным фактору репликации (например, `min.insync.replicas = 3`). Если один брокер перезагрузится, запись в топик станет невозможной — система будет ждать подтверждения от всех трёх реплик, а одна недоступна.
:::
+108
View File
@@ -0,0 +1,108 @@
# Конфигурация кластера
В разделе описаны технические параметры кластера Kafka и порядок их первичной настройки.
Конфигурация выполняется администратором облачного провайдера на этапе развёртывания сервиса. Пользователь не имеет прямого доступа к изменению этих параметров. Перед созданием кластера клиент передаёт менеджеру перечень требуемых параметров. Администратор выполняет настройку в соответствии с согласованными требованиями.
## Выбор типа и размера дискового хранилища
Производительность брокера сообщений напрямую зависит от скорости чтения и записи на диск. При заказе кластера необходимо выбрать тип дискового хранилища — он определяет максимальную скорость работы (IOPS) и время отклика.
**IOPS** (Input/Output Operations Per Second) — количество операций чтения или записи, которые диск выполняет за секунду. Чем выше IOPS, тем быстрее брокер обрабатывает запросы.
::: 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 ГБ |
::: warning Примечание
После выбора типа диска необходимо указать объем дискового хранилища, который будет выделен под данные кластера Kafka. Минимальный объем зависит от выбранного типа хранилища
:::
## Конфигурация вычислительных ресурсов
В данном разделе определяются вычислительные мощности кластера: процессорные ресурсы, оперативная память и количество серверов (нод), из которых будет состоять кластер Kafka.
#### Основные понятия
| Термин | Описание |
|-------------------------------|----------|
| **Количество нод в кластере** | Количество нод определяет отказоустойчивость кластера и возможность распределять запросы на чтение между репликами. Чем больше нод, тем выше надежность и производительность чтения. Количество нод выбирается в диапазоне от 3 до 14. |
| **Процессор (CPU)** | Процессор - это вычислительная мощность, которая выделяется каждой ноде кластера. Количество vCPU определяет, насколько быстро брокер сообщений сможет обрабатывать запросы, выполнять сложные операции (сортировки, объединения таблиц) и обслуживать одновременные подключения. Доступный диапазон выбора процессора: от 2 шт до 24 шт. |
| **Оперативная память (RAM)** | Оперативная память - один из ключевых ресурсов для производительности. Данные, помещающиеся в RAM, обрабатываются максимально быстро, без обращения к диску. Доступный диапазон выбора оперативной памяти: от 4 ГБ до 768 ГБ. |
## Интернет
При заказе сервиса можно выбрать пропускную способность канала связи, через который будет осуществляться доступ к кластеру Kafka из сети интернет.
**Доступные варианты скорости:**
- 50 Мбит/с;
- 100 Мбит/с;
- 200 Мбит/с;
- 300 Мбит/с;
- 400 Мбит/с;
- 500 Мбит/с;
- 1000 Мбит/с (1 Гбит/с).
::: warning Примечание
Для выбранного канала предоставляется **публичный IP-адрес**.
:::
## Сетевой доступ к кластеру
Выбор способа подключения зависит от архитектуры приложений и требований к безопасности. Доступны два варианта:
- **IPsec-подключение** — организация защищённого туннеля между инфраструктурой клиента и кластером Kafka. Подробнее см. раздел «IPsec»;
- **Interconnect** — прямое сетевое соединение между сервисами внутри платформы без использования публичных сетей. Подробнее см. раздел «Interconnect».
**Особенности Interconnect:**
- сначала закажите PaaS-сервис и дождитесь его предоставления;
- затем отдельно закажите Interconnect через менеджера.
## Калькулятор расчёта кластера
Для расчёта параметров кластера Kafka разработан специализированный калькулятор — простое веб-приложение.
**Как работает:**
- в калькулятор вносятся исходные данные о планируемой нагрузке (пропускная способность, количество партиций и т.д.);
- после нажатия кнопки **«Получить»** автоматически рассчитывается конфигурация кластера.
Все поля обязательны для заполнения. Формы можно удалять, добавлять и дублировать — это позволяет гибко настраивать параметры под разные сценарии использования.
## Параметры топиков
| Параметр |Описание |
|---------------------------------------|---------|
| **Имя топика** |Уникальное наименование топика в рамках кластера. Поле обязательное. Используется для идентификации топика при расчетах.|
| **Число партиций** |Количество партиций, на которые будет разбит топик. Значение должно быть больше числа консьюмеров.|
| **Фактор репликации** |Количество копий данных, хранящихся на разных брокерах. Для продуктивных кластеров рекомендуется значение не менее 3. <br>**Примечание:** Количество узлов кластера формируется на основании параметра фактора репликации. Рекомендуется выбирать нечетное количество узлов для корректной работы механизмов выборов лидера.|
| **Средний размер сообщения** |Средний объем одного сообщения, передаваемого через топик.|
| **Максимальный размер сообщения** |Максимальный объем одного сообщения. Используется для расчета пиковых нагрузок.|
| **Частота сообщений** |Количество сообщений, отправляемых в топик за единицу времени.|
| **Срок хранения сообщения** |Период времени, в течение которого сообщения хранятся в топике после записи. По истечении этого срока данные удаляются.|
| **Имя продюсера** |Наименование приложения-отправителя (для идентификации в расчетах)|
| **Количество экземпляров продюсера** |Число одновременно работающих экземпляров продюсера.|
| **Имя консьюмера** |Наименование приложения-получателя (для идентификации в расчетах).|
| **Количество экземпляров консьюмера** |Число одновременно работающих экземпляров консьюмера. <br>**Примечание:** Формы продюсеров и консьюмеров можно добавлять, удалять и дублировать. Это позволяет учитывать множественные источники и приемники данных в рамках одного расчета.|
## Расчет конфигурации кластера
После заполнения всех полей нажимается кнопка **Получить**. Все расчеты выполняются в соответствии с планированием ресурсов, указанных в официальной документации Apache Kafka.
В результате, рассчитанные параметры служат основой для формирования заказа на управляемый сервис Kafka.
Калькулятор автоматически производит расчет следующих параметров:
- **Количество узлов** - формируется на основании параметра фактора репликации (replication.factor). Рекомендуется выбирать нечетное количество узлов для корректной работы механизмов выборов лидера;
- **vCPU** - вычисляется из планируемого количества входящих сообщений и масштабируется в зависимости от числа узлов: чем больше кластер, тем меньше требуется CPU на отдельный сервер благодаря распределению нагрузки;
- **RAM** - рассчитывается с учетом количества партиций, объема сообщений и числа подключений продюсеров и консьюмеров;
- **Тип и объем дискового хранилища** - определяется на основе среднего и максимального размера сообщения, частоты отправки, срока хранения и фактора репликации;
- **Параметры репликации** - учитывают заданный фактор репликации и обеспечивают отказоустойчивость кластера.
+138
View File
@@ -0,0 +1,138 @@
# Подключение и работа с кластером Kafka (тариф Full)
Раздел содержит описание способов подключения к управлению кластером Kafka. Поддерживаются два типа подключения:
- `SASL_PLAINTEXT` - незашифрованное;
- `SASL_SSL` - зашифрованное (через SSL-сертификат).
Также в разделе приведены примеры работы с клиентскими утилитами и базовые операции администрирования.
## Предварительные требования
Для начала работы с кластером Kafka необходимо выполнить предварительную настройку:
1. **Установить клиент Kafka** - скачивается дистрибутив Kafka (например, kafka_2.13-4.2.0) и распаковывается в удобную директорию;
2. **Установить среду выполнения Java** - для работы необходимо установить среду выполнения, с помощью команды: `sudo apt install openjdk-17-jre-headless`. Рекомендуется использовать версию OpenJDK 17 или выше;
3. **Доступ к брокерам** - адреса брокеров (bootstrap servers) предоставляются после развертывания кластера;
4. **Учетные данные**:
- Имя пользователя (username) - стандартное значение client;
- Пароль - предоставляется после развертывания кластера.
5. **Корневой сертификат (для SSL-подключения)** - сертификат для зашифрованного подключения предоставляется файлом при заказе сервиса Kafka.
## Структура клиентского дистрибутива 
После распаковки архива Kafka в директории bin доступны скрипты, например:
| Скрипт | Назначение |
|---------------------------|--------------------------|
|`kafka-console-producer.sh`|Отправка сообщений в топик|
|`kafka-console-consumer.sh`|Чтение сообщений из топика|
В разделе ниже приведены примеры использования скриптов.
Подробное описание операций с данными и другими скриптами приведено в [официальной документации Kafka](https://kafka.apache.org/42/getting-started/introduction/). Дополнительную информацию можно получить, выполнив любой скрипт с флагом --help:
```
./kafka-console-producer.sh
```
## Конфигурационные файлы клиента
Для подключения к Kafka используется файл настроек **client.properties**, который содержит параметры аутентификации, протокола и его механизмов (рекомендуются SCRAM_SHA_512 и SCRAM_SHA_256).
### Незашифрованное подключение (SASL_PLAINTEXT)
Создается файл client.properties со следующим содержимым:
```
sasl.mechanism=SCRAM-SHA-512
security.protocol=SASLPLAINTEXT
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
    username="вашлогин" \
    password="вашпароль";
```
::: warning Примечание
Для незашифрованного подключения (SASL_PLAINTEXT) используется порт 9091;
:::
### Зашифрованное подключение (SASL_SSL)
Для зашифрованного подключения (в production-средах рекомендуется использовать именно его) дополнительно требуется корневой сертификат и хранилище доверенных сертификатов (truststore).
::: warning Примечание
Для зашифрованного подключения (SASL_SSL) используется порт 9092.
:::
### Шаг 1. Создание truststore
С помощью утилиты **keytool** выполняется импорт сертификата в хранилище:
```
keytool -importcert -storetype PKCS12 -keystore /путь/к/трастстору/truststore.jks -alias myalias -file ca.crt -storepass любойвашпароль -keypass любойвашпароль
```
Параметры:
- **keystore** - путь к создаваемому хранилищу;
- **alias** - псевдоним сертификата в хранилище;
- **file** - путь к загруженному корневому сертификату;
- **storepass** - пароль для доступа к хранилищу;
- **keypass** - пароль для доступа к ключу.
### Шаг 2. Настройка client.properties
В файл **client.properties** добавляются параметры SSL:
```
sasl.mechanism=SCRAM-SHA-512
security.protocol=SASLSSL
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
    username="вашлогин" \
    password="вашпароль";
ssl.truststore.location=/путь/к/трастстору/truststore.jks
ssl.truststore.password=парольотхранилища
```
### Отправка сообщения в топик
Выполняется команда с указанием брокеров, файла конфигурации и топика:
```
./kafka-console-producer.sh --bootstrap-server <IP_брокера_0>:9092,<IP_брокера_1>:9092,<IP_брокера_2>:9092 --command-config~/client.properties --topic test-topic
```
Параметры:
- **bootstrap-server** - список брокеров кластера (адреса и порты);
- **command-config** - путь к файлу с настройками клиента;
После выполнения команды сообщения вводятся построчно. Для завершения используется сочетание клавиш Ctrl+C.
### Чтение сообщений из топика
Выполняется команда с указанием топика и, при необходимости, consumer group:
```
./kafka-console-consumer.sh --bootstrap-server <IP_брокера_0>:9092,<IP_брокера_1>:9092,<IP_брокера_2>:9092 --command-config~/client.properties --topic test-topic --from-beginning --group my-new-consumer-group
```
Параметры:
- **from-beginning** - чтение всех сообщений с начала (при отсутствии параметра чтение начинается с новых сообщений);
- **group** - название consumer group, которая при её указании создастся автоматически.
## Администрирование кластера
::: warning Примечание
Для изменения параметров кластера Kafka (CPU, RAM, DISK, количества брокеров, параметров топиков) необходимо направить запрос в **Service Desk** по адресу `servicedesk@datafort.ru` с указанием требуемых значений.
:::
### Изменение количества брокеров
Выполняется также через обращение в техническую поддержку.
Брокеров в кластере рекомендуется поддерживать **нечетным** для корректной работы механизмов выборов лидера.
::: warning Примечание
Операция перераспределения партиций требует времени и может создавать дополнительную нагрузку на кластер. Выполнение рекомендуется в период наименьшей активности.
:::
+1
View File
@@ -85,3 +85,4 @@ PostgreSQL - это современная система управления
- хранение критичных данных с минимальным временем простоя при отказах инфраструктуры;
- быстрое развёртывание PostgreSQL-кластера без необходимости ручной настройки репликации и failover;
- администрирование баз данных через веб-интерфейс без прямого доступа к серверам кластера.
+15
View File
@@ -79,6 +79,21 @@ $<iterations>:<salt>$<storedkey>:<serverkey>
|Создание новой базы данных | Для создания базы данных | ```CREATE DATABASE app_db;``` |
|Создание базы данных с указанием владельца | Пользователь, указанный как владелец, будет иметь полный контроль над базой данных, включая права на её удаление и изменение. По умолчанию владельцем создаваемой базы данных является пользователь, который её создает | ```CREATE DATABASE app_db OWNER client;``` |
### Требования к паролям
**Длина пароля (рекомендуемая):**
- для учётной записи пользователя - не менее 12 знаков;
- для учётных записей администраторов, технических и служебных учётных записей - не менее 16 знаков.
**Сложность пароля:** рекомендуется использовать уникальный пароль, содержащий символы как минимум трёх из четырёх указанных ниже групп (при отсутствии технических ограничений):
- буквы латинского алфавита в верхнем регистре (A-Z);
- буквы латинского алфавита в нижнем регистре (a-z);
- цифры (0-9);
- специальные символы и знаки пунктуации (например, `!@#$%^&*(),.?`).
**Периодичность смены:** рекомендуемая периодичность смены пароля - не реже одного раза в год.
## Создание пользователей и ролей
-1
View File
@@ -6,7 +6,6 @@ section_links:
- title: IPSEC
link: /PaaS/IPSEC.md
description: Параметры конфигурации IPSEC
---
# Начало работы в Cloud PostgreSQL
+12 -1
View File
@@ -34,7 +34,18 @@ services:
- title: PostgreSQL
description: Объектно-реляционная СУБД с открытым кодом, обеспечивающая высокую надёжность и масштабируемость
icon: database
link: /PaaS/PostgreSQL/PostgreSQL-index.md
link: /PaaS/index
- title: Брокеры сообщений
articles:
- title: Apache Kafka
description: Распределённая система для потоковой передачи данных в реальном времени
icon: message
link: /Apache-Kafka/Kafka-index
- title: Аналитика
articles:
- title: Визуализация и анализ данных
description: В работе
icon: graph_up
- title: Безопасность
articles:
- title: Cloud NGFW