将 Amazon MSK 与 ClickHouse 集成
先决条件
我们假定:
- 您对 ClickHouse 连接器接收器、Amazon MSK 和 MSK 连接器有一定了解。我们推荐阅读 Amazon MSK 的 入门指南 和 MSK 连接指南。
- MSK 代理是公开可访问的。请参见开发者指南的 公共访问 部分。
ClickHouse 与 Amazon MSK 的官方 Kafka 连接器
收集您的连接详细信息
要通过 HTTP(S) 连接到 ClickHouse,您需要以下信息:
-
HOST 和 PORT:通常,当使用 TLS 时,端口为 8443;当不使用 TLS 时,端口为 8123。
-
数据库名称:开箱即用时,有一个名为
default
的数据库,请使用您要连接的数据库名称。 -
用户名和密码:开箱即用时,用户名为
default
。请使用适合您用例的用户名。
您的 ClickHouse Cloud 服务详细信息可在 ClickHouse Cloud 控制台中找到。 选择您要连接的服务并点击 Connect:

选择 HTTPS,详细信息会在示例 curl
命令中提供。

如果您使用的是自管理的 ClickHouse,连接详细信息由您的 ClickHouse 管理员设置。
步骤
- 确保您熟悉 ClickHouse 连接器接收器
- 创建一个 MSK 实例。
- 创建并分配 IAM 角色。
- 从 ClickHouse Connect Sink 发布页面 下载
jar
文件。 - 在 Amazon MSK 控制台的 自定义插件页面 上安装下载的
jar
文件。 - 如果连接器与公共的 ClickHouse 实例通信,请 启用互联网访问。
- 在配置中提供主题名称、ClickHouse 实例主机名和密码。
性能调优
提高性能的一种方法是通过以下方式调整批处理大小和从 Kafka 获取的记录数量,向 worker 配置添加:
您使用的具体值将根据所需的记录数量和记录大小而有所不同。例如,默认值为:
您可以在官方 Kafka 和 Amazon MSK 文档中找到更多详细信息(包括实现和其他注意事项)。
关于 MSK Connect 的网络注释
为了使 MSK Connect 连接到 ClickHouse,我们建议您的 MSK 集群位于私有子网中,并连接一个私有 NAT 以获得互联网访问。以下是设置的说明。请注意,公共子网是支持的,但由于需要不断将弹性 IP 地址分配给您的 ENI,因此不推荐使用,AWS 在这里提供了更多详情。
- 创建私有子网: 在您的 VPC 内创建一个新子网,将其指定为私有子网。该子网应没有直接访问互联网的权限。
- 创建 NAT 网关: 在您的 VPC 的公共子网中创建一个 NAT 网关。NAT 网关使您私有子网中的实例能够连接到互联网或其他 AWS 服务,但防止互联网主动与这些实例建立连接。
- 更新路由表: 添加一条将互联网流量引导到 NAT 网关的路由。
- 确保安全组和网络 ACL 配置: 配置您的 安全组 和 网络 ACL(访问控制列表),以允许从 ClickHouse 实例往返的相关流量。
- 对于 ClickHouse Cloud,配置您的安全组以允许在端口 9440 和 8443 上的传入流量。
- 对于自托管的 ClickHouse,配置您的安全组以允许在配置文件中的端口(默认是 8123)上的传入流量。
- 将安全组附加到 MSK: 确保这些新的安全组已经连接到了 NAT 网关,并附加到您的 MSK 集群。