Azure Private Link
Azure Private Link is available in the Scale and Enterprise plans. To upgrade, visit the Plans page in the cloud console.
本指南展示了如何使用 Azure Private Link,通过虚拟网络提供与 Azure(包括客户拥有的和微软合作伙伴服务)和 ClickHouse Cloud 之间的私有连接。Azure Private Link 简化了网络架构,确保 Azure 中端点之间的连接安全,消除了数据暴露于公共互联网的风险。

与 AWS 和 GCP 不同,Azure 支持通过 Private Link 的跨区域连接。这使您能够在不同区域的虚拟网络之间建立连接,这些区域中部署了 ClickHouse 服务。
跨区域流量可能会产生额外费用。请查看最新的 Azure 文档。
请按照以下步骤启用 Azure Private Link:
- 获取 Private Link 的 Azure 连接别名
- 在 Azure 中创建一个 Private Endpoint
- 将 Private Endpoint GUID 添加到您的 ClickHouse Cloud 组织中
- 将 Private Endpoint GUID 添加到您的服务允许列表中
- 使用 Private Link 访问您的 ClickHouse Cloud 服务
注意事项
ClickHouse 尝试将您的服务分组,以便重用同一区域内已发布的 Private Link 服务。然而,这种分组并不能得到保证,尤其是在您将服务分布在多个 ClickHouse 组织的情况下。如果您已经为 ClickHouse 组织中的其他服务配置了 Private Link,通常可以跳过大部分步骤,直接进入最后一步:将 Private Endpoint GUID 添加到您的服务允许列表。
在 ClickHouse Terraform Provider 仓库 中找到 Terraform 示例。
获取 Private Link 的 Azure 连接别名
选项 1:ClickHouse Cloud 控制台
在 ClickHouse Cloud 控制台中,打开您希望通过 PrivateLink 连接的服务,然后打开 设置 菜单。点击 设置私有端点 按钮。记下将用于设置 Private Link 的 服务名称
和 DNS 名称
。

记下 服务名称
和 DNS 名称
,下一步将需要这些信息。
选项 2:API
在开始之前,您需要一个 ClickHouse Cloud API 密钥。您可以 创建新密钥 或使用现有密钥。
一旦您有了 API 密钥,在运行任何命令之前设置以下环境变量:
通过按区域、提供者和服务名称过滤获取 ClickHouse 的 INSTANCE_ID
:
获取您的 Azure 连接别名和 Private DNS 主机名:
记下 endpointServiceId
。您将在下一步中使用它。
在 Azure 中创建 Private Endpoint
本节涵盖了通过 Azure Private Link 配置 ClickHouse 的 ClickHouse 特定详细信息。提供了 Azure 特定步骤作为参考,以指导您寻找信息,但这些步骤可能会随时更改,且未得到 Azure 云提供商的通知。请根据您的具体用例考虑 Azure 配置。
请注意,ClickHouse 不负责配置所需的 Azure 私有端点、DNS 记录。
对于与 Azure 配置任务相关的任何问题,请直接联系 Azure 支持。
在本节中,我们将在 Azure 中创建一个 Private Endpoint。您可以使用 Azure 门户或 Terraform。
选项 1:使用 Azure 门户在 Azure 中创建 Private Endpoint
在 Azure 门户中,打开 Private Link Center → Private Endpoints。

通过点击 创建 按钮打开 Private Endpoint 创建对话框。

在下一个屏幕中,指定以下选项:
- 订阅 / 资源组:请为 Private Endpoint 选择 Azure 订阅和资源组。
- 名称:为 Private Endpoint 设置一个名称。
- 区域:选择将通过 Private Link 连接到 ClickHouse Cloud 的已部署 VNet 的区域。
在完成以上步骤后,点击 下一步:资源 按钮。

选择选项 通过资源 ID 或别名连接到 Azure 资源。
对于 资源 ID 或别名,使用您从 获取 Private Link 的 Azure 连接别名 步骤中获取的 endpointServiceId
。
点击 下一步:虚拟网络 按钮。

- 虚拟网络:选择您要使用 Private Link 连接到 ClickHouse Cloud 的 VNet
- 子网:选择将创建 Private Endpoint 的子网
可选:
- 应用程序安全组:您可以将 ASG 附加到 Private Endpoint,并在网络安全组中使用它,以过滤到/从 Private Endpoint 的网络流量。
点击 下一步:DNS 按钮。

点击 下一步:标签 按钮。

可选地,您可以为您的 Private Endpoint 附加标签。
点击 下一步:审查 + 创建 按钮。

最后,点击 创建 按钮。

所创建的 Private Endpoint 的 连接状态 将处于 待处理 状态。一旦您将此 Private Endpoint 添加到服务允许列表中,它将变为 已批准 状态。
打开与 Private Endpoint 关联的网络接口并复制 私有 IPv4 地址(本示例中为 10.0.0.4),您将在下一步中需要该信息。

选项 2:使用 Terraform 在 Azure 中创建 Private Endpoint
使用以下模板通过 Terraform 创建 Private Endpoint:
获取 Private Endpoint resourceGuid
为了使用 Private Link,您需要将 Private Endpoint 连接 GUID 添加到您的服务允许列表中。
Private Endpoint 资源 GUID 仅在 Azure 门户中公开。打开在前一步创建的 Private Endpoint,然后点击 JSON 视图:

在属性下,找到 resourceGuid
字段并复制这个值:

为 Private Link 设置 DNS
您需要创建一个私有 DNS 区域 (${location_code}.privatelink.azure.clickhouse.cloud
) 并将其附加到您的 VNet,以便通过 Private Link 访问资源。
创建私有 DNS 区域
选项 1:使用 Azure 门户
请遵循以下指南 使用 Azure 门户创建 Azure 私有 DNS 区域。
选项 2:使用 Terraform
使用以下 Terraform 模板创建一个私有 DNS 区域:
创建通配符 DNS 记录
创建一个通配符记录,指向您的 Private Endpoint:
选项 1:使用 Azure 门户
- 打开
MyAzureResourceGroup
资源组并选择${region_code}.privatelink.azure.clickhouse.cloud
私有区域。 - 选择 + 记录集。
- 对于名称,输入
*
。 - 对于 IP 地址,输入您为 Private Endpoint 看到的 IP 地址。
- 选择 确定。

选项 2:使用 Terraform
使用以下 Terraform 模板创建一个通配符 DNS 记录:
创建虚拟网络链接
要将私有 DNS 区域链接到虚拟网络,您需要创建一个虚拟网络链接。
选项 1:使用 Azure 门户
请遵循以下指南 将虚拟网络链接到您的私有 DNS 区域。
选项 2:使用 Terraform
配置 DNS 的方法有多种。请根据您的具体用例设置 DNS。
您需要将从 获取 Private Link 的 Azure 连接别名 步骤中获取的 "DNS 名称",指向 Private Endpoint 的 IP 地址。这确保了您的 VPC/网络中的服务/组件能够正确解析。
验证 DNS 设置
xxxxxxxxxx.westus3.privatelink.azure.clickhouse.cloud
域应指向 Private Endpoint IP。(本示例中为 10.0.0.4)。
将 Private Endpoint GUID 添加到您的 ClickHouse Cloud 组织
选项 1:ClickHouse Cloud 控制台
要将端点添加到组织,请继续进行 将 Private Endpoint GUID 添加到您的服务允许列表 步骤。通过 ClickHouse Cloud 控制台将 Private Endpoint GUID
添加到服务允许列表中,会自动将其添加到组织。
要删除端点,打开 组织详情 -> 私有端点,然后点击删除按钮以移除该端点。

选项 2:API
在运行任何命令之前设置以下环境变量:
根据 获取 Private Endpoint resourceGuid
步骤中的数据设置 ENDPOINT_ID
环境变量。
运行以下命令以添加 Private Endpoint:
您还可以运行以下命令以从服务允许列表中移除 Private Endpoint:
在添加或删除 Private Endpoint 后,运行以下命令将其应用到您的组织:
将 Private Endpoint GUID 添加到您的服务允许列表
默认情况下,即使 Private Link 连接已获得批准并建立,ClickHouse Cloud 服务也不会通过 Private Link 连接提供服务。您需要显式地为每个应通过 Private Link 可用的服务添加 Private Endpoint GUID。
选项 1:ClickHouse Cloud 控制台
在 ClickHouse Cloud 控制台中,打开您希望通过 PrivateLink 连接的服务,然后导航到 设置。输入从 前一步骤 获取的 Endpoint ID
。
如果您想允许通过现有的 PrivateLink 连接访问,请使用现有的端点下拉菜单。

选项 2:API
在运行任何命令之前,设置以下环境变量:
对每个应通过 Private Link 可用的服务执行此操作。
运行以下命令以将 Private Endpoint 添加到服务允许列表:
您还可以运行以下命令,从服务允许列表中移除 Private Endpoint:
在将 Private Endpoint 添加或删除至服务允许列表后,运行以下命令,将其应用到您的组织:
使用 Private Link 访问您的 ClickHouse Cloud 服务
每个启用 Private Link 的服务都有公共和私有端点。为了使用 Private Link 连接,您需要使用一个私有端点,该端点将是从 获取 Private Link 的 Azure 连接别名 中获取的 privateDnsHostname
API 或 DNS 名称
控制台。
获取私有 DNS 主机名
选项 1:ClickHouse Cloud 控制台
在 ClickHouse Cloud 控制台中,导航到 设置。点击 设置私有端点 按钮。在打开的飞出窗口中,复制 DNS 名称。

选项 2:API
在运行任何命令之前,设置以下环境变量:
运行以下命令:
您应收到类似以下的响应:
在此示例中,连接到 xxxxxxx.region_code.privatelink.azure.clickhouse.cloud
主机名将路由到 Private Link。同时,xxxxxxx.region_code.azure.clickhouse.cloud
将通过互联网路由。
使用 privateDnsHostname
通过 Private Link 连接到您的 ClickHouse Cloud 服务。
故障排除
测试 DNS 设置
运行以下命令:
其中 "dns name" 是从 获取 Private Link 的 Azure 连接别名 获取的 privateDnsHostname
API 或 DNS 名称
控制台 。
您应收到以下响应:
连接被同伴重置
最有可能的情况是,Private Endpoint GUID 并未添加到服务允许列表中。请重新访问 将 Private Endpoint GUID 添加到服务允许列表 步骤。
私有端点处于待处理状态
最有可能的情况是,Private Endpoint GUID 并未添加到服务允许列表中。请重新访问 将 Private Endpoint GUID 添加到服务允许列表 步骤。
测试连接性
如果您在使用 Private Link 连接时遇到问题,请使用 openssl
检查您的连接性。确保 Private Link 端点状态为 Accepted
。
OpenSSL 应能够连接(在输出中查看 CONNECTED)。预期 errno=104
。
检查私有端点过滤器
在运行任何命令之前设置以下环境变量:
运行以下命令检查私有端点过滤器:
更多信息
有关 Azure Private Link 的更多信息,请访问 azure.microsoft.com/en-us/products/private-link。