为 Managed Service for Apache Kafka 配置网络

客户端可以从项目中的任何 虚拟私有云 (VPC) 网络连接到 Managed Service for Apache Kafka 集群。 Google Cloud

本页介绍了如何在 Managed Service for Apache Kafka 中配置网络,如何启用 Kafka 客户端与集群之间的连接,以及如何启用跨项目连接。

概览

创建集群时,该服务会将其放置在由 Google Cloud管理的 VPC 网络 中。此网络称为租户网络。 每个 Managed Service for Apache Kafka 集群都有自己的隔离租户 网络。如需让客户端应用与集群通信,您需要将 VPC 网络中的子网连接到租户网络。

下图显示了两个 Google Cloud 项目,project-1project-2。Managed Service for Apache Kafka 集群位于 project-1 中。

具有三个已连接子网的 Managed Service for Apache Kafka 集群

以下子网已连接到集群:

  • project-1 中 VPC 网络 vpc-1 内的 subnet-1
  • project-1 中 VPC 网络 vpc-2 内的 subnet-2
  • project-2 中 VPC 网络 vpc-3 内的 subnet-3

将子网连接到集群

首次创建 Managed Service for Apache Kafka 集群时,您必须至少指定一个 子网。之后,您可以 更新集群以 添加或移除子网。

连接的子网可以与集群属于同一 Google Cloud 项目,也可以属于 其他项目。连接的子网必须与集群位于同一区域,但同一 VPC 内任何区域的客户端都可以连接到该子网中的 IP 地址。每个 VPC 网络最多只能有一个子网连接到集群。

如需查看连接到集群的子网,请参阅 查看集群的子网

集群 DNS 条目

将子网连接到集群时,该服务会在该子网网络中为集群的引导地址和 broker 创建 DNS 条目。Kafka 客户端使用引导地址来查找 broker 并建立连接。当引导服务器将客户端重定向到特定 broker 时,它会使用 broker 的网址,而不是 IP 地址。

引导网址和 broker 网址在集群的整个生命周期内都是固定的,但不同集群的网址格式可能不同。如需获取集群的引导地址,请参阅查看集群的引导地址

DNS 名称在所有连接的子网中都是相同的,尽管它们对应于每个子网中的不同 IP 地址。由于 DNS 名称是一致的,因此所有 Kafka 客户端应用都可以使用相同的引导地址。

如需查看连接到 Managed Service for Apache Kafka 的客户端应用的示例,请参阅以下教程:

子网大小调整

向集群添加子网时,该子网必须有足够的 IP 地址可用。每个子网都需要为每个 Kafka broker 提供一个 IP 地址,并为引导地址提供一个 IP 地址。Managed Service for Apache Kafka 的最小集群大小为三个 broker,因此每个子网至少需要四个可用 IP 地址,包括引导地址。

如果您的集群有 45 个以上的 vCPU,则该集群每 15 个 vCPU 有一个 broker。在这种情况下,请按如下方式计算每个子网的最小 IP 地址数:

  1. 将 vCPU 数量除以 15。
  2. 向上舍入到最接近的整数。
  3. 加 1 以考虑引导地址。

例如,一个具有 60 个 vCPU 的集群至少需要 (60/15 + 1) = 5 个可用 IP 地址。

Google 可能会在未来更改 broker 与 vCPU 的比率。为适应未来的任何变化,我们建议您分配的 IP 地址数量是上一步计算出的数量的 3 倍。

规划子网大小时,请根据您预计未来集群扩容的最大大小进行计算。

如果您计划使用 Kafka Connect, 则还需要考虑 Connect 集群的子网要求。如需了解详情,请参阅 工作器子网

以非公开方式使用的公共 IP 范围

您可以将集群连接到使用非 RFC 1918 地址空间的子网。 此类 IP 地址范围称为以非公开方式使用的公共 IP (PUPI) 范围。

连接到 PUPI 子网不需要进行其他配置。PUPI 子网必须使用有效的 IPv4 范围,该范围不得是 禁止使用的 IPv4 子网范围

跨项目连接客户端和集群

如果您在不同的 Google Cloud 项目中有 Kafka 客户端,则可以通过以下方式将它们连接到集群:

以下部分介绍了这些选项。

跨项目连接集群

您可以将其他项目中的子网连接到集群。如需启用跨项目访问,您必须向与集群关联的 Google 代管式服务账号授予权限。对于您希望 Kafka 客户端访问集群的每个项目,服务帐号都必须在该项目上具有 Managed Kafka Service Agent IAM 角色。此角色使集群能够访问 Google Cloud 资源,以便它可以创建网络资源和 DNS 条目。

示例:如果 project-1 包含集群,并且您希望 project-2 中的客户端访问该集群,则向 project-1 的 Managed Kafka 服务帐号授予 project-2 的 Managed Kafka Service Agent 角色。然后 按照 将子网连接到集群中所述,将 project-2 中的子网连接到集群。

如需授予必要的角色,请执行以下步骤:

控制台

  1. 确定您希望 Kafka 客户端访问 Managed Service for Apache Kafka 集群的 Google Cloud 项目。

  2. 对于每个项目,在 Google Cloud 控制台中,转到该项目的 IAM 页面 :

    前往 IAM 页面

  3. 点击 授予访问权限

  4. 新正文 字段中,输入以下内容:

    service-CLUSTER_PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com
    

    CLUSTER_PROJECT_NUMBER 替换为包含 Managed Service for Apache Kafka 集群的项目的项目编号。

  5. 点击添加角色

  6. 搜索角色 字段中,输入 Managed Kafka Service Agent。 服务代理名称会显示在搜索结果中。

  7. 在搜索结果中,选择 Managed Kafka Service Agent

  8. 点击应用

  9. 点击保存

gcloud

  1. 确定您希望 Kafka 客户端访问 Managed Service for Apache Kafka 集群的 Google Cloud 项目。

  2. 对于每个项目,运行 gcloud projects add-iam-policy-binding 命令:

    gcloud projects add-iam-policy-binding CLIENT_PROJECT_ID \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com \
        --role=roles/managedkafka.serviceAgent
    

    替换以下内容:

使用共享 VPC 连接项目

共享 VPC 可让组织将 多个项目中的资源连接到一个公用 VPC 网络。如需将共享 VPC 与 Managed Service for Apache Kafka 搭配使用,请执行以下步骤:

  1. 创建 Managed Service for Apache Kafka 集群。

  2. 预配共享 VPC

  3. 按照上一部分中的说明,向 Managed Kafka 服务帐号授予 共享 VPC 宿主项目中所需的角色。

  4. 将 Managed Service for Apache Kafka 集群连接到共享 VPC 网络中的子网。

共享 VPC 宿主项目或服务项目中的客户端可以连接到集群。

如需了解何时在网络 架构中使用共享 VPC,请参阅 VPC 设计的最佳实践和参考架构

集群的网络架构

本部分详细介绍了 Managed Service for Apache Kafka 中使用的网络架构。

  • Kafka 集群跨越租户网络和一个或多个使用方网络。

  • 在租户网络中,集群具有单个引导 IP 地址和网址。 此引导地址对应于连接到集群中所有 broker 的负载均衡器。每个 broker 也可以单独充当引导服务器,但我们建议您使用引导地址以提高可靠性。

  • 在每个使用方网络中,该服务会为 Private Service Connect引导地址创建一个端点 ,并为每个 broker 创建一个端点。

  • 引导地址的网址在集群连接到的 VPC 网络中是相同的。IP 地址是使用方网络的本地地址。

  • 客户端使用 DNS 名称连接到 Kafka broker。这些名称会自动注册到 Kafka 集群连接到的每个 VPC 网络中。引导地址及其端口号作为集群的属性提供。

  • 客户端使用引导地址来检索 broker 网址。这些网址会解析为每个 VPC 网络的本地 IP 地址。您可以在 Cloud DNS 中找到实际的 broker IP 地址和网址。

下图显示了 Managed Service for Apache Kafka 集群网络的示例架构。

Managed Service for Apache Kafka 网络

  • 在此示例中,集群有三个 broker,并且集群位于租户 VPC 中。

  • Broker 通过默认 Kafka 端口 (9092) 与客户端通信,并具有唯一的 IP 地址。在此示例中,这三个 broker 的 IP 地址分别为 10.128.10.2、10.128.10.3 和 10.128.10.4。

  • 所有三个 broker 都连接到引导负载均衡器。这可确保高可用性和区域容错能力,因为引导地址不限于单个 broker 或可用区。

问题排查

如需了解如何排查网络问题,请参阅 网络错误

接下来怎么做?