Интеграция Amazon MSK с ClickHouse
Примечание: Политика, показанная в видео, является избыточно разрешительной и предназначена только для быстрого начала работы. См. ниже рекомендации по настройке IAM по принципу наименьших привилегий.
Предварительные требования
Мы предполагаем:
- вы знакомы с ClickHouse Connector Sink, Amazon MSK и MSK Connectors. Рекомендуем руководство Amazon MSK Getting Started guide и MSK Connect guide.
- брокер MSK доступен из публичной сети. См. раздел Public Access в Developer Guide.
Официальный коннектор Kafka от ClickHouse для Amazon MSK
Соберите сведения для подключения
Чтобы подключиться к ClickHouse по HTTP(S), вам потребуется следующая информация:
| Параметр(ы) | Описание |
|---|---|
HOST и PORT | Обычно используется порт 8443 при использовании TLS или 8123 при отсутствии TLS. |
DATABASE NAME | По умолчанию существует база данных default; используйте имя базы данных, к которой вы хотите подключиться. |
USERNAME и PASSWORD | По умолчанию имя пользователя — default. Используйте имя пользователя, соответствующее вашему сценарию. |
Сведения о вашем сервисе ClickHouse Cloud доступны в консоли ClickHouse Cloud. Выберите сервис и нажмите Connect:

Выберите HTTPS. Параметры подключения отображаются в примере команды curl.

Если вы используете самостоятельное (self-managed) развертывание ClickHouse, параметры подключения задаются администратором ClickHouse.
Шаги
- Ознакомьтесь с ClickHouse Connector Sink.
- Создайте экземпляр MSK.
- Создайте и назначьте роль IAM.
- Загрузите файл
jarсо страницы релизов ClickHouse Connector Sink (Release page). - Установите загруженный файл
jarна странице Custom plugin консоли Amazon MSK. - Если коннектор взаимодействует с публичным экземпляром ClickHouse, включите доступ в интернет.
- Укажите имя топика, имя хоста экземпляра ClickHouse и пароль в конфигурации.
Рекомендуемые разрешения IAM (минимально необходимые привилегии)
Используйте наименьший набор разрешений, необходимых для вашей конфигурации. Начните с базового набора ниже и добавляйте дополнительные службы только в том случае, если вы их используете.
- Используйте блок Glue только если вы применяете AWS Glue Schema Registry.
- Используйте блок Secrets Manager только если вы получаете учетные данные и truststore из Secrets Manager. Ограничьте область действия ARN.
- Используйте блок S3 только если вы загружаете артефакты (например, truststore) из S3. Ограничьте область действия bucket/префикса.
См. также: Рекомендации по работе с Kafka – IAM.
Настройка производительности
Один из способов повысить производительность — изменить размер пакета и количество записей, извлекаемых из Kafka, добавив следующее в конфигурацию worker:
Конкретные значения, которые вы будете использовать, будут отличаться в зависимости от требуемого количества записей и их размера. Например, значения по умолчанию таковы:
Вы можете найти более подробную информацию (как по реализации, так и по другим аспектам) в официальной документации Kafka и Amazon MSK.
Заметки по сетевой конфигурации для MSK Connect
Чтобы MSK Connect мог подключаться к ClickHouse, мы рекомендуем размещать ваш кластер MSK в приватной подсети с подключённым Private NAT для доступа в интернет. Инструкции по настройке приведены ниже. Обратите внимание, что публичные подсети поддерживаются, но не рекомендуются из‑за необходимости постоянно назначать Elastic IP-адрес вашему ENI, подробнее об этом см. в документации AWS
- Создайте приватную подсеть: Создайте новую подсеть в рамках вашего VPC и обозначьте её как приватную. Эта подсеть не должна иметь прямого доступа в интернет.
- Создайте NAT-шлюз: Создайте NAT-шлюз в публичной подсети вашего VPC. NAT-шлюз позволяет инстансам в вашей приватной подсети подключаться к интернету или другим сервисам AWS, но предотвращает установку входящих подключений из интернета к этим инстансам.
- Обновите таблицу маршрутизации: Добавьте маршрут, направляющий трафик в интернет к NAT-шлюзу.
- Проверьте конфигурацию Security Groups и сетевых ACL: Настройте ваши security groups и сетевые ACL (Access Control Lists) так, чтобы они разрешали необходимый трафик.
- От рабочих ENI MSK Connect к брокерам MSK по TLS-порту (обычно 9094).
- От рабочих ENI MSK Connect к конечной точке ClickHouse: 9440 (нативный TLS) или 8443 (HTTPS).
- Разрешите входящий трафик на security group брокера от security group рабочих MSK Connect.
- Для самостоятельно развернутого (self-hosted) ClickHouse откройте порт, настроенный на вашем сервере (по умолчанию 8123 для HTTP).
- Привяжите Security Groups к MSK: Убедитесь, что соответствующие security groups привязаны к вашему кластеру MSK и рабочим MSK Connect.
- Подключение к ClickHouse Cloud:
- Публичная конечная точка + список разрешённых IP-адресов (IP allowlist): требует исходящего трафика через NAT из приватных подсетей.
- Приватное подключение, где доступно (например, VPC peering/PrivateLink/VPN). Убедитесь, что включены DNS-имена VPC и разрешение DNS (VPC DNS hostnames/resolution), и что DNS может разрешать приватную конечную точку.
- Проверьте подключение (краткий чек‑лист):
- В среде коннектора убедитесь, что разрешается DNS-имя bootstrap для MSK и выполняется подключение по TLS к порту брокера.
- Установите TLS-подключение к ClickHouse на порт 9440 (или 8443 для HTTPS).
- Если используются сервисы AWS (Glue/Secrets Manager), разрешите исходящий трафик к их конечным точкам.