View a markdown version of this page

從 ZooKeeper 遷移至 KRaft 模式 - Amazon Managed Streaming for Apache Kafka

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

從 ZooKeeper 遷移至 KRaft 模式

您可以使用 UpdateClusterKafkaVersion API 將現有的 ZooKeeper 型 MSK 叢集遷移至 KRaft 模式。遷移已就地執行 — 您的叢集在整個過程中仍然可用,而且不會移動任何資料。Amazon MSK 佈建 KRaft 控制器、將叢集中繼資料從 ZooKeeper 遷移至 KRaft 規定人數,以及自動解除委任 ZooKeeper 節點。

先決條件

在將叢集從 ZooKeeper 遷移至 KRaft 模式之前,請確定下列事項:

  • 您的叢集正在 3.9.x ZooKeeper 模式下執行 Apache Kafka 版本。如果您的叢集位於較舊版本,請先3.9.x使用標準版本升級程序升級至 。

  • 您的叢集處於 ACTIVE 狀態,沒有待處理的操作。

  • 如果您使用依賴直接 ZooKeeper 存取的工具 (例如舊版 Cruise Control 或自訂管理工具),請將其更新為使用 Kafka Admin APIs,而非直接 ZooKeeper 連線。

  • 對於標準 (佈建) 叢集:必須停用 ZooKeeper 用戶端存取。在啟動遷移ZookeeperAccess.Enabled=false之前,使用 UpdateConnectivity API 來設定 。快速叢集不需要此步驟。

  • 所有用戶端應用程式都使用--bootstrap-server連線字串,而不是--zookeeper連線字串。遷移後無法使用 ZooKeeper 連線字串。

  • 您的叢集未同時啟用公有存取和開放監控。

  • 您的叢集不使用kafka.t3.small代理程式執行個體。

  • 您的叢集不使用動態公告接聽程式。若要檢查您的代理程式是否已動態設定 advertised.listeners 屬性,請執行下列命令,其中 $bs是叢集的引導伺服器連線字串,並確保輸出不包含 advertised.listeners

    bin/kafka-configs.sh --bootstrap-server $bs --entity-type brokers --describe

    如需動態設定屬性的詳細資訊,請參閱 動態 Amazon MSK 組態

遷移期間發生的事

當您啟動 ZooKeeper-to-KRaft遷移時,Amazon MSK 會自動執行下列步驟:

  1. Amazon MSK 會在您的叢集中佈建 KRaft 控制器節點。這些控制器包含在內,無需額外費用。

  2. 資料平面遷移執行:代理程式會重新設定為使用中繼資料的 KRaft 規定人數,同時繼續提供用戶端流量。

  3. 在向 KRaft 規定人數註冊所有代理程式之後,Amazon MSK 會停用 ZooKeeper 節點。

  4. 叢集管理模式已更新為 KRaft。

遷移是一項長時間執行的操作,視叢集大小而定,可能需要數小時的時間。您可以使用 DescribeClusterOperation API 監控操作狀態。

重要

遷移無法反轉。一旦叢集遷移至 KRaft 模式,您就無法將其切換回 ZooKeeper 模式。

使用 遷移 AWS CLI

  1. 驗證叢集的可用目標版本:

    aws kafka get-compatible-kafka-versions --cluster-arn ClusterArn

    如果您的叢集符合遷移資格,輸出會包含 KRaft .kraft 目標版本 (尾碼為 )。

  2. 透過指定 KRaft 目標版本開始遷移:

    aws kafka update-cluster-kafka-version \ --cluster-arn ClusterArn \ --current-version Current-Cluster-Version \ --target-kafka-version "3.9.x.kraft"
    重要

    叢集版本不是簡單的整數。使用 DescribeCluster操作來尋找叢集的目前版本。

  3. 監控遷移進度:

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

    操作狀態會轉換至 ,UPDATE_IN_PROGRESS並使用 完成UPDATE_COMPLETE

遷移後

遷移完成後:

  • 您的叢集以 KRaft 模式運作。所有中繼資料都由 KRaft 控制器管理。

  • ZooKeeper 節點已移除。ZooKeeper 連線字串不再可用。

  • 如果用戶端應用程式使用--bootstrap-server連線字串,則會繼續運作而不進行任何變更。

  • 如果您需要 KRaft 控制器端點進行開放式監控,您可以使用 ListNodes API 檢視它們。