为什么我的 Amazon MSK 集群处于“正在修复”状态?

1 分钟阅读
0

我想要对处于“正在修复”状态的 Amazon Managed Streaming for Apache Kafka(Amazon MSK)集群进行故障排除。

解决方法

当服务运行内部操作以解决问题(例如,代理无响应)时,您的 Amazon MSK 集群将进入“正在修复”状态。但是,您可以使用集群来生成和使用数据。在集群返回“活动”状态之前,您将无法在集群上执行 Amazon MSK API 或 AWS 命令行界面(AWS CLI)更新操作。

使用适用于 Amazon MSK 的 Amazon CloudWatch 指标,了解集群为何处于“正在修复”状态:

  1. 打开 CloudWatch 控制台
  2. 在导航窗格中,选择指标,然后选择所有指标
  3. 浏览选项卡中,选择 AWS/Kafka
  4. 指标下,选择集群名称
  5. 选择要监控的集群。
    如果您看到 ActiveControllerCountOfflinePartitionsCount 指标出现峰值,则表明一个或多个代理运行状况不正常。这可能会导致您的集群进入“正在修复”状态。
  6. 对于代理级别的指标,请在指标下选择代理 ID、集群名称
  7. 从列表中选择带有集群名称以及指标 CpuUserCpuSystem 的条码。检查所有条目这两个值的总和的平均值是否超过集群的 60%。如果情况如此,高 CPU 利用率可能导致代理进入“正在修复”状态。有关监控 CPU 使用率的详细信息,请参阅最佳实践 — 监控 CPU 使用率

以下是导致 Amazon MSK 集群进入“正在修复”状态的常见原因:

  • 由于硬件故障,必须更换节点或 Amazon Elastic Block Store(Amazon EBS)卷。
  • 节点不符合代理的 Amazon MSK 性能 SLA,必须更换该节点以获得最佳性能。

请注意,Amazon MSK 是一项完全托管的服务。因此,代理拥有自我管理的工作流程,可以自行执行纠正措施,例如在出现故障的情况下更换节点。当代理中的 Amazon EBS 卷运行状况不正常时,Amazon MSK 会观察该卷的状态一段时间。如果该卷在这段时间内恢复正常运行,则不执行任何操作。如果该卷这段时间后仍然无法正常运行,则 Amazon MSK 会自动替换此卷。当 Amazon MSK 执行这些操作时,集群将进入“正在修复”状态。但是,只要您遵循最佳实践,这并不会影响 Amazon MSK 集群的可用性。即使代理处于“正在修复”状态,集群也可以处理来自生产者和消费者的请求。

在极少数情况下,您的集群可能会进入永久性“正在修复”状态。这可能是由于以下原因导致的:

  • 集群上的工作负载很高,代理不断被更换。若要避免此问题,最佳做法是不要使用 t3.small 实例托管生产集群。如果您使用的是 m5 实例,请确保为集群选择了正确的大小。您可以根据工作负载和监控 CPU 使用率来确定集群的大小。此外,请确保每个代理的分区数均不超过建议值
  • 自动扩缩组无法启动新实例。这可能是由于内部问题或缺少依赖关系导致的。例如,在集群创建期间指定的 AWS Key Management Service(AWS KMS)密钥可能无法再访问。
  • 罕见的内部事件影响了底层 Amazon Elastic Compute Cloud(Amazon EC2)实例的可用性或在可用区或 AWS 区域导致了 Amazon EBS 延迟。

如果您的集群处于非负载引起的永久性“正在修复”状态,请联系 AWS Support

相关信息

集群状态

AWS 官方
AWS 官方已更新 1 年前