跳到主要内容
跳到主要内容

GCP 私有服务连接

私有服务连接

私有服务连接 (PSC) 是 Google Cloud 的网络功能,允许消费者在其虚拟私有云 (VPC) 网络内部私密地访问托管服务。同样,它允许托管服务的生产者在自己的独立 VPC 网络中托管这些服务,并为其消费者提供私有连接。

服务生产者通过创建私有服务连接服务将其应用发布给消费者。服务消费者直接通过这些私有服务连接类型访问这些私有服务连接服务。

私有服务连接概述
信息

默认情况下,即使 PSC 连接已获批准并建立,ClickHouse 服务也不可通过私有服务连接访问;您需要通过完成下面的 步骤 显式将 PSC ID 添加到实例级的允许列表中。

备注

GCP 私有服务连接仅可在 ClickHouse Cloud 生产服务上启用。

不支持跨区域连接。生产者和消费者区域必须相同。然而,您可以通过在私有服务连接 (PSC) 级别启用 全球访问 从 VPC 内的其他区域进行连接。

备注

使用私有服务连接全球访问的重要考虑事项:

  1. 使用全球访问的区域必须属于同一个 VPC。
  2. 全球访问必须在 PSC 级别显式启用(请参阅下面的截图)。
  3. 确保您的防火墙设置不会阻止来自其他区域的 PSC 访问。
  4. 请注意,您可能会产生 GCP 区域间数据传输费用。

该过程分为四个步骤:

  1. 获取 GCP 服务附加组件以进行私有服务连接。
  2. 创建服务端点。
  3. 将端点 ID 添加到 ClickHouse Cloud 组织中。
  4. 将端点 ID 添加到服务的允许列表中。
备注

在下面的示例中,我们将使用:

  • GCP 区域: us-central1
  • GCP 项目(客户 GCP 项目): my-gcp-project
  • 客户 GCP 项目中的 GCP 私有 IP 地址: 10.128.0.2
  • 客户 GCP 项目中的 GCP VPC: default

下面提供代码示例,以展示如何在 ClickHouse Cloud 服务中设置私有服务连接。

开始之前

您需要检索有关您的 ClickHouse Cloud 服务的信息。您可以通过 ClickHouse Cloud 控制台或 ClickHouse API 完成此操作。如果您打算使用 ClickHouse API,请在继续之前设置以下环境变量:

备注
  • 您可以从 ClickHouse 控制台(组织 -> 组织详情)中检索到您的组织 ID。
  • 您可以 创建新密钥 或使用现有密钥。

获取 GCP 服务附加组件和私有服务连接的 DNS 名称

选项 1: ClickHouse Cloud 控制台

在 ClickHouse Cloud 控制台中,打开您希望通过私有服务连接连接的服务,然后打开 设置 菜单。单击 设置私有端点 按钮。记下 服务名称 (endpointServiceId) 和 DNS 名称 (privateDnsHostname)。您将在接下来的步骤中使用它们。

私有端点

选项 2: API

备注

您需要在该区域部署至少一个实例才能执行此步骤。

获取 GCP 服务附加组件和私有服务连接的 DNS 名称:

记下 endpointServiceIdprivateDnsHostname。您将在接下来的步骤中使用它们。

创建服务端点

在本节中,我们将创建一个服务端点。

添加私有服务连接

首先,我们将创建一个私有服务连接。

选项 1: 使用 Google Cloud 控制台

在 Google Cloud 控制台中,导航到 网络服务 -> 私有服务连接

在 Google Cloud 控制台中打开私有服务连接

通过单击 连接端点 按钮打开私有服务连接创建对话框。

  • 目标: 使用 已发布服务
  • 目标服务: 使用从 获取 GCP 服务附加组件以进行私有服务连接 步骤获得的 endpointServiceId
  • 端点名称: 为 PSC 端点名称 设置一个名称。
  • 网络/子网络/IP 地址: 选择要用于连接的网络。您需要为私有服务连接端点创建一个 IP 地址或使用现有的。在我们的示例中,我们预先创建了一个名为 your-ip-address 的地址,并分配了 IP 地址 10.128.0.2
  • 为使端点可从任何区域访问,您可以启用 启用全球访问 复选框。
为私有服务连接启用全球访问

要创建 PSC 端点,请使用 添加端点 按钮。

状态 列将在连接获批准后从 待处理 更改为 已接受

复制 PSC 连接 ID

复制 PSC 连接 ID,我们将在接下来的步骤中将其用作 端点 ID

选项 2: 使用 Terraform

备注

TARGET - 使用从 获取 GCP 服务附加组件以进行私有服务连接 步骤获得的 endpointServiceId

设置 DNS

提供了两种选项,使用 Google Cloud 控制台和使用 gcloud CLI。

选项 1: 使用 Google Cloud 控制台

  • 支持的区域 创建一个私有 DNS 区域。
  • 打开 网络服务 -> Cloud DNS
  • 选择 创建区域
为 PSC 创建 DNS 区域

在区域类型对话框中,设置:

  • 区域类型: 私有
  • 区域名称: 输入适当的区域名称。
  • DNS 名称: 使用 支持的区域 表中您所在区域的 私有 DNS 域 列。
  • 网络: 将 DNS 区域附加到您计划用于通过 PSC 连接到 ClickHouse Cloud 的网络。
私有 DNS 区域类型选择

在私有 DNS 区域中创建 DNS 记录

将其指向在 添加私有服务连接 步骤中创建的 IP 地址。

为 PSC 创建 DNS 记录

选项 2: 使用 gcloud CLI

创建 DNS 区域

创建 DNS 记录

备注

DNS_RECORD - 使用从 获取 GCP 服务附加组件以进行私有服务连接 步骤获得的 privateDnsHostname

选项 3: 使用 Terraform

备注

DNS_NAME - 使用从 获取 GCP 服务附加组件以进行私有服务连接 步骤获得的 privateDnsHostname

验证 DNS 设置

DNS_RECORD - 使用从 获取 GCP 服务附加组件以进行私有服务连接 步骤获得的 privateDnsHostname

将端点 ID 添加到 ClickHouse Cloud 组织

选项 1: ClickHouse Cloud 控制台

要将端点添加到您的组织,请继续进行 将端点 ID 添加到服务的允许列表 步骤。使用 ClickHouse Cloud 控制台将 PSC 连接 ID 添加到服务允许列表会自动将其添加到组织中。

要删除一个端点,请打开 组织详情 -> 私有端点,然后单击删除按钮以移除该端点。

从 ClickHouse Cloud 移除私有端点

选项 2: API

在运行任何命令之前,请设置这些环境变量:

使用 添加私有服务连接 步骤中的 端点 ID 替换下面的 ENDPOINT_ID

要添加一个端点,请运行:

要删除一个端点,请运行:

添加/删除私有端点到组织:

将端点 ID 添加到服务的允许列表

您需要将端点 ID 添加到每个应通过私有服务连接提供的实例的允许列表中。

备注

此步骤无法对开发服务执行。

选项 1: ClickHouse Cloud 控制台

在 ClickHouse Cloud 控制台中,打开您希望通过私有服务连接连接的服务,然后导航到 设置。输入从 添加私有服务连接 步骤中检索到的 端点 ID。单击 创建端点

备注

如果您想允许从现有的私有服务连接访问,请使用现有的端点下拉菜单。

私有端点过滤器

选项 2: API

在运行任何命令之前,请设置这些环境变量:

使用 添加私有服务连接 步骤中的 端点 ID 替换下面的 ENDPOINT_ID

对每个应通过私有服务连接可用的服务执行。

要添加:

要删除:

使用私有服务连接访问实例

每个配置了私有服务连接过滤器的实例有两个端点:公共和私有。要使用私有服务连接进行连接,您需要使用私有端点,请参见从 获取 GCP 服务附加组件以进行私有服务连接 步骤获得的 endpointServiceId

备注

私有 DNS 主机名仅在您的 GCP VPC 内可用。请勿尝试从位于 GCP VPC 外部的机器上解析该 DNS 主机。

获取私有 DNS 主机名

选项 1: ClickHouse Cloud 控制台

在 ClickHouse Cloud 控制台中,导航到 设置。单击 设置私有端点 按钮。在打开的弹出窗口中,复制 DNS 名称

私有端点 DNS 名称

选项 2: API

在此示例中,连接到 xxxxxxx.yy-xxxxN.p.gcp.clickhouse.cloud 主机名将路由到私有服务连接。同时,xxxxxxx.yy-xxxxN.gcp.clickhouse.cloud 将通过互联网路由。

故障排除

测试 DNS 设置

DNS_NAME - 使用从 获取 GCP 服务附加组件以进行私有服务连接 步骤获得的 privateDnsHostname

连接被对方重置

测试连接性

如果您在使用 PSC 链接连接时遇到问题,请使用 openssl 检查连接性。确保私有服务连接端点状态为 已接受

OpenSSL 应该能够进行连接(在输出中查看 CONNECTED)。errno=104 是预期的。

DNS_NAME - 使用从 获取 GCP 服务附加组件以进行私有服务连接 步骤获得的 privateDnsHostname

检查端点过滤器

REST API

连接到远程数据库

假设您正在尝试在 ClickHouse Cloud 中使用 MySQLPostgreSQL 表函数并连接到您在 GCP 托管的数据库。GCP PSC 不能用于安全地启用此连接。PSC 是单向的、单向连接。它允许您的内部网络或 GCP VPC 安全地连接到 ClickHouse Cloud,但不允许 ClickHouse Cloud 连接到您的内部网络。

根据 GCP 私有服务连接文档:

面向服务的设计:生产者服务通过负载均衡器发布,暴露单个 IP 地址给消费者 VPC 网络。访问生产者服务的消费者流量是单向的,只能访问服务 IP 地址,而无法访问整个对等 VPC 网络。

为此,请配置您的 GCP VPC 防火墙规则,允许来自 ClickHouse Cloud 的连接到您的内部/私有数据库服务。查看 ClickHouse Cloud 区域的默认出口 IP 地址,以及 可用的静态 IP 地址

更多信息

有关更详细的信息,请访问 cloud.google.com/vpc/docs/configure-private-service-connect-services.