Managed Service for Apache Kafka 是一项 Google Cloud 服务,可帮助您运行安全且 可伸缩的开源 Apache Kafka 集群。本页概述了该服务为您自动执行和简化的操作。如需详细了解 Apache Kafka,请参阅 Apache Kafka 网站。
简单调整大小和伸缩
创建 Managed Service for Apache Kafka 集群时,您可以指定集群的总 vCPU 数量和内存。该服务会根据 vCPU 数量自动预配一些代理。
为了满足客户的需求,您可以监控资源利用率,并在需要时通过更新 vCPU 数量和内存来扩缩集群。扩容集群可能会导致预配更多代理。如果增加集群大小需要新代理,该服务可以自动在代理之间重新平衡分区。
如需了解如何选择集群大小,请参阅 规划 Kafka 集群的大小。
存储管理
Managed Service for Apache Kafka 使用 分层存储。 分层存储结合了两个存储层:
- 有限数量的快速 本地存储空间,以 预配的磁盘形式附加到代理。
- 实际上无限的 远程存储空间 。远程存储空间更 便宜,无需预配。
分层存储系统可让您存储大量数据,而不会有磁盘空间不足的风险。与仅使用本地存储空间相比,它还可以降低成本。
您有责任为各个主题设置 保留时间,以控制费用或满足数据保留政策。
灵活的网络
该服务可确保集群从任何 VPC 安全访问。这包括从多个 VPC、项目和区域进行访问。
如需为集群配置网络,您可以提供集群可访问的子网集。该服务会在每个子网中为引导服务器和代理预配专用 IP 地址。它还会为每个 IP 地址设置专用 Cloud DNS 和网址。引导服务器具有负载平衡器,因此每个集群都有一个引导网址。这些网址在所有 VPC 中都是相同的,因此客户端配置在不同环境中可以保持一致。
这种级别的灵活性得益于 Private Service Connect (PSC)。为集群分配的每个 IP 地址都需要一个 PSC 端点。端点会自动预配。
保护集群
该服务提供以下集群安全功能:身份验证、授权、加密、修补和资源隔离。它还禁止未经身份验证和未加密的连接和存储。
身份验证
该服务支持两种身份验证方法:简单身份验证和安全层 (SASL) 和双向 TLS (mTLS)。双向 TLS 身份验证适用于 2025 年 6 月 24 日之后创建的集群。与托管集群的所有 连接都使用 SASL 或使用 mTLS 的 客户端证书通过IAM 身份进行身份验证。使用 SASL 时,支持将人员账号、服务账号和联合账号作为正文。
该服务不支持其他协议,包括 SASL/GSSAPI、SASL/SCRAM-SHA-256 和 SASL/SCRAM-SHA-512。该服务也不允许未经身份验证的连接。
授权
该服务采用分层授权方法。IAM 控制集群管理操作,例如创建、更新和删除资源。经过身份验证的正文的授权取决于所使用的方法:
SASL:使用 IAM 的正文通过 Google Cloud IAM 角色绑定或使用 集群上的 Kafka ACL 获得授权。如需了解详情,请参阅配置 SASL 身份验证。
mTLS:使用 mTLS 进行身份验证的正文通过 Kafka ACL 获得授权。如需了解详情,请参阅配置 mTLS 身份验证。
您可以使用 Google Cloud 工具或第三方 Kafka 工具管理 Kafka ACL。 如需详细了解如何配置 IAM 和 Kafka ACL,请参阅 使用 IAM 和 Kafka ACL 进行访问权限控制。
加密
必须进行加密。与集群的所有连接都必须使用 TLS。代理提供的 TLS 证书由 Public Certificate Authority 签名。存储的数据始终经过加密。选择是使用 Google 管理的加密密钥还是 客户管理的加密密钥 (CMEK) 进行静态加密 。
修补
服务团队会跟踪在开源代码中发现的安全漏洞。当服务发现漏洞时,它会自动修补您的集群。
资源隔离
该服务的另一项安全功能是资源隔离。托管 服务会在 租户项目 中部署集群,这些项目位于无法通过公共 IP 地址访问的专用 VPC 中。您的每个项目都有 一个专用租户项目,其中包含一个专用服务代理 账号。这有助于限制授予服务的访问权限范围。
架构注册表
为了简化提供方和使用方之间的协调,Managed Service for Apache Kafka 包含架构注册表 API。该服务提供的注册表充当在应用之间共享的架构的存储库。
该服务实现了 Confluent Schema Registry REST API ,有助于与现有 Kafka 应用集成。支持 Apache Avro 和 Protocol Buffer (Protobuf) 架构格式。不支持 JSON。
Managed Service for Apache Kafka 还提供用于管理架构注册表和架构的管理 API 和工具集。该工具集包括 Google Cloud 控制台、gcloud CLI 和客户端库。
如需详细了解架构注册表,请参阅 架构注册表概览。
使用 Kafka Connect 进行数据集成
Managed Service for Apache Kafka 通过 Kafka Connect 简化了数据集成。Kafka Connect 提供了多个托管在 Connect 集群中的内置连接器插件。这些连接器用于迁移、备份、灾难恢复、高可用性和数据集成。借助这些连接器,您可以将 Managed Service for Apache Kafka 集群连接到各种系统,包括 其他 Kafka 部署和 Google Cloud 服务(如 BigQuery、Cloud Storage 和 Pub/Sub)。 Kafka Connect 提供可伸缩、可靠的数据集成,运营开销更低,并集成了监控和日志记录功能。
如需详细了解 Kafka Connect,请参阅 Kafka Connect 概览。
高可用性集群
该服务的目标是为任务关键型应用提供区域级集群。具体而言,该服务可保护您免受单个可用区或代理故障的影响。
为此,所有集群都以机架感知的三可用区配置进行预配。默认主题配置至少需要三个副本。 机架感知可确保在不同可用区中创建副本。默认的同步副本数下限为 2。这意味着您的集群可以容忍可用区或代理的完全丢失。
当代理因软件、硬件或网络故障而失败时,系统会自动替换该代理。当服务检测到代理故障时,它会自动重启该代理(如有必要,可在其他机器上重启)。代理可用后,Apache Kafka 会将该代理集成到集群中。可用区完全失败可能会导致无法创建新代理。 但是,只要其他两个可用区保持可用,集群就会继续运行。
除了这些特定功能之外,越来越多的内部工具和流程会主动维护服务、Apache Kafka 代码和更新的健康状况。数据和元数据备份在多个级别进行维护,使服务能够从许多人为错误和软件故障中恢复。
该服务不提供针对区域或双可用区故障的保护。对于需要此级别保护的应用,我们建议运行两个单独的区域级集群。您可以使用 Kafka Connect 中的 MirrorMaker 2.0 等工具在两个集群之间同步数据。
适合您管理风格的工具
该服务旨在提供一套完整的工具,以满足您集群管理和问题排查的需求。这包括用于管理、监控和日志记录的工具。
Managed Service for Apache Kafka 以 Google Cloud API 的形式公开。这意味着您可以使用 REST 和 gRPC API 管理集群和集群资源。 这些 API 提供了多个客户端和界面,包括
- 如果您偏好使用基础设施即代码方法,则可以使用 Terraform 提供程序。
- 控制台 Google Cloud 中的界面,用于在浏览器中进行互动式工作。
- gcloud CLI,用于在 Shell 中进行互动式工作。
- Java、Python、Go 和其他语言的客户端库,用于自定义开发和脚本编写。
对于监控和问题排查,该服务会将指标导出到 Cloud Monitoring。部分指标可在服务界面中查看。 Cloud Monitoring 中提供了一整套指标,用于互动式工作、配置提醒以及导出到其他系统。
该服务还会将代理日志导出到 Cloud Logging。这些日志可搜索,可用于创建基于日志的指标和提醒。
升级和补丁
Managed Service for Apache Kafka 集群在 Apache Kafka 3.7.1 版上运行。 该服务会自动修补关键安全漏洞。
对底层基础架构(包括操作系统和编排层)的更新是持续且自动的。代理会通过滚动重启进行更新,不会导致集群停机。
该服务不会自动将代理上运行的 Apache Kafka 代码升级到新的次要版本。
透明的费用
Managed Service for Apache Kafka 的定价模式与您在 Compute Engine 上自行运行 Apache Kafka 时看到的费用类似。您需要为预配的资源(vCPU、RAM 和本地存储空间)以及使用的资源(永久性存储空间和数据传输)付费。与自行设置类似系统相比,Managed Service for Apache Kafka 的永久性存储空间和 vCPU 费用更高。相比之下,Managed Service for Apache Kafka 和自行管理的 Kafka 的数据传输和本地存储空间价格相似。如需详细了解定价,请参阅 Managed Service for Apache Kafka 定价。
兼容性,因为我们运行 Apache Kafka
最后,Managed Service for Apache Kafka 运行的 开源软件与您可能已在 环境中运行的软件相同。您无需更改应用代码即可将其迁移到该服务。
限制
Managed Service for Apache Kafka 具有以下限制:
每个集群在三个可用区中的资源必须相等。不支持单可用区或双可用区 Managed Service for Apache Kafka 集群。
创建集群时,您无法选择可用区。
您无法在集群上配置本地存储空间的容量。
Managed Service for Apache Kafka 在 KRaft 模式下运行。不支持 Zookeeper 模式。
不支持用于指标的 JMX API。
虽然您可以随时使用
read-only更新模式更改代理配置,但这些更改仅在代理重启时生效。重启会定期发生,作为 Google 维护和升级流程的一部分,但没有固定的时间表,也没有手动触发重启的方法。因此,您无法控制这些更改何时生效。read-only配置的示例包括auto.create.topics.enable和background.threads。使用cluster-wide更新模式更新配置(例如message.max.bytes)不需要重启,并且会立即生效。某些代理配置参数由该服务管理,无法更新。这包括
broker.id和存储相关设置,例如remote.log.storage.system.enable。
接下来怎么做?
- 创建 Managed Service for Apache Kafka 集群。
- 使用 Managed Service for Apache Kafka 集群发送和接收消息。
- 为 Managed Service for Apache Kafka 集群生成合成数据。
- 查看 Managed Service for Apache Kafka 限制。
- 了解 Managed Service for Apache Kafka 定价。