將資料複寫至次要叢集

已完成

Kafka 通常會部署在多個環境中,以進行災害復原、高可用性,以及內部部署至雲端混合式情節。 這些情節需要使用 Apache Kafka 的鏡像功能,將資料從一個 Kafka 執行個體複寫到另一個執行個體。 鏡像可以當作連續程序執行,或間歇地用做將資料從一個叢集移轉到另一個叢集的方法。

不應將鏡像視為促成容錯的方法。 主題內項目的位移在主要叢集與次要叢集之間有所不同,所以用戶端無法交替使用這兩者。

鏡像的運作方式?

鏡像的運作方式是使用 MirrorMaker 工具 (Apache Kafka 的一部分),從主要叢集上的主題中取用記錄,然後在次要叢集上建立本機複本。 MirrorMaker 會使用一個或多個從主要叢集讀取的取用者,以及一個寫入至本機次要叢集的生產者。

災害復原的最有用鏡像設定會利用不同 Azure 區域中的 Kafka 叢集。 為了達成此目的,叢集所在的虛擬網路會對等互連。

下圖說明鏡像程序以及通訊在叢集之間的流動方式:

Mirroring Apache Kafka architecture

主要與次要叢集的節點與磁碟分割數目可能有所不同,且主題內的位移也會不同。 鏡像會維護用於資料分割的機碼值,因此會根據每個機碼保留記錄順序。

跨網路界限鏡像

如果您需要在不同網路中的 Kafka 叢集之間進行鏡像,請注意下列其他考量:

  • 閘道:網路必須能夠在 TCP/IP 層級進行通訊。
  • 伺服器定址:您可以選擇使用 IP 位址或完整網域名稱來定址叢集節點。
    • IP 位址:如果您將 Kafka 叢集設定為使用 IP 位址公告,則可以使用訊息代理程式節點和 Zookeeper 節點的 IP 位址,繼續進行鏡像設定。
    • 網域名稱:如果您未設定 Kafka 叢集進行 IP 位址公告,叢集必須能夠使用完整網域名稱 (FQDN) 彼此連接。 這需要每個網路中的網域名稱系統 (DNS) 伺服器設定為將要求轉送到其他網路。 建立 Azure 虛擬網路時,您必須指定自訂 DNS 伺服器和伺服器的 IP 位址,而不是使用網路所提供的自動 DNS。 建立虛擬網路之後,您必須建立使用該 IP 位址的 Azure 虛擬機器,然後在該機器上安裝和設定 DNS 軟體。

警告

將 HDInsight 安裝到虛擬網路之前,先建立和設定自訂 DNS 伺服器。 HDInsight 不需要額外的設定,即可使用虛擬網路設定的 DNS 伺服器。