一般性问题

问:什么是 Amazon MSK?
Amazon MSK 是一种新的 AWS 流数据服务,可管理 Apache Kafka 基础设施和运营,让开发人员和开发运营经理可以轻松地在 AWS 上运行 Apache Kafka 应用程序,而无需成为运行 Apache Kafka 集群方面的专家。Amazon MSK 是在 AWS 中运行现有或新的 Apache Kafka 应用程序的理想选择。Amazon MSK 运营和维护 Apache Kafka 集群,提供开箱即用的企业级安全功能,并具有内置的 AWS 集成,可加速流数据应用程序的开发。首先,您可以将现有 Apache Kafka 工作负载迁移到 Amazon MSK,或者只需单击几下,您便可以在几分钟内从头开始构建新的工作负载。集群内流量没有数据传输费用,也不需要承诺或预付款。您只需为使用的资源付费。
 
问:什么是 Apache Kafka?
Apache Kafka 是一个开源、高性能、可容错且可扩展的平台,用于构建实时流数据管道和应用程序。Apache Kafka 是一个流数据存储,它将生成流数据的应用程序(生产者)与从其数据存储中使用流数据的应用程序(使用者)分离到其数据存储中。组织使用 Apache Kafka 作为持续分析和响应流数据的应用程序的数据源。 了解有关 Apache Kafka 的更多信息
 
问:什么是流数据?
流数据是由数千台机器、设备、网站和应用程序生成的连续的较小记录或事件流(一个记录或事件通常为几千字节)。流数据包括多种数据,例如客户使用您的移动或 Web 应用程序生成的日志文件、网购数据、游戏内玩家活动、社交网站信息、金融交易大厅、地理空间服务,以及来自数据中心内所连接设备或仪器的遥测数据。流数据服务(如 Amazon MSK 和 Amazon Kinesis Data Streams)使您可以轻松地持续收集、处理和提供流数据。 了解有关流数据的更多信息
 
问:Apache Kafka 的主要功能是什么?
Apache Kafka 有三项主要功能:
  • Apache Kafka 以容错的方式将流数据存储为一系列连续的记录,并保留记录的生成顺序。
  • Apache Kafka 充当数据生产者和数据使用者之间的缓冲区。Apache Kafka 允许许多数据生产者(例如网站、IoT 设备、Amazon EC2 实例)持续发布流数据并使用 Apache Kafka 主题对这些数据进行分类。多个数据使用者(例如机器学习应用程序、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 的开源版本,具有高可用性和安全性,同时提供与 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 版本?
Amazon MSK 目前支持 Apache Kafka 版本 1.1.1 和 2.1.0。
 
问:Apache Kafka API 是否与 Amazon MSK 兼容?
是的,Amazon MSK 原生支持所有数据层面和管理 API。
 
问:Amazon MSK 是否支持 Apache Kafka AdminClient?
是。

数据生产和使用

问:是否可以使用 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 AdminClient 的组件。将 .jar 文件上传到 Apache Kafka 集群的工具目前与 Amazon MSK 不兼容,其中包括 Confluent Control Center、Confluent Auto Data Balancer、Uber  uReplicator 和 LinkedIn  Cruise Control

迁移到 Amazon MSK

问:是否可以将现有 Apache Kafka 集群内的数据迁移到 Amazon MSK?
是的,您可以使用第三方工具或开源 Apache Kafka 随附的开源工具(如 MirrorMaker)将集群中的数据复制到 Amazon MSK 集群。

版本升级

问:是否支持 Apache Kafka 版本升级?
目前不支持集群版本升级,但是我们计划不久后支持版本升级。 
 
问:在后台,升级流程的工作原理是什么?
部署新 Apache Kafka 版本时,Amazon MSK 将使用滚动升级进程一次升级一个代理或 Apache ZooKeeper 节点,然后再转到下一个资源。在整个升级过程中,您的集群将处于“正在更新”状态,升级完成后将变为“活动”状态。请务必注意,如果您选择不将数据复制到正在升级的集群中的多个代理,则您的集群将会遭遇停机。

集群

问:如何创建第一个 Amazon MSK 集群?
只需在 AWS 管理控制台中单击几下或使用 AWS 软件开发工具包,即可创建第一个集群。首先,在 Amazon MSK 控制台中,选择一个 AWS 区域来创建 Amazon MSK 集群。选择集群的名称、要运行集群的 VPC、集群的数据复制策略(三个可用区是高持久性的默认值)以及每个可用区的子网。接下来,选择每个可用区的代理实例类型和代理数量,然后单击“创建”。

问:集群中有哪些资源?
每个集群都包含代理实例、预置的存储和 Apache ZooKeeper 节点。

问:我可以在 Amazon MSK 集群中预置哪些类型的代理实例?
您可以在 EC2 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,您可以使用默认的 3 AZ 复制功能轻松部署常用复制策略,也可以选择按主题使用自定义复制策略。默认情况下,对于每个复制选项,将使用指定的复制策略部署和隔离主从代理。例如,如果选择 3-AZ 代理复制策略,其中每个可用区集群有 1 个代理,则 Amazon MSK 将创建一个包含三个代理的集群(一个区域的三个可用区中分别有 1 个代理),默认情况下,主题复制因子也将为 3 个,除非您选择覆盖主题复制因子。

问:我能否更改默认代理配置或将集群配置上传到 Amazon MSK?
能,Amazon MSK 允许您创建自定义配置并将其应用于新集群。自定义配置可使用 AWS CLI 或控制台创建。对现有集群的自定义配置支持将于 2019 年 6 月推出。

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

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

复制因子

集群默认值

Min.Insync.Replicas

2

主题

问:如何创建主题?
创建 Apache Kafka 集群后,您可以使用 Apache Kafka API 创建主题。使用 Apache Kafka API 执行所有主题和分区级别操作和配置。下面的命令是使用 Apache Kafka API 创建主题的示例:
 
bin/kafka-topics.sh --create —bootstrap-server ConnectionString:9092 --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 网络内,且无法通过互联网访问。
 
问:我的客户端和 Amazon MSK 集群之间的连接是否始终是私有的?
是的,从 Amazon MSK 集群生成和使用数据的唯一方式是通过 VPC 中的客户端与 Amazon MSK 集群之间的私有连接。Amazon MSK 不支持公有终端节点。

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

问:如何让在不同 AWS 账户中运行的客户端访问我的集群?
您可以使用 VPC 对等连接让在不同 AWS 账户中运行的客户端访问您的集群。

连接到 VPC

问:如何连接到 VPC 之外的 AWS MSK 集群?

您可以通过多种方法连接到 VPC 之外的 AWS MSK 集群。

加密

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

问:在 Amazon MSK 集群内的代理之间,数据是否进行传输中加密?
是,默认情况下,新集群已通过代理间通信的 TLS 启用了传输中加密。您可以在创建集群时选择不使用传输中加密。

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

问:当数据在 Amazon MSK 集群中的代理和 Apache ZooKeeper 节点之间移动时,是否可以在传输中加密?
否,Apache Kafka 捆绑的 Apache Zookeeper 默认版本不支持加密。但是请务必注意,Apache Zookeeper 和 Apache Kafka 代理之间的通信受到代理、主题和分区状态信息限制。

身份验证和授权

问:我能否在我的 VPC 中的多个客户端之间限制连接到 Amazon MSK 集群的范围?
Amazon MSK 支持基于 TLS 的身份验证,您可以使用此功能对 Amazon MSK 集群的客户端连接进行身份验证。Amazon MSK 允许您在 AWS Certificate Manager 服务内对 MSK 集群部署私有 CA。启用 TLS 客户端身份验证后,只有提供从以前加载的私有 CA 生成的 TLS 证书的客户端才能对集群进行身份验证。

问:授权在 Amazon MSK 中的工作原理是什么?
Apache Kafka 使用访问控制列表 (ACL) 进行授权,Amazon MSK 支持使用 ACL。要启用 ACL,您必须启用使用 TLS 的客户端身份验证。

问:我如何同时对客户端进行身份验证和授权?
使用客户端 TLS 身份验证的 Amazon MSK 客户可以使用客户端 TLS 证书的 Dname 作为 ACL 的委托人对客户端请求进行身份验证和授权。

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

问:如何监控集群或主题的性能?
您可以使用标准指标监控集群的性能,还可以使用 Amazon CloudWatch 控制台中的增强指标监控主题的性能。
 
问:如何监控客户端的运行状况和性能?
您可以使用您正在使用的 Apache Kafka 版本支持的任何客户端监控。

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

问:如何监控使用器延迟情况?
您可以使用 Linkedin 的 Burrow 等使用器延迟工具监控 Amazon MSK 集群内的使用器延迟情况: https://github.com/linkedin/Burrow

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 节点,无需额外费用。
 
问:我的客户端如何与 Apache ZooKeeper 进行交互?
您的客户端可以通过该服务提供的 Apache ZooKeeper 终端节点与 Apache ZooKeeper 进行交互。此终端节点在 AWS 管理控制台中或使用 DescribeCluster API 提供。

集成

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

扩展

问:如何扩大集群中的存储?
您可以使用 AWS 管理控制台或 AWS CLI 扩大集群中的存储。 
 
问:我能否调整现有集群中的代理数量?
不能。Amazon MSK 目前不支持调整现有集群中的代理数量,但是我们已经有此计划。
 
问:我能否调整现有集群中的代理实例大小?
不能。Amazon MSK 目前不支持调整现有集群中的代理实例大小,但是我们已经有此计划。

定价和可用性

问:Amazon MSK 如何定价?
定价基于每个 Apache Kafka 代理小时和每个预置的存储小时。AWS 数据传输费率适用于传入和传出 Amazon MSK 的数据。有关更多信息,请访问我们的 定价页面

问:是否因数据复制而需要支付数据传输费用?
不需要,所有集群内数据传输都包含在该服务中,无需额外费用。
 
问:哪些 AWS 区域提供 Amazon MSK?
Amazon MSK 区域可用性记录在 此处。 

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

合规性

问:Amazon MSK 是否符合 HIPAA 要求?

是。Amazon MSK 符合 HIPAA 要求。有关 AWS 服务和合规计划的完整列表,请参考 AWS 按合规性计划提供的范围内服务

服务等级协议

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

开始使用 Amazon MSK

计算成本
计算成本

访问 Amazon MSK 定价页面

查看入门指南
查看入门指南

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

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

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