Внесение правок в статьи по постгресу и кафке
This commit is contained in:
@@ -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);
|
|
||||||
- цифры (0–9);
|
|
||||||
- специальные символы и знаки пунктуации (например, !@#$%^&*(),.?).
|
|
||||||
|
|
||||||
3. Рекомендуемая периодичность смены пароля - не реже 1 раза в год.
|
|
||||||
@@ -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)
|
||||||
|
|
||||||
Фактор репликации определяет количество копий данных, хранящихся на разных брокерах.
|
Фактор репликации определяет количество копий данных, хранящихся на разных брокерах.
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -86,22 +86,3 @@ PostgreSQL - это современная система управления
|
|||||||
- быстрое развёртывание PostgreSQL-кластера без необходимости ручной настройки репликации и failover;
|
- быстрое развёртывание PostgreSQL-кластера без необходимости ручной настройки репликации и failover;
|
||||||
- администрирование баз данных через веб-интерфейс без прямого доступа к серверам кластера.
|
- администрирование баз данных через веб-интерфейс без прямого доступа к серверам кластера.
|
||||||
|
|
||||||
## Рекомендации для сервиса
|
|
||||||
|
|
||||||
Использовать TLS-защищённые протоколы для подключения к сервису.
|
|
||||||
|
|
||||||
### Пароли
|
|
||||||
|
|
||||||
1. **Длина пароля (рекомендуемая):**
|
|
||||||
|
|
||||||
- для учётной записи пользователя - не менее 12 знаков;
|
|
||||||
- для учётных записей администраторов, технических и служебных УЗ - не менее 16 знаков.
|
|
||||||
|
|
||||||
2. Использовать уникальный пароль, содержащий символы как минимум трёх из четырёх указанных ниже групп (при отсутствии технических ограничений):
|
|
||||||
|
|
||||||
- буквы латинского алфавита в верхнем регистре (A-Z);
|
|
||||||
- буквы латинского алфавита в нижнем регистре (a-z);
|
|
||||||
- цифры (0–9);
|
|
||||||
- специальные символы и знаки пунктуации (например, !@#$%^&*(),.?).
|
|
||||||
|
|
||||||
3. Рекомендуемая периодичность смены пароля - не реже 1 раза в год.
|
|
||||||
@@ -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);
|
||||||
|
- специальные символы и знаки пунктуации (например, `!@#$%^&*(),.?`).
|
||||||
|
|
||||||
|
**Периодичность смены:** рекомендуемая периодичность смены пароля - не реже одного раза в год.
|
||||||
|
|
||||||
## Создание пользователей и ролей
|
## Создание пользователей и ролей
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user