AWS PrivateLink
AWS PrivateLink is available in the Scale and Enterprise plans. To upgrade, visit the Plans page in the cloud console.
您可以使用 AWS PrivateLink 在 VPC、AWS 服务、您的本地系统和 ClickHouse Cloud 之间建立安全连接,而无需将流量暴露于公共互联网。本文档概述了使用 AWS PrivateLink 连接到 ClickHouse Cloud 的步骤。
要仅通过 AWS PrivateLink 地址限制对 ClickHouse Cloud 服务的访问,请按照 ClickHouse Cloud IP 访问列表 中提供的说明操作。
ClickHouse Cloud 目前支持 跨区域 PrivateLink 的测试版。
请完成以下操作以启用 AWS PrivateLink:
- 获取端点“服务名称”。
- 创建 AWS 端点。
- 将“端点 ID”添加到 ClickHouse Cloud 组织。
- 将“端点 ID”添加到 ClickHouse 服务允许列表。
可以在 这里 找到 Terraform 示例。
注意
ClickHouse 尝试将您的服务分组,以在 AWS 区域内重用相同的发布 服务端点。但是,这种分组并不总是保证,特别是当您将服务分散到多个 ClickHouse 组织时。 如果您已经为 ClickHouse 组织中的其他服务配置了 PrivateLink,通常可以跳过大部分步骤,因为可以直接进入最后一步:将 ClickHouse“端点 ID”添加到 ClickHouse 服务允许列表。
前提条件
在开始之前,您需要:
- 您的 AWS 账户。
- 具有必要权限以在 ClickHouse 端创建和管理私有端点的 ClickHouse API 密钥。
步骤
按照以下步骤通过 AWS PrivateLink 连接您的 ClickHouse Cloud 服务。
获取端点“服务名称”
选项 1:ClickHouse Cloud 控制台
在 ClickHouse Cloud 控制台中,打开您想要通过 PrivateLink 连接的服务,然后导航到 设置 菜单。

记下 服务名称
和 DNS 名称
,然后 移动到下一步。
选项 2:API
首先,在运行任何命令之前设置以下环境变量:
通过按区域、提供者和服务名称进行过滤,获取您的 ClickHouse INSTANCE_ID
:
获取您的 PrivateLink 配置的 endpointServiceId
和 privateDnsHostname
:
此命令应该返回类似于以下内容:
记下 endpointServiceId
和 privateDnsHostname
, 移动到下一步。
创建 AWS 端点
本节介绍通过 AWS PrivateLink 配置 ClickHouse 的特定细节。提供了 AWS 特定步骤以供参考,但这些步骤可能会随着时间而变化,且 AWS 云提供商不会发出通知。请根据您的具体用例考虑 AWS 配置。
请注意,ClickHouse 并不负责配置所需的 AWS VPC 端点、安全组规则或 DNS 记录。
如果您在设置 PrivateLink 时以前启用了“私有 DNS 名称”,并且在通过 PrivateLink 配置新服务时遇到困难,请联系 ClickHouse 支持。有关 AWS 配置任务的其他问题,请直接联系 AWS 支持。
选项 1:AWS 控制台
打开 AWS 控制台并转到 VPC → 端点 → 创建端点。
选择 使用 NLB 和 GWLB 的端点服务,并在 服务名称 字段中使用您从 获取端点“服务名称” 步骤中获得的 服务名称
console 或 endpointServiceId
API。单击 验证服务:

如果您想通过 PrivateLink 建立跨区域连接,请启用“跨区域端点”复选框,并指定服务区域。服务区域是 ClickHouse 实例运行的地方。
如果出现“无法验证服务名称。”错误,请联系客户支持请求将新区域添加到支持区域列表中。
接下来,选择您的 VPC 和子网:

作为可选步骤,分配安全组/标签:
确保安全组中开放 443
、8443
、9440
、3306
端口。
创建 VPC 端点后,请记下 端点 ID
值;您将在后续步骤中需要它。

选项 2:AWS CloudFormation
接下来,您需要使用您从 获取端点“服务名称” 步骤中获得的 服务名称
console 或 endpointServiceId
API 创建一个 VPC 端点。
确保使用正确的子网 ID、安全组和 VPC ID。
创建 VPC 端点后,请记下 端点 ID
值;您将在后续步骤中需要它。
选项 3:Terraform
以下的 service_name
是您从 获取端点“服务名称” 步骤中获得的 服务名称
console 或 endpointServiceId
API。
创建 VPC 端点后,请记下 端点 ID
值;您将在后续步骤中需要它。
为端点设置私有 DNS 名称
有多种配置 DNS 的方法。请根据您的具体用例设置 DNS。
您需要将从 获取端点“服务名称” 步骤中获取的“DNS 名称”指向 AWS 端点网络接口。这确保您 VPC/网络内的服务/组件可以正确解析它。
将“端点 ID”添加到 ClickHouse 服务允许列表
选项 1:ClickHouse Cloud 控制台
要添加,请导航到 ClickHouse Cloud 控制台,打开您希望通过 PrivateLink 连接的服务,然后导航到 设置。单击 设置私有端点 以打开私有端点设置。输入从 创建 AWS 端点 步骤中获得的 端点 ID
。点击“创建端点”。
如果您想允许来自现有 PrivateLink 连接的访问,请使用现有端点下拉菜单。

要删除,请导航到 ClickHouse Cloud 控制台,找到该服务,然后导航到服务的 设置,找到您想要删除的端点。从端点列表中将其删除。
选项 2:API
您需要将端点 ID 添加到应使用 PrivateLink 访问的每个实例的允许列表中。
使用来自 创建 AWS 端点 步骤的数据设置 ENDPOINT_ID
环境变量。
在运行任何命令之前设置以下环境变量:
要将端点 ID 添加到允许列表:
要从允许列表中删除端点 ID:
使用 PrivateLink 访问实例
每个启用 Private Link 的服务都有一个公共和私有端点。要通过 Private Link 连接,您需要使用私有端点,该端点将是从 获取端点“服务名称" 获取的 privateDnsHostname
API 或 DNS 名称
console。
获取私有 DNS 主机名
选项 1:ClickHouse Cloud 控制台
在 ClickHouse Cloud 控制台中,导航到 设置。单击 设置私有端点 按钮。在打开的飞出菜单中,复制 DNS 名称。

选项 2:API
在运行任何命令之前设置以下环境变量:
您可以从 步骤 中检索 INSTANCE_ID
。
这应该输出类似于:
在此示例中,通过 privateDnsHostname
主机名连接将路由到 PrivateLink,但通过 endpointServiceId
主机名的连接将通过互联网路由。
故障排除
一个区域内的多个 PrivateLinks
在大多数情况下,您只需为每个 VPC 创建一个单一的端点服务。此端点可以将请求从 VPC 路由到多个 ClickHouse Cloud 服务。 请参见 这里
连接到私有端点超时
- 请将安全组附加到 VPC 端点。
- 请验证附加到端点的安全组上的
inbound
规则,并允许 ClickHouse 端口。 - 请验证用于连通性测试的 VM 上附加的安全组的
outbound
规则,并允许对 ClickHouse 端口的连接。
私有主机名:未找到主机地址
- 请检查您的 DNS 配置。
连接被对等方重置
- 端点 ID 可能未添加到服务允许列表中,请访问 步骤。
检查端点过滤器
在运行任何命令之前设置以下环境变量:
您可以从 步骤 中检索 INSTANCE_ID
。
连接到远程数据库
假设您正在尝试在 ClickHouse Cloud 中使用 MySQL 或 PostgreSQL 表函数并连接到托管在 Amazon Web Services (AWS) VPC 中的数据库。不能使用 AWS PrivateLink 安全地启用此连接。PrivateLink 是单向的、单向连接。它允许您的内部网络或 Amazon VPC 安全连接到 ClickHouse Cloud,但不允许 ClickHouse Cloud 连接到您的内部网络。
当您有一个客户端/服务器设置时,想让一个或多个消费者 VPC 对服务提供者 VPC 中的特定服务或一组实例具有单向访问权限时,使用 AWS PrivateLink。只有消费者 VPC 中的客户端可以发起与服务提供者 VPC 中的服务的连接。
为此,配置您的 AWS 安全组以允许 ClickHouse Cloud 连接到您内部/私有数据库服务。查看 ClickHouse Cloud 区域的默认出站 IP 地址,以及 可用的静态 IP 地址。