本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
從 ZooKeeper 遷移至 KRaft 模式
您可以使用 UpdateClusterKafkaVersion API 將現有的 ZooKeeper 型 MSK 叢集遷移至 KRaft 模式。遷移已就地執行 — 您的叢集在整個過程中仍然可用,而且不會移動任何資料。Amazon MSK 佈建 KRaft 控制器、將叢集中繼資料從 ZooKeeper 遷移至 KRaft 規定人數,以及自動解除委任 ZooKeeper 節點。
先決條件
在將叢集從 ZooKeeper 遷移至 KRaft 模式之前,請確定下列事項:
您的叢集正在
3.9.xZooKeeper 模式下執行 Apache Kafka 版本。如果您的叢集位於較舊版本,請先3.9.x使用標準版本升級程序升級至 。您的叢集處於
ACTIVE狀態,沒有待處理的操作。如果您使用依賴直接 ZooKeeper 存取的工具 (例如舊版 Cruise Control 或自訂管理工具),請將其更新為使用 Kafka Admin APIs,而非直接 ZooKeeper 連線。
對於標準 (佈建) 叢集:必須停用 ZooKeeper 用戶端存取。在啟動遷移
ZookeeperAccess.Enabled=false之前,使用UpdateConnectivityAPI 來設定 。快速叢集不需要此步驟。所有用戶端應用程式都使用
--bootstrap-server連線字串,而不是--zookeeper連線字串。遷移後無法使用 ZooKeeper 連線字串。您的叢集未同時啟用公有存取和開放監控。
您的叢集不使用
kafka.t3.small代理程式執行個體。您的叢集不使用動態公告接聽程式。若要檢查您的代理程式是否已動態設定
advertised.listeners屬性,請執行下列命令,其中是叢集的引導伺服器連線字串,並確保輸出不包含$bsadvertised.listeners:bin/kafka-configs.sh --bootstrap-server $bs --entity-type brokers --describe如需動態設定屬性的詳細資訊,請參閱 動態 Amazon MSK 組態。
遷移期間發生的事
當您啟動 ZooKeeper-to-KRaft遷移時,Amazon MSK 會自動執行下列步驟:
Amazon MSK 會在您的叢集中佈建 KRaft 控制器節點。這些控制器包含在內,無需額外費用。
資料平面遷移執行:代理程式會重新設定為使用中繼資料的 KRaft 規定人數,同時繼續提供用戶端流量。
在向 KRaft 規定人數註冊所有代理程式之後,Amazon MSK 會停用 ZooKeeper 節點。
叢集管理模式已更新為 KRaft。
遷移是一項長時間執行的操作,視叢集大小而定,可能需要數小時的時間。您可以使用 DescribeClusterOperation API 監控操作狀態。
重要
遷移無法反轉。一旦叢集遷移至 KRaft 模式,您就無法將其切換回 ZooKeeper 模式。
使用 遷移 AWS CLI
-
驗證叢集的可用目標版本:
aws kafka get-compatible-kafka-versions --cluster-arnClusterArn如果您的叢集符合遷移資格,輸出會包含 KRaft
.kraft目標版本 (尾碼為 )。 -
透過指定 KRaft 目標版本開始遷移:
aws kafka update-cluster-kafka-version \ --cluster-arnClusterArn\ --current-versionCurrent-Cluster-Version\ --target-kafka-version "3.9.x.kraft"重要
叢集版本不是簡單的整數。使用
DescribeCluster操作來尋找叢集的目前版本。 -
監控遷移進度:
aws kafka describe-cluster-operation --cluster-operation-arnClusterOperationArn操作狀態會轉換至 ,
UPDATE_IN_PROGRESS並使用 完成UPDATE_COMPLETE。
遷移後
遷移完成後:
您的叢集以 KRaft 模式運作。所有中繼資料都由 KRaft 控制器管理。
ZooKeeper 節點已移除。ZooKeeper 連線字串不再可用。
如果用戶端應用程式使用
--bootstrap-server連線字串,則會繼續運作而不進行任何變更。如果您需要 KRaft 控制器端點進行開放式監控,您可以使用
ListNodesAPI 檢視它們。