本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
元数据管理
Amazon MSK 支持 Apache ZooKeeper 或 KRaft 元数据管理模式。
从 Amazon MSK 上的 Apache Kafka 版本 3.7.x 开始,您可以创建 KRaft 使用模式代替模式的集群。 ZooKeeper KRaft基于 Kafka 的集群依靠 Kafka 内的控制器来管理元数据。
ZooKeeper 模式
Apache ZooKeeper
如果集群使用 ZooKeeper 模式,则可以使用以下步骤获取 Apache ZooKeeper 连接字符串。但是,我们建议您使用 BootstrapServerString
连接到您的集群并执行管理员操作,因为 --zookeeper
标志已在 Kafka 2.5 中被弃用,并已从 Kafka 3.0 中移除。
使用获取 Apache ZooKeeper 连接字符串 Amazon Web Services Management Console
在 https://console.amazonaws.cn/msk/
打开 Amazon MSK 控制台。 -
该表显示了此账户下当前区域的所有集群。选择集群名称以查看其说明。
-
在集群摘要页面上,选择查看客户端信息。此操作会显示引导代理和 Apache ZooKeeper 连接字符串。
使用获取 Apache ZooKeeper 连接字符串 Amazon CLI
如果您不知道集群的 Amazon 资源名称 (ARN),您可以通过列出您账户中的所有集群来找到它。有关更多信息,请参阅 列出 Amazon MSK 集群。
-
要获取 Apache ZooKeeper 连接字符串以及有关集群的其他信息,请运行以下命令,
ClusterArn
替换为集群的 ARN。aws kafka describe-cluster --cluster-arn
ClusterArn
该
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 ZooKeeper Kafka 集群中的元数据管理。在 KRaft 模式下,集群元数据在 Kafka 集群的一组 Kafka 控制器内传播,而不是跨节点传播。 ZooKeeper KRaft控制器免费提供给用户,并且不需要您进行额外的设置或管理。有关更多信息,请参阅 KIP-500
下面是有关 MSK KRaft 模式的一些注意事项:
-
KRaft 模式仅适用于新集群。创建集群后,无法切换元数据模式。
在 MSK 控制台上,您可以通过选择 Kafka 版本 3.7.x 并在集群创建窗口中选中 KRaft 复选框来创建基于 Kraft 的集群。
要使用 MSK API
CreateCluster
或CreateClusterV2
操作在 KRaft 模式下创建集群,应使用3.7.x.kraft
作为版本。使用3.7.x
作为版本在 ZooKeeper 模式下创建集群。每个代理的分区数量与 ZooKeeper 基于集群的分区数量是相同的。 KRaft 但是, KRaft 允许您通过在集群中预置更多代理来在每个集群中托管更多分区。
在 Amazon MSK 上使用 KRaft 模式不需要进行任何 API 更改。但是,如果您的客户端今天仍在使用
--zookeeper
连接字符串,则应更新您的客户端,以使用--bootstrap-server
连接字符串连接到您的集群。--zookeeper
标志在 Apache Kafka 2.5 版中已弃用,并从 Kafka 3.0 版开始移除。因此,我们建议您对与集群的所有连接使用最新的 Apache Kafka 客户端版本和--bootstrap-server
连接字符串。ZooKeeper 模式继续适用于所有已发布版本,其中 ZooKafka 也支持 ZooKeper。有关 Apache Kafka 版本终止支持和未来更新的详细信息,请参阅支持的 Apache Kafka 版本。
您应该检查所使用的任何工具是否能够在 APIs 没有 ZooKeeper 连接的情况下使用 Kafka Admin。有关将集群连接到 Cruise Control 的更新步骤,请参阅 在 Amazon LinkedIn MSK 上使用 Apache Kafka 的巡航控制系统。Cruise Control 还提供 ZooKeeper了在没有的情况下运行 Cruise
-
您无需直接访问集群的 KRaft 控制器即可执行任何管理操作。但是,如果使用开放监控来收集指标,您还需要控制器的 DNS 端点来收集有关集群的一些非控制器相关指标。您可以从 MSK 控制台或使用 ListNodesAPI 操作获取这些 DNS 端点。有关使用 Prometheus 监控已配置 MSK 的集群为 KRaft基于集群设置开放监控的更新步骤,请参阅。
对于 KRaft 模式集群,您不需要监控模式集群的 ZooKeeper 其他CloudWatch 指标。MSK 管理您的集群中使用的 KRaft 控制器。
-
您可以使用
--bootstrap-server
连接字符串在 KRaft 模式下 ACLs 使用集群继续进行管理。不应使用--zookeeper
连接字符串进行管理 ACLs。请参阅阿帕奇Kafka a ACLs。 在 KRaft 模式下,集群的元数据存储在 Kafka 内的 KRaft 控制器上,而不是外部 ZooKeeper 节点上。因此,您不需要像控制器节点那样单独控制对控制器 ZooKeeper 节点的访问。