一般性问题

问:什么是 Amazon MSK?
Amazon Managed Streaming for Apache Kafka (Amazon MSK) 是一种 AWS 流数据服务,可管理 Apache Kafka 基础设施和运营,让开发人员和 DevOps 经理可以轻松地在 AWS 上运行 Apache Kafka 应用程序和 Kafka Connect 连接器,而无需成为运行 Apache Kafka 方面的专家。Amazon MSK 运营、维护和扩展 Apache Kafka 集群,提供开箱即用的企业级安全功能,并具有内置的 AWS 集成,可加速流数据应用程序的开发。首先,您可以将现有 Apache Kafka 工作负载和 Kafka Connect 连接器迁移到 Amazon MSK,或者只需单击几下,您便可以从头开始构建新的工作负载和连接器。集群内流量没有数据传输费用,也不需要承诺或预付款。您只需为使用的资源付费。
 
问:什么是 Apache Kafka?
Apache Kafka 是一个开源、高性能、可容错且可扩展的平台,用于构建实时流数据管道和应用程序。Apache Kafka 是一个流数据存储,它将生成流数据的应用程序(生产者)与从其数据存储中使用流数据的应用程序(使用者)分离到其数据存储中。组织使用 Apache Kafka 作为持续分析和响应流数据的应用程序的数据源。 了解有关 Apache Kafka 的更多信息
 
问:什么是 Kafka Connect?
Kafka Connect 是 Apache Kafka 的开源组件,是连接 Apache Kafka 与数据库、键值存储、搜索索引和文件系统等外部系统的框架。
 
问:什么是流数据?
流数据是由数千台机器、设备、网站和应用程序生成的连续的较小记录或事件流(一个记录或事件通常为几千字节)。流数据包括多种数据,例如客户使用您的移动或 Web 应用程序生成的日志文件、网购数据、游戏内玩家活动、社交网站信息、金融交易大厅、地理空间服务,安全日志、指标,以及来自数据中心内所连接设备或仪器的遥测数据。流数据服务(如 Amazon MSK 和 Amazon Kinesis Data Streams)使您可以轻松地持续收集、处理和提供流数据。 了解有关流数据的更多信息
 
问:Apache Kafka 的主要功能是什么?
Apache Kafka 有三项主要功能:
  • Apache Kafka 以容错的方式存储流数据,在生产者和消费者之间提供缓冲区。它将事件存储为一系列连续的记录,并保留记录的生成顺序。
  • Apache Kafka 允许许多数据生产者(例如网站、物联网 (IoT) 设备、Amazon Elastic Compute Cloud (Amazon EC2) 实例)持续发布流数据并使用 Apache Kafka 主题对这些数据进行分类。多个数据使用者(例如机器学习应用程序、AWS Lambda 函数或微服务)以自己的速率从这些主题中读取,类似于消息队列或企业消息收发系统。
  • 数据使用者以先进先出的方式处理来自 Apache Kafka 主题的数据,从而保留数据的生成顺序。

问:Apache Kafka 的关键概念是什么?
Apache Kafka 将记录存储在主题中。数据生成者将记录写入主题,而使用者从主题中读取记录。Apache Kafka 中的每条记录均包含一个密钥、一个值和一个时间戳,有时还包括标头元数据。Apache Kafka 在称为“代理”的多个节点上对主题进行分区和复制这些分区。Apache Kafka 在一个或多个代理上作为集群运行,代理可以位于多个 AWS 可用区中,以创建高可用性集群。Apache Kafka 依靠 Apache ZooKeeper 来协调集群任务,并且可以维护与 Apache Kafka 集群交互的资源的状态。
 
问:何时应使用 Apache Kafka?
Apache Kafka 支持转换、传输和响应流数据的实时应用程序,还可用于构建可在多个系统或应用程序之间可靠地发送数据的实时流数据管道。
 
问:Amazon MSK 的作用是什么?
Amazon MSK 让您可以轻松启动并在 AWS 中运行 Apache Kafka 的开源版本,具有高可用性和安全性。此外,Amazon MSK 提供与 AWS 服务的集成,而不会产生运行 Apache Kafka 集群的运营开销。通过 Amazon MSK,您可以使用 Apache Kafka 的开源版本,同时该服务可管理 Apache Kafka 集群的设置、预置、AWS 集成和持续维护。

只需在控制台中单击几下,即可创建 Amazon MSK 集群。创建完成后,Amazon MSK 将取代运行状况不佳的代理,自动复制数据以获得高可用性,管理 Apache ZooKeeper 节点,根据需要自动部署硬件补丁,管理与 AWS 服务的集成,通过控制台显示重要指标,并且支持 Apache Kafka 版本升级,因此您可以利用对 Apache Kafka 的开源版本所做的改进。
 
问:Amazon MSK 支持哪些 Apache Kafka 版本?
有关受支持的 Kafka 版本,请参阅 Amazon MSK 文档
 
问:Apache Kafka API 是否与 Amazon MSK 兼容?
是的,Amazon MSK 原生支持所有数据层面和管理 API。
 
问:Amazon MSK 是否支持 Apache Kafka AdminClient?
可以。
 
问:Amazon MSK 是否支持 Schema 注册?
是,Apache Kafka 客户端可以免费使用 AWS Glue 的一项无服务器功能 AWS Glue Schema Registry。访问 Schema Registry 用户文档开启使用并了解更多信息。
 
问:如何开始使用 M7g 集群?
Amazon MSK 现在支持基于 Graviton 3 的 M7g 实例,从 large 到 16xlarge 大小不等,以运行所有 Kafka 工作负载。Graviton 实例具有与 MSK 相同的可用性和耐久性优势,与相应的 M5 实例相比,成本可降低多达 24%。与 MSK 的 M5 实例相比,Graviton 实例的每个实例吞吐量可提高多达 29%,使客户能够使用较少的代理或更小的实例运行 MSK 集群。

MSK 无服务器

问:什么是 MSK 无服务器?
MSK 无服务器是 Amazon MSK 的一种集群类型,它可以帮助您轻松运行 Apache Kafka 集群,无需管理计算和存储容量。使用 MSK 无服务器,您可以轻松运行您的应用程序,而无需预置、配置或优化集群,并且您只需按您流式传输和保留的数据量付费。

问:MSK 无服务器是否在集群中自动均衡分区?
是。MSK 无服务器可以全面管理分区,包括监控和移动分区,甚至跨集群加载分区。

问:MSK 无服务器支持的数据吞吐量是多少?
MSK 无服务器针对每个集群提供高达 200 MBps 的写入容量和 400 MBps 的读取容量。此外,为确保集群中所有分区都有足够的吞吐量可用,MSK 无服务器为每个分区分配了高达 5 MBps 的即时写入容量和 10 MBps 的即时读取容量。

问:MSK 无服务器提供哪些安全功能?
MSK 无服务器使用通过 AWS Key Management Service (KMS) 发出的服务托管式密钥加密传输中的所有流量和所有静态数据。客户端通过使用 AWS PrivateLink 的私有连接连接到 MSK 无服务器,不会将您的流量暴露给公有网络。此外,MSK 无服务器提供 IAM 访问控制,您可以使用它来管理对 Apache Kafka 资源(如主题)的客户端身份验证和客户端授权。

问:生产者和使用者如何访问我的 MSK 无服务器集群?
在创建 MSK 无服务器集群时,您提供一个或多个托管该集群客户端的 Amazon Virtual Private Cloud (VPC) 的子网。在这些 VPC 中托管的客户端将能够使用其代理引导字符串连接到 MSK 无服务器集群。

问:MSK 无服务器可用的区域有哪些?
请参阅 MSK 定价页面,了解最新的区域可用性。

问:MSK 无服务器支持哪些身份验证类型?
MSK 无服务器目前支持 AWS IAM 进行客户端身份验证和授权。您的客户端可以承担 AWS IAM 角色进行身份验证,并且您可以使用关联的 IAM 策略实施访问控制。

问:如何处理 MSK 无服务器集群中的数据?
您可以使用任何与 Apache Kafka 兼容的工具来处理 MSK 无服务器集群主题中的数据。MSK 无服务器与适用于 Apache Flink 的亚马逊托管服务集成,用于有状态的流处理;并与 AWS Lambda 集成,用于事件处理。您还可以使用 Kafka Connect 接收器连接器将数据发送到任何所需的目标。

问:MSK 无服务器如何确保高可用性?
创建分区时,MSK 无服务器会创建分区的 2 个副本,并将它们放置在不同的可用区中。此外,MSK 无服务器会自动检测和恢复失败的后端资源,以保持高可用性。

数据生产和使用

问:是否可以使用 Apache Kafka API 在 Apache Kafka 中存取数据?
可以,Amazon MSK 支持原生 Apache Kafka 生产者和使用者 API。当客户开始使用 Amazon MSK 中的集群时,您的应用程序代码无需更改。

问:是否可以将 Apache Kafka Connect、Apache Kafka Streams 或 Apache Kafka 的任何其他生态系统组件与 Amazon MSK 一起使用?
是的,您可以使用任何利用 Apache Kafka 生产者和使用者 API 以及 Apache Kafka Admin Client 的组件。将 .jar 文件上载到 Apache Kafka 集群的工具目前与 Amazon MSK 不兼容,其中包括 Confluent Control Center、Confluent Auto Data Balancer 和 Uber uReplicator

迁移到 Amazon MSK

问:是否可以将现有 Apache Kafka 集群内的数据迁移到 Amazon MSK?
是的,您可以使用第三方工具或 Apache Kafka 支持的开源工具(如 MirrorMaker)将集群中的数据复制到 Amazon MSK 集群。以下是可帮助您完成迁移的 Amazon MSK 迁移实验室

版本升级

问:是否支持 Apache Kafka 版本升级?
是的,Amazon MSK 针对预置的集群支持完全托管式就地 Apache Kafka 版本升级。要了解有关升级 Apache Kafka 版本和高可用性最佳实践的更多信息,请参阅版本升级文档

集群

问:如何创建第一个 Amazon MSK 集群?
只需在 AWS 管理控制台中单击几下或使用 AWS 开发工具包,即可创建第一个集群。首先,在 Amazon MSK 控制台中,选择要在其中创建 Amazon MSK 集群的 AWS 区域。选择集群的名称、要在其中运行集群的 Virtual Private Cloud (VPC) 以及每个可用区的子网。如果您正在创建预置的集群,您还可以选择代理实例类型、每个可用区的代理数量以及每个代理的存储。
 
问:集群中有哪些资源?
预置的集群都包含代理实例、预置的存储和抽象的 Apache ZooKeeper 节点。无服务器集群本身就是一种资源,它们抽离了所有基础资源。
 
问:我可以在 Amazon MSK 集群中预置哪些类型的代理实例?
对于预置的集群,您可以选择 EC2 T3.small 或 EC2 M7g 和 M5 实例系列中的实例。对于无服务器集群,代理是完全抽象的。
 
问:Amazon MSK 是否提供预留实例定价?
目前不可以。
 
问:是否需要预置代理启动卷和为其支付费用?
不需要,您预置的每个代理都包括由 Amazon MSK 服务托管的启动卷存储。
 
问:当我创建 Apache Kafka 集群时,基础资源(如 Amazon EC2 实例)是否会显示在我的 EC2 控制台中?
某些资源将显示在您的 Amazon EC2 账户中,如弹性网络接口 (ENI)。其他 Amazon MSK 资源不会显示在您的 EC2 账户中,因为这些资源由 Amazon MSK 服务托管。
 
问:我需要在 Amazon MSK 集群中预置哪些资源?
对于预置的集群,您需要为您创建的每个集群预置代理实例和代理存储。您可以选择为存储卷预置存储吞吐量,这可以用于无缝扩展输入/输出,而无需预置其他代理。您不需要预置 Apache ZooKeeper 节点,因为您创建的每个集群都免费包含这些资源。对于无服务器集群,您只需创建一个作为资源的集群。
 
问:集群的原定设置代理配置是什么?
除非另有说明,否则 Amazon MSK 使用 Apache Kafka 开源版本指定的原定设置。 此处记录了这两种集群类型的原定设置。
问:是否可以跨可用区不平均预置代理(例如 us-east-1a 中 3 个、us-east-1b 中 2 个、us-east-1c 中 1 个)?
不可以,Amazon MSK 强制实施在集群中跨可用区平均分配代理数量的最佳实践。

问:数据复制在 Amazon MSK 中的工作原理是什么?
Amazon MSK 使用 Apache Kafka 的主从复制在代理之间复制数据。通过 Amazon MSK,您可以使用多可用区复制功能轻松部署集群,也可以选择按主题使用自定义复制策略。默认情况下,对于每个复制选项,将使用指定的复制策略部署和隔离主从代理。例如,如果选择三个可用区代理复制策略,其中每个可用区集群有一个代理,则 Amazon MSK 将创建一个包含三个代理的集群(一个区域的三个可用区中分别有一个代理),默认情况下,主题复制因子也将为三个,除非您选择覆盖主题复制因子。

问:我能否更改默认代理配置或将集群配置上传到 Amazon MSK?
能,Amazon MSK 允许您创建自定义配置并将其应用于新集群和现有集群。有关自定义配置的更多信息,请参阅配置文档

问:我能够自定义哪些配置属性?
您可以自定义的配置属性记录在此处

问:新主题的默认配置是什么?
除非此处另有说明,否则 Amazon MSK 将使用 Apache Kafka 的默认配置。

主题

问:如何创建主题?
创建 Apache Kafka 集群后,您可以使用 Apache Kafka API 创建主题。使用 Apache Kafka API 执行所有主题和分区级别操作和配置。下面的命令是使用 Apache Kafka API 创建主题的示例以及可用于您的集群的配置详细信息:

bin/kafka-topics.sh --create —bootstrap-server <BootstrapBrokerString> --replication-factor 3 --partitions 1 --topic TopicName

联网

问:Amazon MSK 是否在 Amazon VPC 中运行?
是的,Amazon MSK 始终在由 Amazon MSK 服务托管的 Amazon VPC 中运行。Amazon MSK 资源将可用于您在设置集群时选择的自己的 Amazon VPC、子网和安全组。VPC 中的 IP 地址会通过弹性网络接口 (ENI) 挂载到您的 Amazon MSK 资源,并且在默认情况下,所有网络流量均保持在 AWS 网络内,且无法通过互联网访问。

问:VPC 中的客户端如何访问 Amazon MSK 集群中的代理?
VPC 中的客户端可通过您账户中显示的 ENI 访问集群中的代理。ENI 上的安全组将决定您的代理上允许的传入和传出流量的来源和类型。

问:是否可以通过公有网络连接到我的集群?
是的,Amazon MSK 提供一种选项,可用于通过互联网安全地连接到运行 Apache Kafka 2.6.0 或更高版本的 Amazon MSK 集群的代理。通过启用公开访问,私有 Amazon Virtual Private Cloud (VPC) 外部的授权客户端可以将加密数据传入和传出特定的 Amazon MSK 集群。您可以在集群创建后免费为 MSK 集群启用公开访问,集群入口和出口将按标准 AWS 数据传输成本计费。要了解有关开启公开访问的更多信息,请参阅公开访问文档

问:我的客户端和 Amazon MSK 集群之间的连接是否是私有的?
默认情况下,从 Amazon MSK 集群生成和使用数据的唯一方式是通过 VPC 中的客户端与 Amazon MSK 集群之间的私有连接。但是,如果您为 Amazon MSK 集群开启公开访问并使用公有引导代理字符串连接到 MSK 集群,连接将不再视为私有,即使经过了身份验证、授权和加密。我们建议您将集群的安全组配置为具有入站 TCP 规则,允许从您信任的 IP 地址进行公开访问,并在开启公开访问时尽可能限制这些规则。

连接到 VPC

问:如何通过互联网连接到我的 Amazon MSK 集群?
最简单的方法是通过互联网开启至运行 Apache Kafka 2.6.0 或更高版本的 MSK 集群代理的公有连接。出于安全原因,您不能在创建 MSK 集群时开启公共访问。但是,您可以更新现有集群使其可公开访问。您还可以创建新的集群,然后将其更新为可公开访问。要了解有关开启公开访问的更多信息,请参阅公开访问文档

问:如何从 AWS 网络内部但在集群的 Amazon VPC 外部连接到我的 Amazon MSK 集群?
您可以通过为运行 Apache Kafka 2.7.1 或更高版本的 MSK 集群开启多 VPC 私有连接,从与 MSK 集群不同的任何 VPC 或 AWS 账户连接您的 MSK 集群。您只能在为任何支持的身份验证方案(IAM 身份验证、SASL SCRAM 和 mTLS 身份验证)创建集群后开启私有连接。您应将客户端配置为使用 Amazon MSK 托管 VPC 连接私有连接到集群,该连接使用 AWS PrivateLink 技术启用私有连接。要了解有关设置私有连接的更多信息,请参阅从 AWS 文档中访问。

加密

问:我能否加密我的 Amazon MSK 集群中的数据?
能,Amazon MSK 使用 Amazon Elastic Block Store (Amazon EBS) 服务器端加密AWS Key Management Service (AWS KMS) 密钥来加密存储卷。

问:在 Amazon MSK 集群内的代理之间,数据是否进行传输中加密?
是,根据原定设置,新集群已通过代理间通信的 TLS 启用了传输中加密。对于预置的集群,您可以在创建集群时选择不使用传输中加密。

问:我的 Apache Kafka 客户端和 Amazon MSK 服务之间是否在传输中加密数据?
是的,根据原定设置,将传输中加密设置为 TLS 仅适用于通过 CLI 或 AWS 管理控制台创建的集群。客户端需要其他配置才能使用 TLS 加密与集群通信。对于预置的集群,您可以通过选择 TLS/纯文本或纯文本设置来更改加密原定设置。阅读有关 MSK 加密的更多信息。

问:当数据在 Amazon MSK 集群中的代理和 Apache ZooKeeper 节点之间移动时,是否可以在传输中加密?
可以,运行 Apache Kafka 版本 2.5.1 或更高版本的 Amazon MSK 集群支持在 Kafka 代理与 ZooKeeper 节点之间进行 TLS 传输中加密。

访问管理

问:如何控制集群身份验证和 Apache Kafka API 授权?
对于无服务器集群,您可以使用 IAM 访问控制进行身份验证和授权。对于预置的集群,您可以从以下三种访问控制选项中选择使用:1) 适用于 AuthN/Z 的 AWS Identity and Access Management (IAM) 访问控制(推荐),2) 适用于 AuthN 的 TLS 证书身份验证 (CA) 和适用于 AuthZ 的访问控制列表,以及 3) 适用于 AuthN 的 SASL/SCRAM 和适用于 AuthZ 的访问控制列表。Amazon MSK 推荐使用 IAM 访问控制。它最容易使用,而且它原定设置为最低权限访问,是最安全的选项。

问:授权在 Amazon MSK 中的工作原理是什么?
如果您使用 IAM 访问控制,Amazon MSK 会使用您编写的策略及其自己的授权方对操作进行授权。若您使用 TLS 证书身份验证或 SASL/SCRAM,Apache Kafka 则会使用访问控制列表 (ACL) 进行授权。要启用 ACL,您必须启用使用 TLS 证书或 SASL/SCRAM 的客户端身份验证。

问:我如何同时对客户端进行身份验证和授权?
如果您使用 IAM 访问控制,Amazon MSK 将为您进行身份验证和授权,而不需要任何额外设置。如果使用的是 TLS 身份验证,您可以使用客户端 TLS 证书的 Dname 作为 ACL 的委托人对客户端请求进行授权。如果使用的是 SASL/SCRAM,您可以使用用户名作为 ACL 的委托人对客户端请求进行授权。

问:如何控制服务 API 操作?
您可以使用 AWS Identity and Access Management (IAM) 控制服务 API。

问:我可以为现有集群启用 IAM 访问控制吗?
是的,您可以从 AWS 控制台或通过更新安全 API 为现有集群启用 IAM 访问控制。

问:我可以在 Amazon MSK 外部使用 IAM 访问控制吗?
不可以,IAM 访问控制仅适用于 Amazon MSK 集群。

问:如何向与 Amazon MSK 不同的 AWS 账户中的 Kafka 客户端提供跨账户访问权限,以便私有连接到我的 Amazon MSK 集群?
您可以将集群策略附加到 Amazon MSK 集群,为您的跨账户 Kafka 客户端提供设置与 Amazon MSK 集群的私有连接的权限。使用 IAM 客户端身份验证时,您还可以使用集群策略来精细定义连接客户端的 Kafka 数据面板权限。要了解有关集群策略的更多信息,请参阅集群策略文档。

监控、指标、日志记录和标记

问:如何监控集群或主题的性能?
您可以通过 Amazon MSK 控制台、Amazon CloudWatch 控制台或 JMX 监控集群的性能,并使用带有 Prometheus(一种开源监控解决方案)的开放监控功能来监控主机指标。

问:不同 CloudWatch 监控级别的成本是多少?
使用 Amazon CloudWatch 监控集群的成本取决于监控级别和您的 Apache Kafka 集群大小。Amazon CloudWatch 按每月每个指标收费并且包含免费套餐;请参阅 Amazon CloudWatch 定价了解更多信息。有关每个监控级别公开的指标数量的详细信息,请参阅 Amazon MSK 监控文档

问:哪些监控工具与带有 Prometheus 的开放监控功能兼容?
设计用于从 Prometheus 导出器读取数据的工具可与开放监控功能兼容,例如: DatadogLensesNew RelicSumo Logic 或 Prometheus 服务器。有关开放监控功能的详细信息,请参阅 Amazon MSK 开放监控功能文档。

问:如何监控客户端的运行状况和性能?
您可以使用您正在使用的 Apache Kafka 版本支持的任何客户端监控。

问:我能否标记 Amazon MSK 资源?
可以,您可以通过 AWS Command Line Interface (AWS CLI) 或控制台标记 Amazon MSK 集群。

问:如何监控使用器延迟情况?
主题级使用器延迟指标作为 Amazon MSK 对所有集群发布到 Amazon CloudWatch 的原定设置指标集的一部分提供。获取这些指标无需进行额外的设置。对于预置的集群,您还可以获取分区级使用器延迟指标(分区维度)。为此,请启用集群上的增强型监控 (PER_PARTITION_PER_TOPIC)。或者,您可以在集群上启用开放监控功能,并使用 Prometheus 服务器从集群中的代理中获取分区级指标。使用器延迟指标与其他的 Kafka 指标一样,在端口 11001 提供。

问:将使用器延迟指标发布到 Amazon CloudWatch 的费用是多少?
主题级指标包含在原定设置的 Amazon MSK 指标集中,后者是免费的。分区级指标根据 Amazon CloudWatch 定价进行收费。

问:我该如何访问 Apache Kafka 代理日志?
您可以对预置的集群启用代理日志传送。您可以将代理日志传送到 Amazon CloudWatch Logs、Amazon Simple Storage Service (S3) 和 Amazon Kinesis Data Firehose。Kinesis Data Firehose 支持多种传送目的地,包括 Amazon OpenSearch Service。如需了解如何启用此功能,请参阅 Amazon MSK 日志记录文档。如需了解有关定价的信息,请参阅 CloudWatch LogsKinesis Data Firehose 定价页面。

问:代理日志的日志记录级别是什么?
Amazon MSK 为一个预置集群内的所有代理提供 INFO(信息)级日志。

问:我该如何访问 Apache ZooKeeper 日志?
您可以通过发出支持工单请求获取 Apache ZooKeeper 日志。

问:我可以记录 Apache Kafka 资源 API 使用日志吗,像创建主题那样?
可以,如果您使用 IAM 访问控制,Apache Kafka 资源 API 的使用日志会被记录到 AWS CloudTrail。

Apache ZooKeeper

问:什么是 Apache ZooKeeper?
根据 https://zookeeper.apache.org/:“Apache ZooKeeper 是一种集中式服务,用于维护配置信息、命名、提供分布式同步和组服务。分布式应用程序会以某种形式使用所有这些类型的服务”,包括 Apache Kafka。

问:Amazon MSK 是否使用 Apache ZooKeeper?
是的,Amazon MSK 使用 Apache ZooKeeper 并在每个集群中将 Apache ZooKeeper 作为 Amazon MSK 服务的一部分进行管理。每个集群均包含 Apache ZooKeeper 节点,无需额外费用。

集成

问:Amazon MSK 与哪些 AWS 服务集成?
Amazon MSK 与以下服务集成:

 

Amazon MSK 无服务器与以下服务集成:
  • Amazon S3 使用 Kinesis Data Firehose 以简单且无需代码的方式将数据从 MSK 传送到 Amazon S3。
  • Amazon VPC(用于网络隔离和安全)
  • Amazon CloudWatch(用于指标)
  • Amazon IAM(用于对 Apache Kafka 和服务 API 进行身份验证和授权)
  • AWS Glue Schema 注册表(用于控制 Apache Kafka 应用程序使用的架构演变)
  • AWS CloudTrail(用于 AWS API 日志)
  • AWS PrivateLink(用于私有连接)

扩展

问:如何纵向扩展集群中的存储?
您可以使用 AWS 管理控制台或 AWS CLI 纵向扩展预置集群中的存储。您还可以使用分层存储在集群上虚拟存储无限数据,而无需添加代理进行存储。在无服务器集群中,存储可以根据您的使用情况无缝扩展。
 
问:分层存储的工作原理是什么?
Apache Kafka 将数据存储在称为日志段的文件中。每个段完成后,根据在集群或主题级别配置的大小,将其复制到低成本存储层。数据在性能优化存储中保存指定的保留时间或大小,然后删除。低成本存储有单独的时间和大小限制设置,该设置将比主存储层长。如果客户端从存储在低成本层中的段中请求数据,代理将从其中读取数据并提供数据,提供方式与从主存储中提供时相同。

问:我如何自动扩展集群中的存储?
您可以使用 AWS 管理控制台或通过使用 AWS CLI 或 API 创建 AWS Application Auto Scaling 策略来创建存储的自动扩展策略。
 
问:我是否可以扩展现有集群中的代理数量?
是。您可以横向扩展或增加预置的 Amazon MSK 集群中的代理数量。

问:我是否可以扩展现有集群中的代理大小?
是。您可以选择扩缩预置的 Amazon MSK 集群上代理类型的大小。

问:如何均衡代理间的分区?
您可以使用 Cruise Control 对分区进行自动重新均衡,以便管理 I/O 热量。请参阅 Cruise Control 文档,了解更多信息。此外,您也可以使用 Kafka Admin API kafka-reassign-partitions.sh 来重新分配代理间的分区。在无服务器集群中,Amazon MSK 自动均衡分区。

定价和可用性

问:Amazon MSK 如何定价?
根据您创建的资源定价。访问定价页面了解更多内容。

问:是否因数据复制而需要支付数据传输费用?
不需要,所有集群内数据传输都包含在该服务中,无需额外付费。

问:哪些 AWS 区域提供 Amazon MSK?
Amazon MSK 区域可用性记录在此处

问:数据传输如何定价?
使用预置的集群时,您需要为传入和传出 Amazon MSK 集群的数据支付标准的 AWS 数据传输费用。您不需要为一个区域中集群内的数据传输支付任何费用,包括代理之间的数据传输以及代理和 Apache ZooKeeper 节点之间的数据传输。

使用无服务器集群时,您需要为传入和传出另一个区域的数据以及传到公有网络的数据支付标准的 AWS 数据传输费用。

合规性

Q:Amazon MSK 符合哪些合规性计划?
Amazon MSK 符合以下计划:

  • 符合 HIPAA 要求
  • PCI
  • ISO
  • SOC 1、2、3

有关 AWS 服务和合规性计划的完整列表,请参考 AWS 按合规性计划提供的范围内服务

服务等级协议

问:Amazon MSK SLA 提供什么保证?
我们的 Amazon MSK SLA 保证 Amazon MSK(包括 MSK Serverless 和 MSK Connect)的月度正常运行时间百分比至少达到 99.9%。
 
问:怎样确定我是否有资格获得 SLA 服务抵扣?
如果 Amazon MSK 上的多可用区域部署在任何每月计费周期中的月度正常运行时间低于 99.9%,则按照 Amazon MSK SLA,您符合 Amazon MSK 的 SLA 抵扣资格。
 
如需 SLA 的所有条款与条件的完整详细信息,以及如何提交索赔的详细信息,请参阅 Amazon MSK SLA 详细信息页面

复制

问:什么是 Amazon MSK Replicator?
Amazon MSK Replicator 是 Amazon MSK 的一项功能,它使客户能够在不同 AWS 区域(跨区域复制)或同一 AWS 区域(同区域复制)的 Amazon MSK 集群之间可靠地复制数据,而无需编写代码或管理基础设施。您可以使用跨区域复制(CRR)来构建高可用性和容错性的多区域流式处理应用程序,从而提高弹性。您还可以通过 CRR 为不同地理区域的使用者提供更低的延迟访问。您可以使用 SRR 将数据从一个集群分发到多个集群,以便与您的合作伙伴和团队共享数据。您还可以使用 SRR 将来自多个集群的数据聚合到一个集群中进行分析。

问:如何使用 MSK Replicator?
要在一对源集群和目标 MSK 集群之间设置复制,您需要在目标 AWS 区域创建一个 Replicator。要创建 Replicator,您需要指定详细信息,包括源和目标 MSK 集群的 Amazon 资源名称(ARN)以及可供 MSK Replicator 访问集群的 AWS Identity and Access Management(IAM)角色。如果目标 MSK 集群尚不存在,则需要创建一个。

问:MSK Replicator 支持哪种类型的 Kafka 集群?
MSK Replicator 仅支持在 MSK 集群之间进行复制。支持预置和无服务器类型的 MSK 集群。您也可以使用 MSK Replicator 从预置集群移动到无服务器集群或反之。不支持其他 Kafka 集群。

问:我是否可以指定要复制哪些主题?
是的,您可以在创建 Replicator 时使用允许和拒绝列表来指定要复制的主题。

问:MSK Replicator 是否会复制主题设置和使用者组偏移?
是的。MSK Replicator 会自动复制必要的 Kafka 元数据,例如主题配置、访问控制列表(ACL)和使用者组偏移量,以便使用应用程序可以在失效转移后无缝继续处理。如果您只想复制数据,则可以选择关闭其中一项或多项设置。您还可以在创建 Replicator 时使用允许或拒绝列表来指定要复制哪些使用者组。

问:当我的入口吞吐量发生变化时,我是否需要扩展复制?
不需要,MSK Replicator 会自动部署、预置和扩展底层复制基础设施,以支持入口吞吐量的变化。

问:我能否在不同 AWS 账户的 MSK 集群之间复制数据?
不能,MSK Replicator 仅支持在同一 AWS 账户的不同 MSK 集群之间进行复制。

问:如何监控复制?
您可以在目标区域中使用 Amazon CloudWatch 查看每个 Replicator 的主题和聚合级别的“ReplicationLatency、
MessageLag 和 ReplicatorThroughput”指标,无需额外付费。这些指标将在“AWS/Kafka”命名空间中的 ReplicatorName 下可见。您还可以查看“ReplicatorFailure、AuthError 和 ThrottleTime”指标,以了解您的 Replicator 是否遇到了任何问题。

问:如何使用复制来提高流式处理应用程序跨区域的弹性?
您可以使用 MSK Replicator 设置主动-主动或主动-被动集群拓扑,以提高 Kafka 应用程序跨区域的弹性。在主动-主动设置中,两个 MSK 集群都主动提供读取和写入服务。相比之下,在主动-被动设置中,一次只有一个 MSK 集群主动提供流数据,而另一个集群则处于待机状态。

问:我能否使用 MSK Replicator 将数据从一个集群复制到多个集群,或者将数据从多个集群复制到一个集群?
是的。您只需要为每个源集群和目标集群对创建不同的 Replicator 即可。

问:MSK Replicator 如何连接到源和目标 MSK 集群?
MSK Replicator 使用 IAM 访问控制连接到您的源集群和目标集群。您需要为创建 Replicator 的 IAM 访问控制开启源和目标 MSK 集群。由于 Amazon MSK 同时支持多种身份验证方法,因此您可以继续为您的客户端同时使用其他身份验证方法,包括 SASL/SCRAM 和 mTLS。

问:MSK Replicator 的复制延迟会有多长?
MSK Replicator 异步复制数据。复制延迟取决于许多因素,包括 MSK 集群的 AWS 区域之间的网络距离、源集群和目标集群的吞吐能力以及源集群和目标集群上的分区数量

问:我可以使主题名称与 MSK Replicator 相同吗?
不可以,MSK Replicator 会在目标集群中创建新主题,并在主题名称中添加自动生成的前缀。例如,MSK Replicator 会将“主题”中的数据从源集群复制到目标集群中名为“<sourceKafkaClusterAlias>.topic”的新主题。MSK Replicator 这样做是为了将包含从源集群复制的数据的主题与目标集群中的其他主题区分开来,并避免数据在集群之间循环复制。您可以使用 DescribeReplicator API 或 MSK 控制台上的 Replicator 详细信息页面,在“SourceKafkaClusterAlias”字段下找到将添加到目标集群中主题名称的前缀。

问:我可以复制源集群上的现有数据吗?
不可以。当您创建新的 Replicator 时,它会从源集群上的流的顶部(最新偏移量)开始复制数据。

复制是否会导致源集群上的使用者被节流?
由于 MSK Replicator 充当源集群的使用者,因此复制可能会导致源集群上的其他使用者被节流。这取决于源集群上的读取容量以及正在复制的数据的吞吐量。我们建议您为源集群和目标集群配置相同的容量,并在计算所需容量时考虑复制吞吐量。您还可以在源集群和目标集群上为 Replicator 设置 Kafka 配额,以控制 Replicator 可以使用的容量。

问:我可以在写入目标集群之前压缩数据吗?
可以,在创建 Replicator 时,您可以在 None、GZIP、Snappy、LZ4 和 ZSTD 中指定自己选择的压缩编解码器。

开始使用 Amazon MSK

计算成本
计算成本

访问 Amazon MSK 定价页面

Read the documentation
查看入门指南

请参阅本分步指南,了解如何在 Amazon MSK 上设置 Apache Kafka 集群。

运行您的 Apache Kafka 集群
运行您的 Apache Kafka 集群

开始在 Amazon MSK 上运行 Apache Kafka 集群。登录 Amazon MSK 控制台