本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
元数据管理
亚马逊 MSK 支持 Apache ZooKeeper 或 Kraft 元数据管理模式。
从亚马逊 MSK 上的 Apache Kafka 3.7.x 版本开始,你可以创建使用 Kraft 模式代替模式的集群。 ZooKeeper KRaft-based 集群依赖 Kafka 中的控制器来管理元数据。
ZooKeeper 模式
Apache ZooKeeper
如果您的集群正在使用 ZooKeeper 模式,则可以使用以下步骤获取 Apache ZooKeeper 连接字符串。但是,我们建议您使用 BootstrapServerString 连接到您的集群并执行管理员操作,因为 --zookeeper 标志已在 Kafka 2.5 中被弃用,并已从 Kafka 3.0 中移除。
使用获取 Apache ZooKeeper 连接字符串 AWS 管理控制台
在 https://console.aws.amazon.com/msk/
打开 Amazon MSK 控制台。 -
该表显示了此账户下当前区域的所有集群。选择集群名称以查看其说明。
-
在集群摘要页面上,选择查看客户端信息。这显示了引导程序代理以及 Apache ZooKeeper 连接字符串。
使用获取 Apache ZooKeeper 连接字符串 AWS CLI
如果您不知道集群的 Amazon 资源名称 (ARN),您可以通过列出您账户中的所有集群来找到它。有关更多信息,请参阅 列出 Amazon MSK 集群。
-
要获取 Apache ZooKeeper 连接字符串以及有关集群的其他信息,请运行以下命令,
ClusterArn替换为集群的 ARN。aws kafka describe-cluster --cluster-arnClusterArn该
describe-cluster命令的输出如以下 JSON 示例所示。{ "ClusterInfo": { "BrokerNodeGroupInfo": { "BrokerAZDistribution": "DEFAULT", "ClientSubnets": [ "subnet-0123456789abcdef0", "subnet-2468013579abcdef1", "subnet-1357902468abcdef2" ], "InstanceType": "kafka.m5.large", "StorageInfo": { "EbsStorageInfo": { "VolumeSize": 1000 } } }, "ClusterArn": "arn:aws:kafka:us-east-1:111122223333:cluster/testcluster/12345678-abcd-4567-2345-abcdef123456-2", "ClusterName": "testcluster", "CreationTime": "2018-12-02T17:38:36.75Z", "CurrentBrokerSoftwareInfo": { "KafkaVersion": "2.2.1" }, "CurrentVersion": "K13V1IB3VIYZZH", "EncryptionInfo": { "EncryptionAtRest": { "DataVolumeKMSKeyId": "arn:aws:kms:us-east-1:555555555555:key/12345678-abcd-2345-ef01-abcdef123456" } }, "EnhancedMonitoring": "DEFAULT", "NumberOfBrokerNodes": 3, "State": "ACTIVE", "ZookeeperConnectString": "10.0.1.101:2018,10.0.2.101:2018,10.0.3.101:2018" } }上一 JSON 示例在
describe-cluster命令输出中显示ZookeeperConnectString键。复制与此键对应的值,并保存它以用于在集群上创建主题。重要
您的 Amazon MSK 集群必须处于
ACTIVE状态才能获取 Apache ZooKeeper 连接字符串。当集群仍处于CREATING状态时,describe-cluster命令的输出不包含ZookeeperConnectString。如果发生这种情况,请等待几分钟,然后在集群进入ACTIVE状态后再次运行describe-cluster。
使用 API 获取 Apache ZooKeeper 连接字符串
要使用 API 获取 Apache ZooKeeper 连接字符串,请参阅DescribeCluster。
Kraft 模式
Amazon MSK 在 Kafka 版本 3.7.x 中引入了对 KRaft(Apache Kafka Raft)的支持。Apache Kafka 社区开发了 Kraft 来取代 Apache 在 Apache Kafka 集群中 ZooKeeper进行元数据管理。在 Kraft 模式下,集群元数据在一组 Kafka 控制器中传播,这些控制器是 Kafka 集群的一部分,而不是跨节点传播。 ZooKeeper KRaft 控制器免费提供给用户,并且不需要您进行额外的设置或管理。有关 Kraft KIP-500
下面是有关 MSK 上的 KRaft 模式的一些注意事项:
-
KRaft 模式仅适用于新集群。创建集群后,无法切换元数据模式。
在 MSK 控制台上,您可以通过选择 Kafka 版本 3.7.x 并在 Kraft-based 集群创建窗口中选中 KraFT 复选框来创建集群。
要使用 MSK API
CreateCluster或CreateClusterV2操作在 Kraft 模式下创建集群,应使用3.7.x.kraft作为版本。3.7.x用作在 ZooKeeper 模式下创建集群的版本。在 Kraft 和 ZooKeeper 基于 Kraft 的集群上,每个代理的分区数量是相同的。但是,KRaft 允许您通过在集群中预置更多代理来在每个集群中托管更多分区。
在 Amazon MSK 上使用 KRaft 模式不需要进行任何 API 更改。但是,如果您的客户端今天仍在使用
--zookeeper连接字符串,则应更新您的客户端,以使用--bootstrap-server连接字符串连接到您的集群。--zookeeper标志在 Apache Kafka 2.5 版中已弃用,并从 Kafka 3.0 版开始移除。因此,我们建议您对与集群的所有连接使用最新的 Apache Kafka 客户端版本和--bootstrap-server连接字符串。ZooKeeper 模式继续适用于所有已发布的版本,其中 Apache Kafka 也支持 zookeeper。有关 Apache Kafka 版本终止支持和未来更新的详细信息,请参阅支持的 Apache Kafka 版本。
你应该检查你使用的任何工具是否能够在没有 ZooKeeper 连接的情况下使用 Kafka Admin API。有关将集群连接到 Cruise Control 的更新步骤,请参阅 在 Amazon LinkedIn MSK 上使用 Apache Kafka 的巡航控制系统。Cruise Control 还提供了不带巡航控制系统的运行
说明 ZooKeeper。 -
您无需直接访问集群的 KRaft 控制器即可执行任何管理操作。但是,如果使用开放监控来收集指标,您还需要控制器的 DNS 端点来收集有关集群的一些非控制器相关指标。您可以从 MSK 控制台或使用 ListNodesAPI 操作获取这些 DNS 终端节点。有关使用 Prometheus 监控预置 MSK 集群为 KRaft-based 集群设置开放式监控的更新步骤,请参阅。
与模式集群相比 ZooKeeper ,您无需监控 Kraft 模式集群的其他CloudWatch 指标。MSK 管理您的集群中使用的 KRaft 控制器。
-
在 Kraft 模式集群中,您可以使用
--bootstrap-server连接字符串继续管理 ACL。不应使用--zookeeper连接字符串来管理 ACL。请参阅Apache Kafka ACL。 在 Kraft 模式下,集群的元数据存储在 Kafka 中的 Kraft 控制器上,而不是存储在外部节点上。 ZooKeeper 因此,您无需像控制节点那样单独控制对控制器 ZooKeeper 节点的访问。