本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
从 Amazon MSK 集群中移除代理
如果您想从适用于 Apache Kafka 的亚马逊托管流媒体 Kafka MSK () 预配置集群中移除代理,请使用此亚马逊MSK操作。您可以通过移除代理集来减少集群的存储和计算容量,而不会影响可用性、数据持久性风险或中断数据流应用程序。
您可以向集群添加更多代理以应对流量增加,并在流量消退时移除代理。借助代理添加和删除功能,您可以最好地利用集群容量并优化MSK基础设施成本。移除代理可让您对现有集群容量进行代理级别的控制,以满足您的工作负载需求并避免迁移到另一个集群。
使用 Amazon 控制台、命令行界面 (CLI) 或 Amazon CloudFormation 来减少已配置集群的代理数量。SDKMSK选择没有任何分区的代理(金丝雀主题除外),并阻止应用程序向这些代理生成数据,同时安全地将这些代理从集群中移除。
如果您想减少集群的存储和计算量,则应在每个可用区移除一个代理。例如,您可以通过一次代理删除操作从两个可用区集群中移除两个代理,或者从三个可用区集群中删除三个代理。
有关从集群中移除代理后如何重新平衡分区的信息,请参阅重新分配分区。
无论实例大小如何,您都可以从所有基于 M5 和 M7g 的MSK预配置集群中移除代理。
Kafka 版本 2.8.1 及更高版本支持删除代理,包括KRaft模式集群。
准备通过移除所有分区来移除代理
在开始代理删除过程之前,请先移动所有分区,但主题分__amazon_msk_canary
区和计划__amazon_msk_canary_state
删除的代理分区除外。这些是 Amazon 为集群运行状况和诊断指标MSK创建的内部主题。
你可以使用 Kafka 管理员APIs或 Cruise Control 将分区移动到你打算在集群中保留的其他代理。请参见重新分配分区。
移除分区的过程示例
本节是如何从要删除的代理中移除分区的示例。假设您的集群包含 6 个代理,每个可用区有 2 个代理,并且它有四个主题:
__amazon_msk_canary
__consumer_offsets
__amazon_msk_connect_offsets_my-mskc-connector_12345678-09e7-c657f7e4ff32-2
msk-brk-rmv
按照创建客户端计算机中所述创建客户机。
配置客户端计算机后,运行以下命令以列出集群中的所有可用主题。
./bin/kafka-topics.sh --bootstrap-server “CLUSTER_BOOTSTRAP_STRING” --list
在此示例中,我们看到四个主题名称:
__amazon_msk_canary
__consumer_offsets
、__amazon_msk_connect_offsets_my-mskc-connector_12345678-09e7-c657f7e4ff32-2
、和msk-brk-rmv
。在客户端计算机
topics.json
上创建一个名为 json 文件,并添加所有用户主题名称,如以下代码示例所示。您无需添加__amazon_msk_canary
主题名称,因为这是一个服务管理的主题,必要时会自动移动。{ "topics": [ {"topic": "msk-brk-rmv"}, {"topic": "__consumer_offsets"}, {"topic": "__amazon_msk_connect_offsets_my-mskc-connector_12345678-09e7-c657f7e4ff32-2"} ], "version":1 }
运行以下命令生成提案,将分区仅移至集群上 6 个代理中的 3 个代理。
./bin/kafka-reassign-partitions.sh --bootstrap-server “CLUSTER_BOOTSTRAP_STRING” --topics-to-move-json-file topics.json --broker-list 1,2,3 --generate
创建一个名为的文件
reassignment-file.json
,然后复制proposed partition reassignment configuration
你从上面的命令中获得的文件。运行以下命令来移动您在中指定的分区
reassignment-file.json
。./bin/kafka-reassign-partitions.sh --bootstrap-server “CLUSTER_BOOTSTRAP_STRING” --reassignment-json-file reassignment-file.json --execute
输出看上去类似于以下内容:
Successfully started partition reassignments for morpheus-test-topic-1-0,test-topic-1-0
运行以下命令以验证所有分区都已移动。
./bin/kafka-reassign-partitions.sh --bootstrap-server “CLUSTER_BOOTSTRAP_STRING” --reassignment-json-file reassignment-file.json --verify
该输出值看上去类似于以下内容。监控状态,直到您请求的主题中的所有分区都成功重新分配:
Status of partition reassignment: Reassignment of partition msk-brk-rmv-0 is completed. Reassignment of partition msk-brk-rmv-1 is completed. Reassignment of partition __consumer_offsets-0 is completed. Reassignment of partition __consumer_offsets-1 is completed.
当状态表明每个分区的分区重新分配已完成时,请监视 5 分钟,以确保显示
0
从中移动分区的代理的UserPartitionExists
指标。确认这一点后,您可以继续从集群中移除代理。
使用 Amazon 管理控制台移除代理
使用 Amazon 管理控制台删除代理
打开亚马逊MSK控制台,网址为https://console.aws.amazon.com/msk/
。 选择包含要删除的代理的MSK集群。
在集群详细信息页面上,选择操作按钮,然后选择编辑代理数量选项。
输入您希望集群在每个可用区拥有的代理数量。控制台汇总了各可用区中将被删除的代理数量。确保这是你想要的。
选择保存更改。
为防止意外删除代理,控制台会要求您确认是否要删除代理。
使用删除经纪人 Amazon CLI
运行以下命令,ClusterArn
替换为您在创建集群时获得的 Amazon 资源名称 (ARN)。如果您的集群没有,则可以通过列出所有集群来找到它。ARN有关更多信息,请参阅列出 Amazon MSK 集群。Current-Cluster-Version
替换为集群的当前版本。
重要
集群版本不是简单的整数。要查找集群的当前版本,请使用DescribeCluster操作或 desc ribe-KTVPDKIKX0DER
。
这些区域有:Target-Number-of-Brokers
参数表示此操作成功完成后您希望集群拥有的代理节点总数。您为其指定的值 Target-Number-of-Brokers
必须是小于集群中当前代理数量的整数。它还必须是可用区数目的倍数。
aws kafka update-broker-count --cluster-arn
ClusterArn
--current-versionCurrent-Cluster-Version
--target-number-of-broker-nodesTarget-Number-of-Brokers
此update-broker-count
操作的输出如下所示JSON。
{ "ClusterOperationInfo": { "ClientRequestId": "c0b7af47-8591-45b5-9c0c-909a1a2c99ea", "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2", "CreationTime": "2019-09-25T23:48:04.794Z", "OperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef", "OperationState": "UPDATE_COMPLETE", "OperationType": "DECREASE_BROKER_COUNT", "SourceClusterInfo": { "NumberOfBrokerNodes": 12 }, "TargetClusterInfo": { "NumberOfBrokerNodes": 9 } } }
在此输出中, OperationType
是 DECREASE_BROKER_COUNT
。如果 OperationState
的值为 UPDATE_IN_PROGRESS
,请等待一段时间,然后再次运行 describe-cluster-operation
命令。
使用删除经纪人 Amazon API
要使用删除集群中的代理API,请参阅UpdateBrokerCount《适用于 Apac API he 的亚马逊托管流媒体 K afka 参考》。