Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

ClickPipes 的 Confluent Cloud 私有连接

概述

本指南介绍如何通过私有网络将 ClickPipes 连接到现有的 Confluent Cloud Kafka 集群。

以下情况适用本指南:

  • 使用 AWS PrivateLink 或 GCP Private Service Connect (PSC) 的 Confluent Cloud Dedicated 集群
  • 使用 AWS PrivateLink 或 GCP Private Service Connect (PSC) 的 Confluent Cloud 无服务器 集群

本指南假定 Confluent Cloud Kafka 集群、topic 和 Kafka 凭据已存在。 重点介绍私有连接以及 ClickPipes 反向专用终结点 (RPE) 。

工作原理

Kafka 客户端会先连接到引导主机名,拉取元数据,然后再连接到由 Confluent Cloud 通告的 broker 主机名。 对于 Confluent Cloud 的私网连接,这些主机名必须能够在 ClickPipes 网络内解析到由 ClickPipes 创建的专用终结点。

ClickPipes 使用:

  • 反向专用终结点来建立云提供商的私网连接。
  • 在该 RPE 上配置自定义私有 DNS 映射,使 Confluent 的引导主机名和 broker 主机名都能通过私网解析。
  • 在 ClickPipe 中将 Confluent Cloud Kafka 引导端点用作 broker 地址。

要求

  • 一个你将用于创建 Kafka ClickPipe 的 ClickHouse Cloud 服务。
  • 一个位于与你希望通过私网连接的目标相同云和区域中的 Confluent Cloud Kafka 集群。
  • ClickPipes 可使用的 Kafka API key 或服务账号凭据。
  • 对于 AWS PrivateLink,ClickPipes 自定义私有 DNS 目前处于私有预览;如果你的服务尚未启用该功能,请联系 ClickHouse 支持团队。

Dedicated 集群

本节适用于通过 Confluent 私网连接的 Confluent Cloud Dedicated 集群。

收集 Confluent Cloud 网络详细信息

从与您的 Dedicated 集群关联的 Confluent Cloud 网络中,收集以下信息:

  • 私有 DNS 域名,下文以 {dns_domain} 表示。
  • Confluent 网络使用的云提供商可用区。
  • 对于 AWS,Confluent PrivateLink 端点服务名称。
  • 对于 GCP,每个 Confluent 网络可用区对应的 PSC 服务附件。

这些可用区值是 ClickPipes 必须解析的 DNS 名称的一部分。 对于 AWS,它们是可用区 ID,例如 use1-az1。 对于 GCP,它们是可用区,例如 us-central1-a

在 Confluent Cloud 中为 ClickPipes 授权

在 Confluent Cloud 中为 ClickPipes 消费者身份添加一条 PrivateLink 或 PSC 访问项:

  • AWS:允许 ClickPipes AWS 账户 ID 072088201116
  • GCP:允许 ClickPipes GCP 项目 clickpipes-production

ClickPipes RPE 连接到 Confluent Cloud 私网之前,必须先完成此授权。

创建 ClickPipes RPE

通过 OpenAPI 或 Terraform 创建 RPE。

使用 OpenAPI 时,请在创建请求中指定 customPrivateDnsMappings。 如果你使用更新操作更新现有 RPE, 请注意,customPrivateDnsMappings 是一个会被整体替换的列表。

AWS Dedicated

创建一个指向 Confluent Cloud PrivateLink endpoint service 的 VPC_ENDPOINT_SERVICE RPE。

将以下所有自定义私有 DNS 映射添加到同一个 RPE:

  • *.{dns_domain}
  • 针对每个 Confluent 网络可用区,添加 *.{zone}.{dns_domain}

OpenAPI 请求体示例:

{
  "description": "Confluent Cloud Dedicated AWS PrivateLink",
  "type": "VPC_ENDPOINT_SERVICE",
  "vpcEndpointServiceName": "com.amazonaws.vpce.us-east-1.vpce-svc-0123456789abcdef0",
  "customPrivateDnsMappings": [
    {
      "privateDnsName": "*.abcde12345.us-east-1.aws.confluent.cloud"
    },
    {
      "privateDnsName": "*.use1-az1.abcde12345.us-east-1.aws.confluent.cloud"
    },
    {
      "privateDnsName": "*.use1-az2.abcde12345.us-east-1.aws.confluent.cloud"
    },
    {
      "privateDnsName": "*.use1-az3.abcde12345.us-east-1.aws.confluent.cloud"
    }
  ]
}

GCP Dedicated

为 Confluent Cloud 的每个可用区创建一个 GCP_PSC_SERVICE_ATTACHMENT RPE。 每个 RPE 都指向该可用区的 PSC 服务附件。

*.{zone}.{dns_domain} 添加到对应可用区的 RPE 中。 仅将 *.{dns_domain} 添加到其中一个 RPE 中。

首个可用区的 OpenAPI 请求体示例:

{
  "description": "Confluent Cloud Dedicated PSC us-central1-a",
  "type": "GCP_PSC_SERVICE_ATTACHMENT",
  "gcpServiceAttachment": "projects/confluent-prod/regions/us-central1/serviceAttachments/confluent-us-central1-a",
  "customPrivateDnsMappings": [
    {
      "privateDnsName": "*.us-central1-a.abcde12345.us-central1.gcp.confluent.cloud"
    },
    {
      "privateDnsName": "*.abcde12345.us-central1.gcp.confluent.cloud"
    }
  ]
}

additional-zone OpenAPI 请求体示例:

{
  "description": "Confluent Cloud Dedicated PSC us-central1-b",
  "type": "GCP_PSC_SERVICE_ATTACHMENT",
  "gcpServiceAttachment": "projects/confluent-prod/regions/us-central1/serviceAttachments/confluent-us-central1-b",
  "customPrivateDnsMappings": [
    {
      "privateDnsName": "*.us-central1-b.abcde12345.us-central1.gcp.confluent.cloud"
    }
  ]
}

无服务器集群

如果您使用的是采用 Confluent 私网入口网关和接入点的 Confluent Cloud 无服务器集群,请参阅本节。

创建 Confluent 入口私网连接网关

在 Confluent Cloud 中,为与 Confluent Kafka 集群位于同一云平台和区域的环境创建私网入口网关:

  • AWS:创建入口 PrivateLink 网关。
  • GCP:创建入口 Private Service Connect 网关。

记录 ClickPipes 必须连接的网关目标:

  • AWS:网关的 VPC endpoint service 名称。
  • GCP:网关的 PSC 服务附件。

创建 ClickPipes RPE

为 Confluent 入口网关创建一个 ClickPipes RPE。

对于 AWS,请创建一个 VPC_ENDPOINT_SERVICE RPE:

{
  "description": "Confluent Cloud ingress AWS PrivateLink",
  "type": "VPC_ENDPOINT_SERVICE",
  "vpcEndpointServiceName": "com.amazonaws.vpce.us-east-1.vpce-svc-0123456789abcdef0"
}

对于 GCP,请创建一个 GCP_PSC_SERVICE_ATTACHMENT RPE:

{
  "description": "Confluent Cloud ingress PSC",
  "type": "GCP_PSC_SERVICE_ATTACHMENT",
  "gcpServiceAttachment": "projects/confluent-prod/regions/us-central1/serviceAttachments/confluent-ingress"
}

等待 RPE 响应中返回 endpointId。 创建 Confluent 访问点时需要使用此 ID。

创建 Confluent 访问点

为 ClickPipes 端点创建一个 Confluent Cloud 入口访问点:

  • AWS:使用 ClickPipes RPE endpointId 作为 VPC 端点 ID。
  • GCP:使用 ClickPipes RPE endpointId 作为 PSC 连接 ID。

创建访问点后,收集以下信息:

  • 访问点的 DNS 域名,下文显示为 {access_point_dns_domain}
  • 该访问点的 bootstrap 端点。

为 RPE 打补丁以添加自定义 DNS 映射

使用以下两个自定义私网 DNS 映射为 ClickPipes RPE 打补丁:

  • *.{region}.{cloud}.accesspoint.glb.confluent.cloud
  • *.{access_point_dns_domain}

OpenAPI 更新请求体示例:

{
  "customPrivateDnsMappings": [
    {
      "privateDnsName": "*.us-east-1.aws.accesspoint.glb.confluent.cloud"
    },
    {
      "privateDnsName": "*.abcd1234.us-east-1.aws.confluent.cloud"
    }
  ]
}

Terraform 设置

使用 Terraform 时,请使用:

ClickPipes Terraform 模块还提供了完整的 Confluent 示例:

请沿用本指南中的相同 DNS 映射模式。 在 Terraform 中,字段名使用 snake_case,例如 vpc_endpoint_service_namegcp_service_attachmentprivate_dns_name

创建 Kafka ClickPipe

在 RPE 准备就绪后:

  1. 创建或编辑 Kafka ClickPipe。
  2. 使用 Confluent Cloud 的引导端点作为 broker 地址,不要包含 SASL_SSL:// 前缀。
  3. 选择为 Confluent Cloud 私有连接创建的 RPE。
  4. 使用 PLAIN 身份验证,并填写 Confluent Cloud Kafka API key 和 secret。
  5. 像平常一样配置 topic、消费者组、数据 format 和目标表。

如果你通过私有网络使用 Confluent Schema Registry,请在 ClickPipe 中配置 Schema Registry URL,并确保其主机名通过同一套 RPE 自定义 private DNS 设置解析。 更多详细信息,请参阅 Kafka ClickPipe 的 Schema Registry

故障排查

  • 如果 RPE 仍处于 pending 状态,请检查 Confluent Cloud 的私网授权,并在 Confluent Cloud 中接受或完成该连接。
  • 如果 ClickPipe 连通性检查失败,请检查 Confluent Cloud 返回的每个 bootstrap 和 broker 主机名是否都与某条自定义私有 DNS 映射匹配。
  • 如果你修补自定义 DNS 映射,请包含完整的目标列表。更新会替换现有列表。
  • 如果某个 DNS 映射因重复而被拒绝,请检查同一 ClickHouse 服务中的所有 RPE,确认是否存在重叠的精确名称或通配符名称。
Navigation