Skip to main content
您可以使用 AWS PrivateLink 在 VPC、AWS 服务、您的本地系统以及 ClickHouse Cloud 之间建立安全连接,而无需将流量暴露到公共互联网。本文档概述了通过 AWS PrivateLink 连接到 ClickHouse Cloud 的步骤。 若要将对您的 ClickHouse Cloud 服务的访问限制为仅可通过 AWS PrivateLink 地址进行,请按照 ClickHouse Cloud IP Access Lists 中提供的说明操作。
ClickHouse Cloud 支持从以下区域进行跨区域 PrivateLink连接:
  • sa-east-1
  • il-central-1
  • me-south-1
  • eu-central-2
  • eu-north-1
  • eu-south-2
  • eu-west-3
  • eu-south-1
  • eu-west-2
  • eu-west-1
  • eu-central-1
  • ca-west-1
  • ca-central-1
  • ap-northeast-1
  • ap-southeast-2
  • ap-southeast-1
  • ap-northeast-2
  • ap-northeast-3
  • ap-south-1
  • ap-southeast-4
  • ap-southeast-3
  • ap-south-2
  • ap-east-1
  • af-south-1
  • us-west-2
  • us-west-1
  • us-east-2
  • us-east-1 价格注意事项:AWS 将对跨区域数据传输收费,定价请参见此处。
请完成以下步骤以启用 AWS PrivateLink:
  1. 获取 Endpoint “Service name”。
  2. 创建 AWS Endpoint。
  3. 将 “Endpoint ID” 添加到 ClickHouse Cloud 组织。
  4. 将 “Endpoint ID” 添加到 ClickHouse 服务允许列表。
可在此处找到 Terraform 示例。

重要注意事项

ClickHouse 会尝试将您的服务分组,以便在同一 AWS 区域内复用已发布的服务端点。不过,这种分组并不一定能保证,尤其是在您将服务分布到多个 ClickHouse organizations 中时。 如果您所在的 ClickHouse organization 中的其他服务已经配置了 PrivateLink,通常就可以借助这种分组跳过大部分步骤,直接进入最后一步:将 ClickHouse “Endpoint ID” 添加到 ClickHouse 服务允许列表中。

此流程的前置条件

开始之前,您需要准备:
  1. 您的 AWS 账户。
  2. 具备在 ClickHouse 端创建和管理专用终结点所需权限的 ClickHouse API key。

步骤

按照以下步骤,通过 AWS PrivateLink 连接您的 ClickHouse Cloud 服务。

获取端点“Service name”信息

选项 1:ClickHouse Cloud 控制台

在 ClickHouse Cloud 控制台中,打开要通过 PrivateLink 连接的服务,然后前往 设置 菜单。 记下 Service name 和 DNS name,然后进入下一步。

选项 2:API

首先,在运行任何命令前,请先设置以下环境变量:
按区域、提供商和服务名称筛选,以获取你的 ClickHouse INSTANCE_ID:
获取 PrivateLink 配置所需的 endpointServiceId 和 privateDnsHostname:
此命令应返回类似下面的内容:
记下 endpointServiceId 和 privateDnsHostname,然后进入下一步。

创建 AWS endpoint

本节介绍通过 AWS PrivateLink 配置 ClickHouse 时,与 ClickHouse 相关的具体事项。AWS 相关步骤仅供参考,用于帮助您了解应从哪些方面着手;但这些步骤可能会由 AWS 云提供商随时更改,且恕不另行通知。请根据您的具体使用场景评估 AWS 配置。请注意,ClickHouse 不负责配置所需的 AWS VPC 端点、安全组 (Security Group) 规则或 DNS 记录。如果您之前在设置 PrivateLink 时启用了“private DNS names”,并且在通过 PrivateLink 配置新服务时遇到困难,请联系 ClickHouse 支持团队。对于与 AWS 配置任务相关的其他任何问题,请直接联系 AWS Support。

选项 1:AWS 控制台

打开 AWS 控制台,前往 VPC → Endpoints → Create endpoints。 选择 Endpoint services that use NLBs and GWLBs,然后在 Service Name 字段中填入您在 获取 Endpoint“Service name” 步骤中获得的 Service nameconsole 或 endpointServiceIdAPI。点击 Verify service: 如果您想通过 PrivateLink 建立跨区域连接,请勾选 “Cross region endpoint” 复选框,并指定服务所在区域。服务所在区域即 ClickHouse 实例运行的区域。 如果出现 “Service name couldn’t be verified.” 错误,请联系 Customer Support,申请将新区域添加到 supported regions 列表中。 接下来,选择您的 VPC 和子网: 作为可选步骤,分配安全组 (Security Group) /标签:
请确保安全组中已放行端口 443、8443、9440、3306。
创建 VPC 端点后,请记下 Endpoint ID 的值;后续步骤中会用到它。

选项 2:AWS CloudFormation

接下来,您需要使用在获取端点“Service name”步骤中获得的 Service name控制台 或 endpointServiceIdAPI 创建 VPC 端点。 请务必使用正确的子网 ID、安全组 (Security Group) 和 VPC ID。
创建 VPC 端点后,请记下 Endpoint ID 的值;后续步骤中会用到它。

选项 3:Terraform

下面的 service_name 是你在获取端点“Service name”信息步骤中获取到的 Service name控制台 或 endpointServiceIdAPI
创建 VPC 端点后,请记下 Endpoint ID 的值;后续步骤会用到它。

为端点设置私有 DNS 名称

DNS 有多种配置方式。请根据你的具体使用场景进行设置。
你需要将获取端点“Service name”步骤中获取的“DNS name”指向 AWS endpoint 网络接口。这样可确保你的 VPC/网络中的服务/组件能够正确解析该名称。

将“Endpoint ID”添加到 ClickHouse 服务的允许列表中

选项 1:ClickHouse Cloud 控制台

如需添加,请前往 ClickHouse Cloud 控制台,打开要通过 PrivateLink 连接的服务,然后进入 设置。点击 Set up private endpoint 打开专用终结点设置。输入在创建 AWS endpoint步骤中获取的 Endpoint ID。点击“Create endpoint”。
如果你想允许来自现有 PrivateLink 连接的访问,请使用现有端点下拉菜单。
如需移除,请前往 ClickHouse Cloud 控制台,找到相应服务,然后进入该服务的 设置,找到要移除的端点,并将其从端点列表中删除。

选项 2:API

你需要将每个应可通过 PrivateLink 访问的实例的 Endpoint ID 添加到允许列表中。 使用创建 AWS Endpoint步骤中的数据设置 ENDPOINT_ID 环境变量。 在运行任何命令之前,请先设置以下环境变量:
将 Endpoint ID 添加到允许列表中:
要从允许列表中删除某个 Endpoint ID:
每个启用了 Private Link 的服务都有一个公共端点和一个专用端点。要通过 Private Link 进行连接,您需要使用专用端点,即 获取端点“Service name” 中的 privateDnsHostnameAPI 或 DNS Name控制台。

获取私有 DNS 主机名

选项 1:ClickHouse Cloud 控制台
在 ClickHouse Cloud 控制台中,前往 设置。点击 Set up private endpoint 按钮。在打开的弹出面板中,复制 DNS Name。
选项 2:API
运行任何命令前,请先设置以下环境变量:
你可以在步骤中获取 INSTANCE_ID。
输出结果应类似如下:
在此示例中,使用 privateDnsHostname 的主机名值建立的连接会通过 PrivateLink 路由,而使用 endpointServiceId 主机名建立的连接则会经由互联网路由。

故障排查

在大多数情况下,您只需为每个 VPC 创建一个端点服务。该端点可将来自该 VPC 的请求路由到多个 ClickHouse Cloud 服务。 请参阅此处

连接到专用终结点超时

  • 请将安全组 (Security Group) 关联到 VPC 端点。
  • 请检查关联到该端点的安全组 (Security Group) 的 inbound 规则,并确保已放行 ClickHouse 端口。
  • 请检查关联到用于连通性测试的 VM 的安全组 (Security Group) 的 outbound 规则,并确保允许连接到 ClickHouse 端口。

私有主机名:找不到主机地址

  • 请检查您的 DNS 配置

连接被对端重置

  • 很可能是因为未将 Endpoint ID 添加到服务的允许列表中,请参阅此步骤

检查端点过滤器

在运行任何命令之前,请先设置以下环境变量:
您可以从步骤中获取 INSTANCE_ID。

连接到远程数据库

假设你想在 ClickHouse Cloud 中使用 MySQL 或 PostgreSQL 表函数,并连接到托管在 Amazon Web Services (AWS) VPC 中的数据库。AWS PrivateLink 不能用于安全地建立此连接。PrivateLink 是一种单向连接。它允许你的内部网络或 Amazon VPC 安全地连接到 ClickHouse Cloud,但不允许 ClickHouse Cloud 连接到你的内部网络。 根据 AWS PrivateLink 文档:
当你采用客户端/服务器架构,并希望允许一个或多个消费者 VPC 单向访问服务提供商 VPC 中的特定服务或一组实例时,请使用 AWS PrivateLink。只有消费者 VPC 中的客户端才能发起到服务提供商 VPC 中服务的连接。
为此,请配置你的 AWS 安全组 (Security Group) ,允许来自 ClickHouse Cloud 的连接访问你的内部/私有数据库服务。请查看 ClickHouse Cloud 各区域的默认 egress IP 地址 以及 可用的静态 IP 地址。
最后修改于 2026年6月10日