私有服务连接
GCP PSC is available in the Scale and Enterprise plans. To upgrade, visit the Plans page in the cloud console.
私有服务连接(PSC)是Google Cloud的网络功能,允许消费者在其虚拟私有云(VPC)网络内私密访问托管服务。类似地,它允许托管服务提供商在自己独立的VPC网络中托管这些服务,并为其消费者提供私密连接。
服务提供商通过创建私有服务连接服务,将其应用发布给消费者。服务消费者通过以下任一类型的私有服务连接直接访问这些私有服务连接服务。

默认情况下,即使PSC连接已批准并建立,ClickHouse服务也不可通过私有服务连接访问;您需要通过完成下面的步骤,明确将PSC ID添加到实例级别的允许列表中。
使用私有服务连接全局访问的重要考虑事项:
- 利用全局访问的区域必须属于同一VPC。
- 必须在PSC级别明确启用全局访问(请参阅下面的截图)。
- 确保您的防火墙设置不会阻止来自其他区域的PSC访问。
- 请注意,您可能会产生GCP跨区域数据传输费用。
不支持跨区域连接。生产者和消费者区域必须相同。然而,您可以通过在私有服务连接(PSC)级别启用全球访问从您VPC内的其他地区进行连接。
请完成以下步骤以启用GCP PSC:
- 获取私有服务连接的GCP服务附加。
- 创建服务端点。
- 将“端点ID”添加到ClickHouse Cloud服务中。
- 将“端点ID”添加到ClickHouse服务允许列表中。
注意事项
ClickHouse尝试将您的服务分组,以便在GCP区域内重用相同的发布PSC端点。然而,尤其是在您将服务分布在多个ClickHouse组织之间时,这种分组不能得到保证。 如果您已经为ClickHouse组织中的其他服务配置了PSC,通常可以跳过大部分步骤,因为分组的原因,直接进行最后一步:添加“端点ID”到ClickHouse服务允许列表。
在这里找到Terraform示例。
在开始之前
下面提供了代码示例,以演示如何在ClickHouse Cloud服务中设置私有服务连接。在下面的示例中,我们将使用:
- GCP区域:
us-central1
- GCP项目(客户GCP项目):
my-gcp-project
- 客户GCP项目中的GCP私有IP地址:
10.128.0.2
- 客户GCP项目中的GCP VPC:
default
您需要检索有关您的ClickHouse Cloud服务的信息。您可以通过ClickHouse Cloud控制台或ClickHouse API来完成。如果您打算使用ClickHouse API,请在继续之前设置以下环境变量:
您可以创建一个新的ClickHouse Cloud API密钥或使用现有的密钥。
通过按区域、提供商和服务名称过滤以获取您的ClickHouse INSTANCE_ID
:
- 您可以从ClickHouse控制台(组织 -> 组织详情)中获取您的组织ID。
- 您可以创建一个新的密钥或使用现有的密钥。
获取GCP服务附加和私有服务连接的DNS名称
选项 1:ClickHouse Cloud控制台
在ClickHouse Cloud控制台中,打开您希望通过私有服务连接连接的服务,然后打开设置菜单。点击设置私有端点按钮。记下服务名称(endpointServiceId
)和DNS名称(privateDnsHostname
)。您将在接下来的步骤中使用它们。

选项 2:API
您需要在区域中至少部署一个实例才能执行此步骤。
获取GCP服务附加和私有服务连接的DNS名称:
记下endpointServiceId
和privateDnsHostname
。您将在接下来的步骤中使用它们。
创建服务端点
本节涵盖通过GCP PSC(私有服务连接)配置ClickHouse的ClickHouse特定详细信息。GCP特定步骤仅作为参考,以指导您查看相关内容,但它们可能会随时间而变化,无需GCP云提供商通知。请根据您的特定用例考虑GCP配置。
请注意,ClickHouse不负责配置所需的GCP PSC端点、DNS记录。
有关GCP配置任务的任何问题,请直接联系GCP支持。
在本节中,我们将创建一个服务端点。
添加私有服务连接
首先,我们将创建私有服务连接。
选项 1:使用Google Cloud控制台
在Google Cloud控制台中,导航到网络服务 -> 私有服务连接。

通过点击连接端点按钮打开私有服务连接创建对话框。
- 目标:使用已发布的服务
- 目标服务:使用来自获取GCP服务附加和私有服务连接的DNS名称步骤的
endpointServiceId
API或服务名称
控制台。 - 端点名称:为PSC 端点名称设置一个名称。
- 网络/子网络/IP地址:选择您希望用于连接的网络。您需要创建一个IP地址或使用现有的IP地址作为私有服务连接端点。在我们的示例中,我们预先创建了名称为your-ip-address的地址,并分配了IP地址
10.128.0.2
- 为了使端点在任何区域可用,您可以启用启用全局访问复选框。

要创建PSC端点,请使用添加端点按钮。
状态列将在连接获得批准后从待处理变为已接受。

复制PSC连接ID,我们将在接下来的步骤中将其用作端点ID。
选项 2:使用Terraform
使用来自获取GCP服务附加和私有服务连接的DNS名称步骤的endpointServiceId
API或服务名称
控制台。
设置端点的私有DNS名称
有多种方式来配置DNS。请根据您的特定用例设置DNS。
您需要将“DNS名称”,即来自获取GCP服务附加和私有服务连接的DNS名称步骤中的名称,指向GCP私有服务连接端点IP地址。这确保服务/组件可以在您的VPC/网络内正确解析它。
将端点ID添加到ClickHouse Cloud组织
选项 1:ClickHouse Cloud控制台
要将端点添加到您的组织,请继续到添加“端点ID”到ClickHouse服务允许列表步骤。在ClickHouse Cloud控制台中使用PSC连接ID
将其添加到服务允许列表中,自动将其添加到组织中。
要删除端点,请打开组织详情 -> 私有端点,然后单击删除按钮以移除该端点。

选项 2:API
在运行任何命令之前,请设置以下环境变量:
用来自添加一个私有服务连接步骤的“端点ID”替换下面的ENDPOINT_ID
。
要添加端点,请运行:
要删除端点,请运行:
将私有端点添加/删除到组织:
将“端点ID”添加到ClickHouse服务允许列表
您需要将端点ID添加到每个应通过私有服务连接提供的实例的允许列表中。
选项 1:ClickHouse Cloud控制台
在ClickHouse Cloud控制台中,打开您希望通过私有服务连接连接的服务,然后导航到设置。输入从添加一个私有服务连接步骤中检索到的端点ID
。点击创建端点。
如果您希望允许来自现有私有服务连接的访问,请使用现有端点下拉菜单。

选项 2:API
在运行任何命令之前,请设置以下环境变量:
用来自添加一个私有服务连接步骤的“端点ID”替换下面的ENDPOINT_ID。
对每个应通过私有服务连接提供的服务执行此操作。
要添加:
要删除:
使用私有服务连接访问实例
每个启用了私有链接的服务都有公共和私人端点。要使用私有链接进行连接,您需要使用privateDnsHostname
,该名称来自获取GCP服务附加和私有服务连接的DNS名称。
获取私有DNS主机名
选项 1:ClickHouse Cloud控制台
在ClickHouse Cloud控制台中,导航到设置。点击设置私有端点按钮。在打开的飞出窗口中,复制DNS名称。

选项 2:API
在此示例中,连接到xxxxxxx.yy-xxxxN.p.gcp.clickhouse.cloud
主机名将路由到私有服务连接。同时,xxxxxxx.yy-xxxxN.gcp.clickhouse.cloud
将通过互联网路由。
疑难解答
测试DNS设置
DNS_NAME - 使用来自获取GCP服务附加和私有服务连接的DNS名称步骤中的privateDnsHostname
连接被对等方重置
- 很可能,未将端点ID添加到服务允许列表。请重新访问_添加端点ID到服务允许列表_步骤。
测试连接性
如果您在使用PSC链接时遇到连接问题,请使用openssl
检查您的连接性。确保私有服务连接端点的状态为已接受
:
OpenSSL应该能够连接(请参见输出中的CONNECTED)。errno=104
是预期的。
DNS_NAME - 使用来自获取GCP服务附加和私有服务连接的DNS名称步骤中的privateDnsHostname
检查端点过滤器
REST API
连接到远程数据库
假设您尝试在ClickHouse Cloud中使用MySQL或PostgreSQL表函数,并连接到您在GCP中托管的数据库。GCP PSC无法用来安全地启用此连接。PSC是一种单向的单向连接。它允许您的内部网络或GCP VPC安全地连接到ClickHouse Cloud,但它不允许ClickHouse Cloud连接到您的内部网络。
根据GCP私有服务连接文档:
面向服务的设计:生产者服务通过负载均衡器发布,向消费者VPC网络公开单个IP地址。访问生产者服务的消费者流量是单向的,只能访问服务IP地址,而无法访问整个对等的VPC网络。
为此,请配置您的GCP VPC防火墙规则,以允许ClickHouse Cloud与您的内部/私有数据库服务建立连接。查看ClickHouse Cloud区域的默认出口IP地址,以及可用的静态IP地址。
更多信息
有关更详细的信息,请访问cloud.google.com/vpc/docs/configure-private-service-connect-services。