Внесение правок в статьи по постгресу и кафке

This commit is contained in:
Yana Ishkhanova
2026-04-21 17:35:44 +03:00
parent 83f5e68647
commit 9a21a53e11
6 changed files with 145 additions and 140 deletions
+10 -27
View File
@@ -1,5 +1,4 @@
# О сервисе # О сервисе
## Назначение сервиса ## Назначение сервиса
Данный сервис предназначен для команд, которым требуется надёжный и масштабируемый конвейер данных без необходимости самостоятельно разворачивать и обслуживать инфраструктуру Kafka. Данный сервис предназначен для команд, которым требуется надёжный и масштабируемый конвейер данных без необходимости самостоятельно разворачивать и обслуживать инфраструктуру Kafka.
@@ -20,7 +19,7 @@
### Топик (Topic) ### Топик (Topic)
Именованный канал для хранения сообщений определённого типа. Топики организуют потоки данных по смыслу: например, "заказы", "ошибки", "события авторизации". Консьюмеры подписываются на один или несколько топиков для получения релевантных данных. Именованный канал для хранения сообщений определённого типа. Топики организуют потоки данных по смыслу: например, «заказы», «ошибки», «события авторизации». Консьюмеры подписываются на один или несколько топиков для получения релевантных данных.
### Партиция (Partition) ### Партиция (Partition)
@@ -32,10 +31,9 @@
### Микросервисная архитектура ### Микросервисная архитектура
Kafka является стандартным решением для организации связи между микросервисами. В такой архитектуре сервисы обмениваются событиями асинхронно, что повышает надёжность и масштабируемость системы в целом. Kafka является стандартным решением для организации связи между микросервисами. В такой архитектуре сервисы обмениваются событиями асинхронно, что повышает надёжность и масштабируемость системы в целом.Преимущества управляемого сервиса
## Преимущества управляемого сервиса ## Преимущества управляемого сервиса
### Администрирование ### Администрирование
Клиенту не требуется самостоятельно разворачивать и обслуживать кластер Kafka. Мы берём на себя управление инфраструктурой, обновление версий, масштабирование и поддержку работоспособности. Клиенту не требуется самостоятельно разворачивать и обслуживать кластер Kafka. Мы берём на себя управление инфраструктурой, обновление версий, масштабирование и поддержку работоспособности.
@@ -48,12 +46,15 @@ Kafka является стандартным решением для орган
- нагрузка на кластер; - нагрузка на кластер;
- настроенная система оповещений о критических событиях; - настроенная система оповещений о критических событиях;
- заполнение дискового пространства. - заполнение дискового пространства.
### Безопасность ### Безопасность
Поддерживается шифрованное подключение к кластеру с использованием SSL/TLS-сертификатов, что гарантирует защиту данных при передаче. Поддерживается шифрованное подключение к кластеру с использованием SSL/TLS-сертификатов, что гарантирует защиту данных при передаче.
### Экспертная поддержка ### Экспертная поддержка
Мы обладаем практическим опытом администрирования более 500 кластеров Kafka. Накопленная экспертиза позволяет обеспечивать стабильность работы, своевременно выявлять и устранять потенциальные проблемы, оптимизировать конфигурации под конкретные задачи. Мы обладаем практическим опытом администрирования более 500 кластеров Kafka. Накопленная экспертиза позволяет обеспечивать стабильность работы, своевременно выявлять и устранять потенциальные проблемы, оптимизировать конфигурации под конкретные задачи.
## Тарифные планы ## Тарифные планы
### Base ### Base
@@ -61,46 +62,28 @@ Kafka является стандартным решением для орган
Тарифный план для тех, кто имеет собственную экспертизу в работе с Kafka и желает самостоятельно управлять объектами верхнего уровня. Тарифный план для тех, кто имеет собственную экспертизу в работе с Kafka и желает самостоятельно управлять объектами верхнего уровня.
**Обязательства провайдера:** **Обязательства провайдера:**
- поддержка инсталляции кластера; - поддержка инсталляции кластера;
- своевременное обновление версий Kafka; - своевременное обновление версий Kafka;
- расширение вычислительных ресурсов кластера по запросу клиента. - расширение вычислительных ресурсов кластера по запросу клиента.
**Возможности:** **Возможности:**
- **Управление учетными записями и правами доступа** - создание пользователей и настройка их прав для работы с Kafka; - **Управление учетными записями и правами доступа** - создание пользователей и настройка их прав для работы с Kafka;
- **Администрирование топиков** - полный цикл управления: создание, конфигурирование, настройка параметров и удаление; - **Администрирование топиков** - полный цикл управления: создание, конфигурирование, настройка параметров и удаление;
- **Управление консьюмер-группами (Consumer Groups)** - возможность создавать, изменять и удалять логические объединения консьюмеров, которые совместно читают сообщения из топиков. Это обеспечивает высокую производительность и отказоустойчивость при обработке данных; - **Управление консьюмер-группами (Consumer Groups)** - возможность создавать, изменять и удалять логические объединения консьюмеров, которые совместно читают сообщения из топиков. Это обеспечивает высокую производительность и отказоустойчивость при обработке данных;
- **Работа с transactional ID** - полный цикл управления транзакционными идентификаторами (создание, изменение, удаление). Транзакционный идентификатор присваивается продюсеру Kafka для обеспечения атомарности операций: запись нескольких сообщений или коммит оффсетов выполняются по принципу "всё или ничего", а также предотвращается появление "зомби-продюсеров" при перезапусках. - **Работа с transactional ID** - полный цикл управления транзакционными идентификаторами (создание, изменение, удаление). Транзакционный идентификатор присваивается продюсеру Kafka для обеспечения атомарности операций: запись нескольких сообщений или коммит оффсетов выполняются по принципу «всё или ничего», а также предотвращается появление «зомби-продюсеров» при перезапусках.
Инфраструктурное ядро кластера (брокеры, репликация, отказоустойчивость) остаётся под управлением провайдера. Инфраструктурное ядро кластера (брокеры, репликация, отказоустойчивость) остаётся под управлением провайдера.
### Full ### Full
Тарифный план для тех, кто предпочитает полностью делегировать задачи по администрированию Kafka. Тарифный план для тех, кто предпочитает полностью делегировать задачи по администрированию Kafka.
**Обязательства провайдера:** **Обязательства провайдера:**
- полное управление кластером; - полное управление кластером;
- администрирование топиков; - администрирование топиков;
- управление консьюмер-группами; - управление консьюмер-группами;
- работа с transactional id. - работа с transactional id.
Kafka используется как готовый сервис, не вовлекаясь в вопросы настройки и обслуживания. Kafka используется как готовый сервис, не вовлекаясь в вопросы настройки и обслуживания.
## Рекомендации для сервиса
Использовать TLS-защищённые протоколы для подключения к сервису.
### Пароли
1. **Длина пароля (рекомендуемая):**
- для учётной записи пользователя - не менее 12 знаков;
- для учётных записей администраторов, технических и служебных УЗ - не менее 16 знаков.
2. Использовать уникальный пароль, содержащий символы как минимум трёх из четырёх указанных ниже групп (при отсутствии технических ограничений):
- буквы латинского алфавита в верхнем регистре (A-Z);
- буквы латинского алфавита в нижнем регистре (a-z);
- цифры (09);
- специальные символы и знаки пунктуации (например, !@#$%^&*(),.?).
3. Рекомендуемая периодичность смены пароля - не реже 1 раза в год.
+78 -55
View File
@@ -2,7 +2,7 @@
## О разделе ## О разделе
В данном разделе описаны способы подключения к управляемому кластеру Kafka при тарифе Base. Рассматриваются два варианта: незашифрованное подключение (SASL_PLAINTEXT) и зашифрованное подключение с использованием SSL-сертификатов (SASL_SSL). Также приведены примеры работы с клиентскими утилитами и базовые операции администрирования. В данном разделе описаны способы подключения к управляемому кластеру Kafka. Рассматриваются два варианта: незашифрованное подключение (SASL_PLAINTEXT) и зашифрованное подключение с использованием SSL-сертификатов (SASL_SSL). Также приведены примеры работы с клиентскими утилитами и базовые операции администрирования.
## Предварительные требования ## Предварительные требования
@@ -10,7 +10,7 @@
1. **Установленный клиент Kafka** - скачивается дистрибутив Kafka (например, kafka_2.13-4.2.0) и распаковывается в удобную директорию; 1. **Установленный клиент Kafka** - скачивается дистрибутив Kafka (например, kafka_2.13-4.2.0) и распаковывается в удобную директорию;
2. **Установленная Java** - для работы с Kafka требуется среда выполнения Java. Установка выполняется командой: **sudo apt install openjdk-17-jre-headless**. Рекомендуется использовать версию OpenJDK 17 или выше; 2. **Установленная Java** - для работы с Kafka требуется среда выполнения Java. Установка выполняется командой: **sudo apt install openjdk-17-jre-headless**. Рекомендуется использовать версию OpenJDK 17 или выше;
3. **Доступ к брокерам** - адреса брокеров (bootstrap servers) предоставляются после развертывания кластера; 3. **Доступ к брокерам** - адреса брокеров (bootstrap servers) предоставляются после развертывания кластера;
4. **Учетные данные**: Вам передаются credentials пользователя "client", у которого есть возможность управления кластером. 4. **Учетные данные**:
- Имя пользователя (username) - стандартное значение client; - Имя пользователя (username) - стандартное значение client;
- Пароль - предоставляется после развертывания кластера. - Пароль - предоставляется после развертывания кластера.
5. **Корневой сертификат (для SSL-подключения)** - сертификат для зашифрованного подключения предоставляется файлом при заказе сервиса Kafka. 5. **Корневой сертификат (для SSL-подключения)** - сертификат для зашифрованного подключения предоставляется файлом при заказе сервиса Kafka.
@@ -19,74 +19,76 @@
После распаковки архива Kafka в директории bin доступны основные скрипты для управления: После распаковки архива Kafka в директории bin доступны основные скрипты для управления:
|Скрипт|Назначение| | Скрипт | Назначение |
|---|---| | --------------------------- | -------------------------------------------------- |
|**kafka-topics.sh**|Управление топиками (создание, удаление, просмотр)| | `kafka-topics.sh` | Управление топиками (создание, удаление, просмотр) |
|**kafka-console-producer.sh**|Отправка сообщений в топик| | `kafka-console-producer.sh` | Отправка сообщений в топик |
|**kafka-console-consumer.sh**|Чтение сообщений из топика| | `kafka-console-consumer.sh` | Чтение сообщений из топика |
|**kafka-consumer-groups.sh**|Управление консьюмер-группами| | `kafka-consumer-groups.sh` | Управление консьюмер-группами |
|**kafka-configs.sh**|Изменение конфигурации топиков и других объектов| | `kafka-configs.sh` | Изменение конфигурации топиков и других объектов |
|**kafka-acls.sh**|Управление списками доступа (ACL)| | `kafka-acls.sh` | Управление списками доступа (ACL) |
В разделе ниже приведены примеры использования скриптов. В разделе ниже приведены примеры использования скриптов.
Подробное описание операций с данными и другими скриптами приведено в [официальной документации Kafka](https://kafka.apache.org/42/operations/basic-kafka-operations/). Дополнительную информацию можно получить, выполнив любой скрипт с флагом --help: Подробное описание операций с данными и другими скриптами приведено в [официальной документации Kafka](https://kafka.apache.org/42/getting-started/introduction/). Дополнительную информацию можно получить, выполнив любой скрипт с флагом --help:
``` ```
./kafka-topics.sh --help ./kafka-topics.sh --help
``` ```
## Конфигурационные файлы клиента
Для подключения к Kafka используется файл настроек (client.properties), который содержит параметры аутентификации и протокола.
### Конфигурационные файлы клиента
Для подключения к Kafka используется файл настроек (client.properties), который содержит параметры аутентификации, протокола и его механизмов (рекомендуются SCRAM_SHA_512 и SCRAM_SHA_256).
### Незашифрованное подключение (SASL_PLAINTEXT) ### Незашифрованное подключение (SASL_PLAINTEXT)
Создается файл **client.properties** со следующим содержимым: Создается файл **client.properties** со следующим содержимым:
``` ```
sasl.mechanism=SCRAM-SHA-512 sasl.mechanism=SCRAM-SHA-512
security.protocol=SASLPLAINTEXT security.protocol=SASLPLAINTEXT
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \ sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
    username="client" \     username="client" \
    password="вашпароль";     password="вашпароль";
``` ```
### Зашифрованное подключение (SASL_SSL) ### Зашифрованное подключение (SASL_SSL)
Для зашифрованного подключения дополнительно требуется корневой сертификат и хранилище доверенных сертификатов (truststore). Для зашифрованного подключения (в production-средах рекомендуется использовать именно его) дополнительно требуется корневой сертификат и хранилище доверенных сертификатов (truststore).
#### Шаг 1. Создание truststore Шаг 1. Создание truststore
С помощью утилиты **keytool** выполняется импорт сертификата в хранилище: С помощью утилиты **keytool** выполняется импорт сертификата в хранилище:
``` ```
keytool -importcert -storetype PKCS12 -keystore /путь/к/трастстору/truststore.jks -alias myalias -file ca.crt -storepass _любойвашпароль -keypass любойвашпароль_ keytool -importcert -storetype PKCS12 -keystore /путь/к/трастстору/truststore.jks -alias myalias -file ca.crt -storepass любойвашпароль -keypass любойвашпароль
``` ```
**Параметры:** Параметры:
- **keystore** - путь к создаваемому хранилищу; - **keystore** - путь к создаваемому хранилищу;
- **alias** - псевдоним сертификата в хранилище; - **alias** - псевдоним сертификата в хранилище;
- **file** - путь к загруженному корневому сертификату; - **file** - путь к загруженному корневому сертификату;
- **storepass** - пароль для доступа к хранилищу; - **storepass** - пароль для доступа к хранилищу;
- **keypass** - пароль для доступа к ключу. - **keypass** - пароль для доступа к ключу.
#### Шаг 2. Настройка client.properties Шаг 2. Настройка client.properties
В файл **client.properties** добавляются параметры SSL: В файл **client.properties** добавляются параметры SSL:
``` ```
sasl.mechanism=SCRAM-SHA-512 sasl.mechanism=SCRAM-SHA-512
security.protocol=SASLSSL security.protocol=SASLSSL
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \ sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
    username="client" \     username="client" \
    password="вашпароль";     password="вашпароль";
ssl.truststore.location=/путь/к/трастстору/truststore.jks ssl.truststore.location=/путь/к/трастстору/truststore.jks
ssl.truststore.password=парольотхранилища ssl.truststore.password=парольотхранилища
``` ```
## Примеры подключения ## Примеры подключения
Для незашифрованного подключения (SASL_PLAINTEXT) используется порт 9091; Для незашифрованного подключения (SASL_PLAINTEXT) используется порт 9091;
Для зашифрованного подключения (SASL_SSL) используется порт 9092. Для зашифрованного подключения (SASL_SSL) используется порт 9092.
### Создание топиков  ### Создание топиков 
@@ -95,9 +97,9 @@ ssl.truststore.password=парольотхранилища
./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=<значение> ./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=<значение>
``` ```
Ознакомиться с рекомендациями по настройке топиков можно здесь - [рекомендации](https://confluence.datafort.ru/spaces/OVPS/pages/2557741/%D0%A0%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D0%B0%D1%86%D0%B8%D0%B8+%D0%BF%D0%BE+%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B5+%D1%82%D0%BE%D0%BF%D0%B8%D0%BA%D0%B0+%D1%82%D0%B0%D1%80%D0%B8%D1%84+Base). Ознакомиться с рекомендациями по настройке топиков можно здесь - рекомендации.
По умолчанию топик создаётся с `--partitions 10 --replication-factor 3 --config min.insync.replicas=2`, поэтому, если нет необходимости создавать топик со специфическими настройками, эти флаги в команде можно не указывать. По умолчанию топик создаётся с --partitions 10 --replication-factor 3 --config min.insync.replicas=2, поэтому, если нет необходимости создавать топик со специфическими настройками, эти флаги в команде можно не указывать.
### Просмотр списка топиков ### Просмотр списка топиков
@@ -107,9 +109,10 @@ ssl.truststore.password=парольотхранилища
./kafka-topics.sh --bootstrap-server <IP_брокера_0>:9092,<IP_брокера_1>:9092,<IP_брокера_2>:9092 --command-config ~/client.properties --list ./kafka-topics.sh --bootstrap-server <IP_брокера_0>:9092,<IP_брокера_1>:9092,<IP_брокера_2>:9092 --command-config ~/client.properties --list
``` ```
**Параметры:** Параметры:
- **bootstrap-server** - список брокеров кластера (адреса и порты); - **bootstrap-server** - список брокеров кластера (адреса и порты);
- **command-config** - путь к файлу с настройками клиента; command-config - путь к файлу с настройками клиента;
- **list** - вывод списка топиков. - **list** - вывод списка топиков.
### Отправка сообщения в топик ### Отправка сообщения в топик
@@ -130,35 +133,52 @@ ssl.truststore.password=парольотхранилища
./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 ./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, которая создастся автоматически. - **from-beginning **- чтение всех сообщений с начала (при отсутствии параметра чтение начинается с новых сообщений);
- **group** - название consumer group, которая создастся автоматически.
## Управление пользователями и доступом ## Управление пользователями и доступом
## Рекомендации к паролям
**Длина пароля (рекомендуемая):**
- для учётной записи пользователя - не менее 12 знаков;
- для учётных записей администраторов, технических и служебных учётных записей - не менее 16 знаков.
**Сложность пароля:** рекомендуется использовать уникальный пароль, содержащий символы как минимум трёх из четырёх указанных ниже групп (при отсутствии технических ограничений):
- буквы латинского алфавита в верхнем регистре (A-Z);
- буквы латинского алфавита в нижнем регистре (a-z);
- цифры (0-9);
- специальные символы и знаки пунктуации (например, `!@#$%^&*(),.?`).
**Периодичность смены:** рекомендуемая периодичность смены пароля - не реже одного раза в год.
### Создание пользователей ### Создание пользователей
Для удобства можно написать скрипт, который создает пользователя сразу для двух методов шифрования - SHA-256 и SHA-512: Для удобства можно написать скрипт, который создает пользователя сразу для двух методов шифрования - SHA-256 и SHA-512:
``` ```
#!/bin/bash #!/bin/bash
username="имя_пользователя" username="имя_пользователя"
password="сгенерированный_пароль" password="сгенерированный_пароль"
bootstrap="<IP_брокера_0>:9092,<IP_брокера_1>:9092,<IP_брокера_X>:9092" bootstrap="<IP_брокера_0>:9092,<IP_брокера_1>:9092,<IP_брокера_X>:9092"
/opt/kafka/bin/kafka-configs.sh \ /opt/kafka/bin/kafka-configs.sh \
          --bootstrap-server $bootstrap \           --bootstrap-server $bootstrap \
          --alter \           --alter \
          --add-config SCRAM-SHA-256=[password="$password"] \           --add-config SCRAM-SHA-256=[password="$password"] \
          --command-config /opt/kafka/config/client.properties \           --command-config /opt/kafka/config/client.properties \
          --entity-type users \           --entity-type users \
          --entity-name $username           --entity-name $username
/opt/kafka/bin/kafka-configs.sh \ /opt/kafka/bin/kafka-configs.sh \
          --bootstrap-server $bootstrap \           --bootstrap-server $bootstrap \
          --alter \           --alter \
          --add-config SCRAM-SHA-512=[password="$password"] \           --add-config SCRAM-SHA-512=[password="$password"] \
          --command-config /opt/kafka/config/client.properties \           --command-config /opt/kafka/config/client.properties \
          --entity-type users \           --entity-type users \
          --entity-name $username           --entity-name $username
``` ```
@@ -193,7 +213,6 @@ sudo ./kafka-acls.sh --bootstrap-server <IP_брокера_0>:9092,<IP_брок
``` ```
## Администрирование кластера ## Администрирование кластера
### Изменение объема RAM ### Изменение объема RAM
Для изменения объема оперативной памяти, выделенной под Kafka, направляется обращение в техническую поддержку с указанием требуемого объема RAM. Для изменения объема оперативной памяти, выделенной под Kafka, направляется обращение в техническую поддержку с указанием требуемого объема RAM.
@@ -204,12 +223,16 @@ sudo ./kafka-acls.sh --bootstrap-server <IP_брокера_0>:9092,<IP_брок
Брокеров в кластере рекомендуется поддерживать **нечетным** для корректной работы механизмов выборов лидера. Брокеров в кластере рекомендуется поддерживать **нечетным** для корректной работы механизмов выборов лидера.
После добавления брокера выполняется перераспределение существующих партиций с учетом нового узла с помощью утилиты **kafka-reassign-partitions.sh**: После добавления брокера выполняется перераспределение существующих партиций с учетом нового узла с помощью утилиты **kafka-reassign-partitions.sh:**
``` ```
./kafka-reassign-partitions.sh --bootstrap-server <адреса_брокеров> --generate --topics-to-move-json-file topics.json --broker-list "0,1,2" --execute ./kafka-reassign-partitions.sh --bootstrap-server <адреса_брокеров> --generate --topics-to-move-json-file topics.json --broker-list "0,1,2" --execute
``` ```
: : : warning : : : info
Операция перераспределения партиций требует времени и может создавать дополнительную нагрузку на кластер. Выполнение рекомендуется в период наименьшей активности. Операция перераспределения партиций требует времени и может создавать дополнительную нагрузку на кластер. Выполнение рекомендуется в период наименьшей активности.
: : : : : :
@@ -20,7 +20,7 @@
: : : : : :
: : : tip : : : tip
Не используйте имена, начинающиеся с двойного подчеркивания ( __ ), например, **__consumer_offsets**. Эти имена зарезервированы для внутренних топиков Kafka. Не используйте имена, начинающиеся с двойного подчеркивания (__), например, **__consumer_offsets**. Эти имена зарезервированы для внутренних топиков Kafka.
: : : : : :
### Количество партиций (partitions) ### Количество партиций (partitions)
@@ -43,6 +43,7 @@ Partitions = max(NP, NC)
- TT - общая ожидаемая пропускная способность системы; - TT - общая ожидаемая пропускная способность системы;
- TP - максимальная пропускная способность одного продюсера для одной партиции; - TP - максимальная пропускная способность одного продюсера для одной партиции;
- TC - максимальная пропускная способность одного консьюмера для одной партиции. - TC - максимальная пропускная способность одного консьюмера для одной партиции.
### Фактор репликации (replication-factor) ### Фактор репликации (replication-factor)
Фактор репликации определяет количество копий данных, хранящихся на разных брокерах. Фактор репликации определяет количество копий данных, хранящихся на разных брокерах.
+40 -38
View File
@@ -2,14 +2,14 @@
## О разделе ## О разделе
В данном разделе описаны способы подключения к управляемому кластеру Kafka при тарифе Full. Рассматриваются два варианта: незашифрованное подключение (SASL_PLAINTEXT) и зашифрованное подключение с использованием SSL-сертификатов (SASL_SSL). Также приведены примеры работы с клиентскими утилитами. В данном разделе описаны способы подключения к управляемому кластеру Kafka. Рассматриваются два варианта: незашифрованное подключение (SASL_PLAINTEXT) и зашифрованное подключение с использованием SSL-сертификатов (SASL_SSL). Также приведены примеры работы с клиентскими утилитами.
## Предварительные требования ## Предварительные требования
Для работы с кластером Kafka необходимо наличие следующих компонентов: Для работы с кластером Kafka необходимо наличие следующих компонентов:
1. **Установленный клиент Kafka** - скачивается дистрибутив Kafka (например, kafka_2.13-4.2.0) и распаковывается в удобную директорию; 1. **Установленный клиент Kafka** - скачивается дистрибутив Kafka (например, kafka_2.13-4.2.0) и распаковывается в удобную директорию;
2. **Установленная Java** - для работы с Kafka требуется среда выполнения Java. Установка выполняется командой: **sudo apt install openjdk-17-jre-headless**. Рекомендуется использовать версию OpenJDK 17 или выше; 2. **Установленная Java** - для работы с Kafka требуется среда выполнения Java. Установка выполняется командой: **sudo apt install openjdk-17-jre-headless.** Рекомендуется использовать версию OpenJDK 17 или выше;
3. **Доступ к брокерам** - адреса брокеров (bootstrap servers) предоставляются после развертывания кластера; 3. **Доступ к брокерам** - адреса брокеров (bootstrap servers) предоставляются после развертывания кластера;
4. **Учетные данные** - пользователи создаются по Вашему запросу. Например, с правами чтения топиков и записи в них. 4. **Учетные данные** - пользователи создаются по Вашему запросу. Например, с правами чтения топиков и записи в них.
5. **Корневой сертификат (для SSL-подключения)** - сертификат для зашифрованного подключения предоставляется файлом при заказе сервиса Kafka. 5. **Корневой сертификат (для SSL-подключения)** - сертификат для зашифрованного подключения предоставляется файлом при заказе сервиса Kafka.
@@ -20,11 +20,11 @@
|Скрипт|Назначение| |Скрипт|Назначение|
|---|---| |---|---|
|**kafka-console-producer.sh**|Отправка сообщений в топик| |`kafka-console-producer.sh`|Отправка сообщений в топик|
|**kafka-console-consumer.sh**|Чтение сообщений из топика| |`kafka-console-consumer.sh`|Чтение сообщений из топика
В разделе ниже приведены примеры использования скриптов. В разделе ниже приведены примеры использования скриптов.
Подробное описание операций с данными и другими скриптами приведено в [официальной документации Kafka](https://kafka.apache.org/42/operations/basic-kafka-operations/). Дополнительную информацию можно получить, выполнив любой скрипт с флагом --help:
Подробное описание операций с данными и другими скриптами приведено в [официальной документации Kafka](https://kafka.apache.org/42/getting-started/introduction/). Дополнительную информацию можно получить, выполнив любой скрипт с флагом --help:
``` ```
./kafka-console-producer.sh ./kafka-console-producer.sh
@@ -32,57 +32,58 @@
## Конфигурационные файлы клиента ## Конфигурационные файлы клиента
Для подключения к Kafka используется файл настроек (client.properties), который содержит параметры аутентификации и протокола. Для подключения к Kafka используется файл настроек (client.properties), который содержит параметры аутентификации, протокола и его механизмов (рекомендуются SCRAM_SHA_512 и SCRAM_SHA_256).
### Незашифрованное подключение (SASL_PLAINTEXT) ### Незашифрованное подключение (SASL_PLAINTEXT)
Создается файл **client.properties** со следующим содержимым: Создается файл client.properties со следующим содержимым:
``` ```
sasl.mechanism=SCRAM-SHA-512 sasl.mechanism=SCRAM-SHA-512
security.protocol=SASLPLAINTEXT security.protocol=SASLPLAINTEXT
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \ sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
    username="вашлогин" \     username="вашлогин" \
    password="вашпароль";     password="вашпароль";
``` ```
### Зашифрованное подключение (SASL_SSL) ### Зашифрованное подключение (SASL_SSL)
Для зашифрованного подключения дополнительно требуется корневой сертификат и хранилище доверенных сертификатов (truststore). Для зашифрованного подключения (в production-средах рекомендуется использовать именно его) дополнительно требуется корневой сертификат и хранилище доверенных сертификатов (truststore).
#### Шаг 1. Создание truststore Шаг 1. Создание truststore
С помощью утилиты **keytool** выполняется импорт сертификата в хранилище: С помощью утилиты **keytool** выполняется импорт сертификата в хранилище:
``` ```
keytool -importcert -storetype PKCS12 -keystore /путь/к/трастстору/truststore.jks -alias myalias -file ca.crt -storepass _любойвашпароль -keypass любойвашпароль_ keytool -importcert -storetype PKCS12 -keystore /путь/к/трастстору/truststore.jks -alias myalias -file ca.crt -storepass любойвашпароль -keypass любойвашпароль
``` ```
**Параметры:** Параметры:
- **keystore** - путь к создаваемому хранилищу;
- **alias** - псевдоним сертификата в хранилище;
- **file** - путь к загруженному корневому сертификату;
- **storepass** - пароль для доступа к хранилищу;
- **keypass** - пароль для доступа к ключу.
#### Шаг 2. Настройка client.properties - keystore - путь к создаваемому хранилищу;
- alias - псевдоним сертификата в хранилище;
- file - путь к загруженному корневому сертификату;
- storepass - пароль для доступа к хранилищу;
- keypass - пароль для доступа к ключу.
Шаг 2. Настройка client.properties
В файл **client.properties** добавляются параметры SSL: В файл **client.properties** добавляются параметры SSL:
``` ```
sasl.mechanism=SCRAM-SHA-512 sasl.mechanism=SCRAM-SHA-512
security.protocol=SASLSSL security.protocol=SASLSSL
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \ sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
    username="вашлогин" \     username="вашлогин" \
    password="вашпароль";     password="вашпароль";
ssl.truststore.location=/путь/к/трастстору/truststore.jks ssl.truststore.location=/путь/к/трастстору/truststore.jks
ssl.truststore.password=парольотхранилища ssl.truststore.password=парольотхранилища
``` ```
## Примеры подключения ## Примеры подключения
Для незашифрованного подключения (SASL_PLAINTEXT) используется порт 9091 Для незашифрованного подключения (SASL_PLAINTEXT) используется порт 9091;
Для зашифрованного подключения (SASL_SSL) используется порт 9092 Для зашифрованного подключения (SASL_SSL) используется порт 9092.
### Отправка сообщения в топик ### Отправка сообщения в топик
@@ -92,14 +93,14 @@ 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 ./kafka-console-producer.sh --bootstrap-server <IP_брокера_0>:9092,<IP_брокера_1>:9092,<IP_брокера_2>:9092 --command-config~/client.properties --topic test-topic
``` ```
**Параметры:** Параметры:
- **bootstrap-server** - список брокеров кластера (адреса и порты); - bootstrap-server - список брокеров кластера (адреса и порты);
- **command-config** - путь к файлу с настройками клиента. - command-config - путь к файлу с настройками клиента;
После выполнения команды сообщения вводятся построчно. Для завершения используется сочетание клавиш Ctrl+C. После выполнения команды сообщения вводятся построчно. Для завершения используется сочетание клавиш Ctrl+C.
### Чтение сообщений из топика ### Чтение сообщений из топика
Выполняется команда с указанием топика и, при необходимости, consumer group: Выполняется команда с указанием топика и, при необходимости, consumer group:
@@ -107,20 +108,21 @@ ssl.truststore.password=парольотхранилища
./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 ./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** - чтение всех сообщений с начала (при отсутствии параметра чтение начинается с новых сообщений); - **from-beginning** - чтение всех сообщений с начала (при отсутствии параметра чтение начинается с новых сообщений);
- **group -** название consumer group, которая при её указании создастся автоматически. - **group** - название consumer group, которая при её указании создастся автоматически.
## Администрирование кластера ## Администрирование кластера
: : : info : : : info
Для изменения параметров кластера Kafka (CPU, RAM, DISK, количества брокеров, параметров топиков) необходимо направить запрос в Service Desk по адресу [servicedesk@datafort.ru](mailto:servicedesk@datafort.ru) с указанием требуемых значений. Для изменения параметров кластера Kafka (CPU, RAM, DISK, количества брокеров, параметров топиков) необходимо направить запрос в Service Desk по адресу servicedesk@datafort.ru с указанием требуемых значений.
: : : : : :
### Изменение количества брокеров ### Изменение количества брокеров
Выполняется также через обращение в техническую поддержку. Выполняется также через обращение в техническую поддержку.
Брокеров в кластере рекомендуется поддерживать **нечетным** для корректной работы механизмов выборов лидера. Брокеров в кластере рекомендуется поддерживать **нечетным** для корректной работы механизмов выборов лидера.
: : : info : : : info
-19
View File
@@ -86,22 +86,3 @@ PostgreSQL - это современная система управления
- быстрое развёртывание PostgreSQL-кластера без необходимости ручной настройки репликации и failover; - быстрое развёртывание PostgreSQL-кластера без необходимости ручной настройки репликации и failover;
- администрирование баз данных через веб-интерфейс без прямого доступа к серверам кластера. - администрирование баз данных через веб-интерфейс без прямого доступа к серверам кластера.
## Рекомендации для сервиса
Использовать TLS-защищённые протоколы для подключения к сервису.
### Пароли
1. **Длина пароля (рекомендуемая):**
- для учётной записи пользователя - не менее 12 знаков;
- для учётных записей администраторов, технических и служебных УЗ - не менее 16 знаков.
2. Использовать уникальный пароль, содержащий символы как минимум трёх из четырёх указанных ниже групп (при отсутствии технических ограничений):
- буквы латинского алфавита в верхнем регистре (A-Z);
- буквы латинского алфавита в нижнем регистре (a-z);
- цифры (09);
- специальные символы и знаки пунктуации (например, !@#$%^&*(),.?).
3. Рекомендуемая периодичность смены пароля - не реже 1 раза в год.
+15
View File
@@ -79,6 +79,21 @@ $<iterations>:<salt>$<storedkey>:<serverkey>
|Создание новой базы данных | Для создания базы данных | ```CREATE DATABASE app_db;``` | |Создание новой базы данных | Для создания базы данных | ```CREATE DATABASE app_db;``` |
|Создание базы данных с указанием владельца | Пользователь, указанный как владелец, будет иметь полный контроль над базой данных, включая права на её удаление и изменение. По умолчанию владельцем создаваемой базы данных является пользователь, который её создает | ```CREATE DATABASE app_db OWNER client;``` | |Создание базы данных с указанием владельца | Пользователь, указанный как владелец, будет иметь полный контроль над базой данных, включая права на её удаление и изменение. По умолчанию владельцем создаваемой базы данных является пользователь, который её создает | ```CREATE DATABASE app_db OWNER client;``` |
### Требования к паролям
**Длина пароля (рекомендуемая):**
- для учётной записи пользователя - не менее 12 знаков;
- для учётных записей администраторов, технических и служебных учётных записей - не менее 16 знаков.
**Сложность пароля:** рекомендуется использовать уникальный пароль, содержащий символы как минимум трёх из четырёх указанных ниже групп (при отсутствии технических ограничений):
- буквы латинского алфавита в верхнем регистре (A-Z);
- буквы латинского алфавита в нижнем регистре (a-z);
- цифры (0-9);
- специальные символы и знаки пунктуации (например, `!@#$%^&*(),.?`).
**Периодичность смены:** рекомендуемая периодичность смены пароля - не реже одного раза в год.
## Создание пользователей и ролей ## Создание пользователей и ролей