我想對處於「修復中」狀態的 Amazon Managed Streaming for Apache Kafka (Amazon MSK) 叢集進行疑難排解。
解決方法
當服務執行內部操作以解決問題時,您的 Amazon MSK 叢集會進入修復中狀態。例如,當您的代理程式無法回應時,Amazon MSK 會執行內部操作來修正無法回應的代理程式。
即使叢集處於修復中狀態,您仍然可以繼續使用叢集來生產和取用資料。然而,在叢集回到 啟用中狀態之前,您無法對叢集執行 Amazon MSK API 或 AWS Command Line Interface (AWS CLI) 更新操作。
您可以使用 Amazon MSK 的 Amazon CloudWatch 指標來檢查叢集為何處於修復中狀態。
請完成下列步驟:
- 打開 Amazon CloudWatch console (Amazon CloudWatch 主控台)。
- 在導覽窗格中,選擇 Metrics (指標),然後選擇 All metrics (所有指標)。
- 在 Browse (瀏覽) 索引標籤中,選擇 AWS/Kafka。
- 在 Metrics (指標) 下,選擇 Cluster Name (叢集名稱)。
- 選取要監控的叢集。
注意:如果您在 ActiveControllerCount 或 OfflinePartitionsCount 指標中看到高峰,則表示一個或多個代理程式運作狀態不佳。運作狀態不佳的代理程式可能會導致您的叢集進入修復中狀態。
- 若要檢查代理程式層級的指標,請在 Metrics (指標) 下,選擇 Broker ID, Cluster Name (叢集名稱)。
- 從清單中,選取具有叢集名稱且包含 CpuUser 與 CpuSystem 指標的項目。
- 檢查所有項目中 CpuUser 與 CpuSystem 值的總和,是否達到或高於叢集平均值的 60%。如果平均值高於 60%,則高 CPU 使用率可能導致代理程式進入修復中狀態。如需更多資訊,請參閱監控 CPU 使用率。
Amazon MSK 叢集也可能因以下原因之一進入修復中狀態:
- Amazon MSK 必須因硬體故障替換節點或 Amazon Elastic Block Store (Amazon EBS) 磁碟區。
- 節點未達到代理程式的 Amazon MSK 效能 SLA,Amazon MSK 必須替換節點以確保高效能。
Amazon MSK 是完全受管服務,因此代理程式具有自我管理的工作流程,能自動執行修正操作。例如,當代理程式中的 Amazon EBS 磁碟區運作狀態不佳時,Amazon MSK 會觀察該磁碟區的狀態一段時間。如果在此期間磁碟區變為運作狀態良好,則 Amazon MSK 不會採取任何行動。如果在此期間後磁碟區仍然運作狀態不佳,則 Amazon MSK 會自動替換該磁碟區。當 Amazon MSK 執行這些操作時,叢集會進入修復中狀態。但只要您遵循最佳實務,Amazon MSK 叢集仍然可用。
您的 Amazon MSK 叢集處於持續「修復中」狀態
叢集上的工作負載過高
如果叢集上的工作負載過高,且 Amazon MSK 持續替換代理程式,則您的叢集可能會處於持續修復中狀態。若要避免叢集工作負載過高,請勿使用 t3.small 執行個體來託管生產叢集。如果您使用 m5 執行個體,請確保為叢集選擇正確的大小。若要根據工作負載判斷叢集的正確大小,請監控 CPU 使用率、分區數量或輸送量。
此外,請確保每個代理程式的分區數量不超過建議值。
Auto Scaling 群組無法啟動新的執行個體
如果存在內部問題,例如缺少相依性,則自動擴展群組將無法啟動新的執行個體,並且您的叢集會進入持續修復中狀態。
例如,您無法再存取在叢集建立期間指定的 AWS Key Management Service (KMS) 金鑰。
內部事件影響 EC2 執行個體可用性
您的叢集也可能因以下原因之一而進入持續修復中狀態:
- 內部事件影響基礎 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體的可用性。
- 內部事件導致可用區域或 AWS 區域的 Amazon EBS 延遲。
如果您的叢集持續處於修復中狀態,且這不是由於高工作負載造成的,請聯絡 AWS Support。
相關資訊
了解 MSK 佈建叢集狀態
歡迎使用 Amazon MSK 開發人員指南
監控 Amazon MSK 佈建叢集
Apache Kafka 用戶端的最佳實務