遷移至 Amazon MSK叢集 - Amazon Managed Streaming for Apache Kafka

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

遷移至 Amazon MSK叢集

Amazon MSK Replicator 可用於MSK叢集遷移。請參閱 什麼是 Amazon MSK Replicator?。或者,您可以使用 Apache MirrorMaker 2.0 從非MSK叢集遷移至 Amazon MSK叢集。如需如何執行此操作的範例,請參閱MSK使用 將內部部署 Apache Kafka 叢集遷移至 Amazon MirrorMaker。如需有關如何使用 的資訊 MirrorMaker,請參閱 Apache Kafka 文件中的在叢集之間鏡像資料。建議您在高可用性組態 MirrorMaker 中設定 。

使用 MirrorMaker 遷移至MSK叢集時要遵循的步驟大綱
  1. 建立目的地MSK叢集

  2. MirrorMaker 從與目的地叢集相同的 Amazon 內 VPC Amazon EC2執行個體開始。

  3. 檢查 MirrorMaker 延遲。

  4. MirrorMaker 趕上後,使用叢集引導代理程式將生產者和取用者重新導向至新MSK叢集。

  5. 關閉 MirrorMaker。

MirrorMaker 1.0 最佳實務

此最佳實務清單適用於 MirrorMaker 1.0。

  • 在目的地叢集 MirrorMaker 上執行。如此一來,如果發生網路問題,訊息仍可在來源叢集中使用。如果您在來源叢集 MirrorMaker 上執行,且事件在生產者中緩衝,且發生網路問題,則事件可能會遺失。

  • 如果傳輸過程中需要加密,請在來源叢集中執行。

  • 針對取用者,設定 auto.commit.enabled=false

  • 針對生產者,設定

    • max.in.flight.requests.per.connection=1

    • retries = 擷取最大值

    • acks = 全部

    • max.block.ms = Long.Max_Value

  • 針對高生產者輸送量:

    • 緩衝訊息和填充訊息批次 - 調校 buffer.memory、batch.size、linger.ms

    • 調校插槽緩衝區 - receive.buffer.bytes、send.buffer.bytes

  • 為了避免資料遺失,請關閉來源的自動遞交,讓 MirrorMaker 可以控制遞交,通常會在從目的地叢集接收 ack 之後執行此操作。如果生產者具有 acks=all 且目的地叢集將 min.insync.replicas 設定為超過 1,則訊息會保留在目的地的多個代理程式上,之後 MirrorMaker 消費者才會在來源提交偏移。

  • 如果順序很重要,您可以將 retries 設定為 0。或者,對於生產環境,將最大傳輸中連線設定為 1,以確保在批次失敗時發出的批次會按順序遞交。如此一來,每個發送的批次都會重試,直到下一個批次發送出去。如果 max.block.ms 未設定為最大值,且生產者緩衝區已滿,則可能會有資料遺失 (取決於某些其他設定)。這可以阻止取用者和返回壓力。

  • 針對高輸送量

    • 增加緩衝區。記憶體。

    • 增加批次大小。

    • 調校 linger.ms 以允許批次填充。這也允許較佳的壓縮、較少的網路頻寬使用量,以及較少的叢集儲存量。這會導致增加保留。

    • 監控CPU和記憶體用量。

  • 針對高取用者輸送量

    • 增加每個 MirrorMaker 程序的執行緒/取用者數量 — num.streams。

    • 在增加執行緒之前,先增加跨機器 MirrorMaker 的程序數量,以允許高可用性。

    • 先在相同機器上增加 MirrorMaker 程序數目,然後在不同機器上增加程序數目 (群組 ID 相同)。

    • 隔離具有極高輸送量的主題,並使用個別 MirrorMaker 執行個體。

  • 針對管理和設定

    • 使用 Chef AWS CloudFormation 和 Ansible 等 和 組態管理工具。

    • 使用 Amazon EFS掛載讓所有 Amazon EC2執行個體的所有組態檔案都能存取。

    • 使用容器輕鬆擴展和管理 MirrorMaker執行個體。

  • 一般而言,在 中使生產者飽和需要多個消費者 MirrorMaker。所以,設定多個取用者。首先,將它們設定在不同的機器上以提供高可用性。然後,將個別機器擴展為每個分割區具有取用者,讓取用者平均分配在各個機器之間。

  • 對於高輸送量的擷取和傳遞,請調校接收和傳送緩衝區,因為它們的預設值可能太低。為了獲得最佳效能,請確定串流 (num.streams) 總數符合 MirrorMaker 嘗試複製到目的地叢集的所有主題分割區。

MirrorMaker 2.* 的優點

  • 使用 Apache Kafka Connect 框架與生態系統。

  • 偵測新主題和分割區。

  • 自動在叢集間同步主題組態。

  • 支援「作用中/作用中」叢集對,以及任何數量的作用中叢集。

  • 提供新的指標,包括 end-to-end跨多個資料中心和叢集的複寫延遲。

  • 發出在叢集間遷移取用者所需要的位移,並提供位移平移的工具。

  • 相較於每個 MirrorMaker 1.* 程序的低階生產者/消費者屬性, 支援在單一位置指定多個叢集和複寫流程的高階組態檔案。