diff --git a/src/.vitepress/config.mts b/src/.vitepress/config.mts index 65d7608..376fc69 100644 --- a/src/.vitepress/config.mts +++ b/src/.vitepress/config.mts @@ -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', diff --git a/src/Apache-Kafka/Kafka-index.md b/src/Apache-Kafka/Kafka-index.md new file mode 100644 index 0000000..9a33f81 --- /dev/null +++ b/src/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. diff --git a/src/Apache-Kafka/about-service.md b/src/Apache-Kafka/about-service.md new file mode 100644 index 0000000..5f0c1a6 --- /dev/null +++ b/src/Apache-Kafka/about-service.md @@ -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 используется как готовый сервис, не вовлекаясь в вопросы настройки и обслуживания. \ No newline at end of file diff --git a/src/Apache-Kafka/base-tier-connection.md b/src/Apache-Kafka/base-tier-connection.md new file mode 100644 index 0000000..c629591 --- /dev/null +++ b/src/Apache-Kafka/base-tier-connection.md @@ -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 :9092,:9092,: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 :9092,:9092,:9092 --command-config ~/client.properties --list +``` + +Параметры: + +- **bootstrap-server** - список брокеров кластера (адреса и порты); +command-config - путь к файлу с настройками клиента; +- **list** - вывод списка топиков. + +### Отправка сообщения в топик + +Выполняется команда с указанием брокеров, файла конфигурации и топика: + +``` +./kafka-console-producer.sh --bootstrap-server :9092,:9092,:9092 --command-config~/client.properties --topic test-topic +``` + +После выполнения команды сообщения вводятся построчно. Для завершения используется сочетание клавиш Ctrl+C. + +### Чтение сообщений из топика + +Выполняется команда с указанием топика и, при необходимости, consumer group: + +``` +./kafka-console-consumer.sh --bootstrap-server :9092,:9092,: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=":9092,:9092,: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 :9092 --describe --command-config ../config/client.properties --entity-type users +``` + +### Управление consumer groups + +Consumer Group создается автоматически при обращении к ней. Например, при чтении сообщений из топика с указанием этой consumer group: + +``` +sudo ./kafka-console-consumer.sh --bootstrap-server :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 :9092,:9092,: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 Примечание +Операция перераспределения партиций требует времени и может создавать дополнительную нагрузку на кластер. Выполнение рекомендуется в период наименьшей активности. +::: diff --git a/src/Apache-Kafka/base-tier-topics-guide.md b/src/Apache-Kafka/base-tier-topics-guide.md new file mode 100644 index 0000000..f9929a8 --- /dev/null +++ b/src/Apache-Kafka/base-tier-topics-guide.md @@ -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`). Если один брокер перезагрузится, запись в топик станет невозможной — система будет ждать подтверждения от всех трёх реплик, а одна недоступна. +::: \ No newline at end of file diff --git a/src/Apache-Kafka/cluster-configuretion.md b/src/Apache-Kafka/cluster-configuretion.md new file mode 100644 index 0000000..d07b996 --- /dev/null +++ b/src/Apache-Kafka/cluster-configuretion.md @@ -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.
**Примечание:** Количество узлов кластера формируется на основании параметра фактора репликации. Рекомендуется выбирать нечетное количество узлов для корректной работы механизмов выборов лидера.| +| **Средний размер сообщения** |Средний объем одного сообщения, передаваемого через топик.| +| **Максимальный размер сообщения** |Максимальный объем одного сообщения. Используется для расчета пиковых нагрузок.| +| **Частота сообщений** |Количество сообщений, отправляемых в топик за единицу времени.| +| **Срок хранения сообщения** |Период времени, в течение которого сообщения хранятся в топике после записи. По истечении этого срока данные удаляются.| +| **Имя продюсера** |Наименование приложения-отправителя (для идентификации в расчетах)| +| **Количество экземпляров продюсера** |Число одновременно работающих экземпляров продюсера.| +| **Имя консьюмера** |Наименование приложения-получателя (для идентификации в расчетах).| +| **Количество экземпляров консьюмера** |Число одновременно работающих экземпляров консьюмера.
**Примечание:** Формы продюсеров и консьюмеров можно добавлять, удалять и дублировать. Это позволяет учитывать множественные источники и приемники данных в рамках одного расчета.| + +## Расчет конфигурации кластера + +После заполнения всех полей нажимается кнопка **Получить**. Все расчеты выполняются в соответствии с планированием ресурсов, указанных в официальной документации Apache Kafka. +В результате, рассчитанные параметры служат основой для формирования заказа на управляемый сервис Kafka. + +Калькулятор автоматически производит расчет следующих параметров: + +- **Количество узлов** - формируется на основании параметра фактора репликации (replication.factor). Рекомендуется выбирать нечетное количество узлов для корректной работы механизмов выборов лидера; +- **vCPU** - вычисляется из планируемого количества входящих сообщений и масштабируется в зависимости от числа узлов: чем больше кластер, тем меньше требуется CPU на отдельный сервер благодаря распределению нагрузки; +- **RAM** - рассчитывается с учетом количества партиций, объема сообщений и числа подключений продюсеров и консьюмеров; +- **Тип и объем дискового хранилища** - определяется на основе среднего и максимального размера сообщения, частоты отправки, срока хранения и фактора репликации; +- **Параметры репликации** - учитывают заданный фактор репликации и обеспечивают отказоустойчивость кластера. \ No newline at end of file diff --git a/src/Apache-Kafka/full-tier-connection.md b/src/Apache-Kafka/full-tier-connection.md new file mode 100644 index 0000000..4e2a75b --- /dev/null +++ b/src/Apache-Kafka/full-tier-connection.md @@ -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 :9092,:9092,:9092 --command-config~/client.properties --topic test-topic +``` + +Параметры: + +- **bootstrap-server** - список брокеров кластера (адреса и порты); +- **command-config** - путь к файлу с настройками клиента; + +После выполнения команды сообщения вводятся построчно. Для завершения используется сочетание клавиш Ctrl+C. + +### Чтение сообщений из топика + +Выполняется команда с указанием топика и, при необходимости, consumer group: + +``` +./kafka-console-consumer.sh --bootstrap-server :9092,:9092,: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 Примечание +Операция перераспределения партиций требует времени и может создавать дополнительную нагрузку на кластер. Выполнение рекомендуется в период наименьшей активности. +::: \ No newline at end of file diff --git a/src/PaaS/PostgreSQL/about.md b/src/PaaS/PostgreSQL/about.md index 380ecaa..b63648e 100644 --- a/src/PaaS/PostgreSQL/about.md +++ b/src/PaaS/PostgreSQL/about.md @@ -85,3 +85,4 @@ PostgreSQL - это современная система управления - хранение критичных данных с минимальным временем простоя при отказах инфраструктуры; - быстрое развёртывание PostgreSQL-кластера без необходимости ручной настройки репликации и failover; - администрирование баз данных через веб-интерфейс без прямого доступа к серверам кластера. + diff --git a/src/PaaS/PostgreSQL/user-capabilities.md b/src/PaaS/PostgreSQL/user-capabilities.md index dca1ef4..970d9d6 100644 --- a/src/PaaS/PostgreSQL/user-capabilities.md +++ b/src/PaaS/PostgreSQL/user-capabilities.md @@ -79,6 +79,21 @@ $:$: |Создание новой базы данных | Для создания базы данных | ```CREATE DATABASE app_db;``` | |Создание базы данных с указанием владельца | Пользователь, указанный как владелец, будет иметь полный контроль над базой данных, включая права на её удаление и изменение. По умолчанию владельцем создаваемой базы данных является пользователь, который её создает | ```CREATE DATABASE app_db OWNER client;``` | +### Требования к паролям + +**Длина пароля (рекомендуемая):** + +- для учётной записи пользователя - не менее 12 знаков; +- для учётных записей администраторов, технических и служебных учётных записей - не менее 16 знаков. + +**Сложность пароля:** рекомендуется использовать уникальный пароль, содержащий символы как минимум трёх из четырёх указанных ниже групп (при отсутствии технических ограничений): + +- буквы латинского алфавита в верхнем регистре (A-Z); +- буквы латинского алфавита в нижнем регистре (a-z); +- цифры (0-9); +- специальные символы и знаки пунктуации (например, `!@#$%^&*(),.?`). + +**Периодичность смены:** рекомендуемая периодичность смены пароля - не реже одного раза в год. ## Создание пользователей и ролей diff --git a/src/PaaS/index.md b/src/PaaS/index.md index 933c9aa..742da2a 100644 --- a/src/PaaS/index.md +++ b/src/PaaS/index.md @@ -6,7 +6,6 @@ section_links: - title: IPSEC link: /PaaS/IPSEC.md description: Параметры конфигурации IPSEC - --- # Начало работы в Cloud PostgreSQL diff --git a/src/index.md b/src/index.md index 3117829..2d11330 100644 --- a/src/index.md +++ b/src/index.md @@ -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