跳至內容

如何疑難排解升級 Amazon MSK 叢集時的問題?

2 分的閱讀內容
0

當我升級 Amazon Managed Streaming for Apache Kafka (Amazon MSK) 叢集時,我需要疑難排解問題。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

考量事項與最佳實務

在升級您的 Amazon MSK 叢集之前,請先查看以下最佳實務:

  • 將叢集的複寫係數設定為 3 以上。若複寫係數為 1,可能會在滾動更新期間導致分區離線。若複寫係數為 2,則可能導致資料遺失。
  • 將最小同步中複本數 (minISR) 設定為「複寫係數 - 1」或更低的值。如果 minISR 值等於複寫係數,則可能在滾動更新期間封鎖叢集的生產作業。minISR 為 2 時,當其中一個複本離線,仍可讓三向複寫的主題保持可用。
  • 在更新叢集的組態之前,請確定叢集處於使用中狀態。
  • 在建立新的 Amazon MSK 叢集時,請使用建議的 Apache Kafka 版本。
  • 在用戶端連線字串中,至少包含每個可用區域中的一個代理程式。在用戶端連線字串中包含多個代理程式,可在特定代理程式因更新而離線時進行容錯移轉。
  • 對於主題管理,請使用 Apache Kafka AdminClient 2.8.0 或更新版本
  • 將連線的用戶端升級至建議的版本或更新版本。用戶端升級不受 Amazon MSK 叢集 Kafka 版本的生命週期終止 (EOL) 日期限制。
    **注意:**Apache Kafka 提供雙向用戶端相容性政策,允許舊版用戶端與新版叢集協同運作,也允許新版用戶端與舊版叢集協同運作。如需更多資訊,請參閱 Apache Kafka 網站上的相容性
  • 請在低流量時段升級叢集。升級 Apache Kafka 版本所需的時間取決於叢集中代理程式的數量。
    **注意:**當您升級叢集版本時,在版本升級完成之前,無法進行其他更新。不過,在升級期間,您仍可從叢集進行資料生產與取用。

**注意:**當您更新執行個體類型時,並不會自動升級叢集版本。

如需更多資訊,請參閱版本升級最佳實務

監控升級

建立 Amazon MSK 叢集時,您可以指定叢集所需的 Apache Kafka 版本。建立叢集後,您也可以將叢集更新為較新的 Apache Kafka 版本

您可以在 Cluster operations(叢集作業) 索引標籤 中的 Amazon MSK console(Amazon MSK 主控台) 監控更新的進度。升級進度達到 17% 之後,可能需要數小時才能完成升級。

**注意:**Amazon MSK 會以滾動重新啟動程序的方式執行升級。Amazon MSK 一次會從叢集中取出一個代理程式,並升級其 Kafka 版本。升級完成的代理程式會重新加入叢集,接著 Amazon MSK 會取出下一個代理程式。此程序會持續進行,直到 Amazon MSK 將最後一個代理程式升級到新的 Kafka 版本為止。

若要透過 AWS CLI 監控叢集的升級進度,請執行 describe-cluster-operations 命令:

aws kafka describe-cluster-operation —cluster-operation-arn ClusterOperationArn

若「作業」處於 Incomplete(未完成) 或 Failed(失敗) 狀態,請 聯絡 AWS Support

疑難排解錯誤

代理程式上的分區作業會消耗大量系統資源。若分區數量高於建議上限,可能會對叢集中可用資源造成壓力。當叢集資源受限時,您將無法更新叢集組態、叢集的 Apache Kafka 版本,或將叢集更新為較小的代理程式類型。當每個代理程式的分區數量超過建議值時,您會收到以下其中一個錯誤:

「Error updating cluster configuration There was a problem updating cluster configuration.If the problem persists, contact AWS Support.The number of partitions per broker is above the recommended limit.Add more brokers and rearrange the partitions per broker to be below the recommended limit, then retry the request.」

-或-

「Upgrade is stuck in the stage 'Initializing upgrade'」

若要解決上述錯誤,請採取以下措施:

  • 增加叢集中的代理程式數量。接著,重新指派分區以減少每個代理程式的分區數量。使用 Amazon CloudWatch 指標監控每個代理程式的分區數量。如需更多資訊,請參閱預設 Amazon MSK 組態
  • 刪除未使用的主題。若要檢視叢集中的所有主題及分割區數量,請執行以下命令:
    KAFKA_ROOT/bin/kafka-topics.sh --bootstrap-server
    BOOTSTRAP_SERVER --describe --topic Topic_name
    **注意:**將 Topic_name 替換為主題名稱。
    在執行上述命令之前,請於 Amazon Elastic Compute Cloud (Amazon EC2) 機器上設定 Apache Kafka 用戶端
  • 將執行個體類型修改為較高階的執行個體類型
AWS 官方已更新 3 個月前