Použití nástroje MirrorMaker k replikaci témat Apache Kafka s využitím platformy Kafka ve službě HDInsight

Naučte se používat funkci zrcadlení Apache Kafka k replikaci témat do sekundárního clusteru. Zrcadlení můžete spustit jako nepřetržitý proces nebo přerušovaně a migrovat data z jednoho clusteru do druhého.

V tomto článku použijete zrcadlení k replikaci témat mezi dvěma clustery HDInsight. Tyto clustery jsou v různých virtuálních sítích v různých datacentrech.

Upozornění

Nepoužívejte zrcadlení jako prostředek k dosažení odolnosti proti chybám. Posun k položkám v rámci tématu se mezi primárním a sekundárním clusterem liší, takže klienti nemůžou tyto dva clustery zaměnit. Pokud máte obavy o odolnost proti chybám, měli byste nastavit replikaci pro témata v rámci vašeho clusteru. Další informace najdete v tématu Začínáme s Apache Kafka ve službě HDInsight.

Jak funguje zrcadlení Apache Kafka

Zrcadlení funguje pomocí nástroje MirrorMaker , který je součástí Apache Kafka. MirrorMaker využívá záznamy z témat v primárním clusteru a pak vytvoří místní kopii v sekundárním clusteru. MirrorMaker používá jednoho nebo více příjemců , kteří čtou z primárního clusteru, a producenta , který zapisuje do místního (sekundárního) clusteru.

Nejužitečnější nastavení zrcadlení pro zotavení po havárii používá clustery Kafka v různých oblastech Azure. Aby toho bylo dosaženo, jsou virtuální sítě, ve kterých se nacházejí clustery, vzájemně propojené.

Následující diagram znázorňuje proces zrcadlení a tok komunikace mezi clustery:

Diagram procesu zrcadlení

Primární a sekundární clustery se můžou lišit v počtu uzlů a oddílů a liší se také posuny v rámci témat. Zrcadlení udržuje hodnotu klíče, která se používá k dělení, takže pořadí záznamů se zachová na základě jednotlivých klíčů.

Zrcadlení přes hranice sítě

Pokud potřebujete zrcadlit mezi clustery Kafka v různých sítích, je potřeba vzít v úvahu následující další aspekty:

  • Brány: Sítě musí být schopné komunikovat na úrovni protokolu TCP/IP.

  • Adresování serverů: Uzly clusteru můžete adresovat pomocí jejich IP adres nebo plně kvalifikovaných názvů domén.

    • IP adresy: Pokud nakonfigurujete clustery Kafka tak, aby používaly reklamu na IP adresy, můžete pokračovat v nastavení zrcadlení pomocí IP adres zprostředkovatelů a uzlů ZooKeeper.

    • Názvy domén: Pokud nenakonfigurujete clustery Kafka pro inzerování IP adres, musí být clustery schopné se vzájemně připojit pomocí plně kvalifikovaných názvů domén (FQDN). To vyžaduje server DNS (Domain Name System) v každé síti, který je nakonfigurovaný tak, aby předával požadavky do ostatních sítí. Při vytváření virtuální sítě Azure místo automatického DNS poskytovaného se sítí musíte zadat vlastní server DNS a IP adresu serveru. Po vytvoření virtuální sítě musíte vytvořit virtuální počítač Azure, který tuto IP adresu používá. Pak na něj nainstalujete a nakonfigurujete software DNS.

    Důležité

    Před instalací SLUŽBY HDInsight do virtuální sítě vytvořte a nakonfigurujte vlastní server DNS. Aby služba HDInsight používala server DNS nakonfigurovaný pro virtuální síť, nevyžaduje žádnou další konfiguraci.

Další informace o propojení dvou virtuálních sítí Azure najdete v tématu Konfigurace připojení.

Architektura zrcadlení

Tato architektura obsahuje dva clustery v různých skupinách prostředků a virtuálních sítích: primární a sekundární.

Postup vytvoření

  1. Vytvořte dvě nové skupiny prostředků:

    Skupina prostředků Umístění
    kafka-primary-rg USA – střed
    kafka-secondary-rg USA – středosever
  2. Vytvořte novou virtuální síť kafka-primary-vnet v systému kafka-primary-rg. Ponechte výchozí nastavení.

  3. Vytvořte novou virtuální síť kafka-secondary-vnet v systému kafka-secondary-rg, také s výchozím nastavením.

  4. Vytvořte dva nové clustery Kafka:

    Název clusteru Skupina prostředků Virtuální síť Účet úložiště
    kafka-primary-cluster kafka-primary-rg kafka-primary-vnet kafkaprimarystorage
    kafka -secondary-cluster kafka-secondary-rg kafka-secondary-vnet kafkasecondarystorage
  5. Vytvořte partnerské vztahy virtuálních sítí. V tomto kroku se vytvoří dva partnerské vztahy: jeden z kafka-primary-vnet na kafka-secondary-vnet a druhý z kafka-secondary-vnet na kafka-primary-vnet.

    1. Vyberte virtuální síť kafka-primary-vnet .

    2. V části Nastavení vyberte Partnerské vztahy.

    3. Vyberte Přidat.

    4. Na obrazovce Přidat partnerský vztah zadejte podrobnosti, jak je znázorněno na následujícím snímku obrazovky.

      Snímek obrazovky znázorňující přidání partnerského vztahu virtuálních sítí v nástroji H D Insight Kafka

Konfigurace inzerce PROTOKOLU IP

Nakonfigurujte inzerci PROTOKOLU IP tak, aby se klient mohl připojit pomocí IP adres zprostředkovatele místo názvů domén.

  1. Přejděte na řídicí panel Ambari primárního clusteru: https://PRIMARYCLUSTERNAME.azurehdinsight.net.

  2. Vyberte Služby>Kafka. Vyberte kartu Konfigurace .

  3. Do dolní části šablony kafka-env přidejte následující řádky konfigurace. Vyberte Uložit.

    # Configure Kafka to advertise IP addresses instead of FQDN
    IP_ADDRESS=$(hostname -i)
    echo advertised.listeners=$IP_ADDRESS
    sed -i.bak -e '/advertised/{/advertised@/!d;}' /usr/hdp/current/kafka-broker/conf/server.properties
    echo "advertised.listeners=PLAINTEXT://$IP_ADDRESS:9092" >> /usr/hdp/current/kafka-broker/conf/server.properties
    
  4. Na obrazovce Uložit konfiguraci zadejte poznámku a vyberte Uložit.

  5. Pokud se zobrazí upozornění konfigurace, vyberte Přesto pokračovat.

  6. V části Uložit změny konfigurace vyberte OK.

  7. V oznámení Restartovat požadované vyberte Restartovat>všechny ovlivněné. Pak vyberte Potvrdit Restartovat vše.

    Snímek obrazovky znázorňující možnost Apache Ambari pro restartování všech ovlivněných

Konfigurace platformy Kafka pro naslouchání na všech síťových rozhraních

  1. Zůstaňte na kartě Konfigurace v části Služby>Kafka. V části Kafka Broker nastavte vlastnost naslouchacího procesu na PLAINTEXT://0.0.0.0:9092hodnotu .
  2. Vyberte Uložit.
  3. Vyberte Restart ConfirmRestart All (Restartovat> vše).

Záznam IP adres zprostředkovatele a adres ZooKeeper pro primární cluster

  1. Na řídicím panelu Ambari vyberte Hostitelé .

  2. Poznamenejte si IP adresy zprostředkovatelů a zookeeperů. Zprostředkovatelské uzly mají první dvě písmena názvu hostitele a uzly ZooKeeper mají jako první dvě písmena názvu hostitele zk .

    Snímek obrazovky s i p adresami uzlu zobrazení Apache Ambari

  3. Opakujte předchozí tři kroky pro druhý cluster kafka-secondary-cluster: nakonfigurujte inzerci PROTOKOLU IP, nastavte naslouchací procesy a poznamenejte si IP adresy zprostředkovatele a ZooKeeperu.

Vytváření témat

  1. Připojte se k primárnímu clusteru pomocí SSH:

    ssh sshuser@PRIMARYCLUSTER-ssh.azurehdinsight.net
    

    Nahraďte sshuser uživatelským jménem SSH, které jste použili při vytváření clusteru. Nahraďte PRIMARYCLUSTER základním názvem, který jste použili při vytváření clusteru.

    Další informace najdete v tématu Použití SSH se službou HDInsight.

  2. Pomocí následujícího příkazu vytvořte dvě proměnné prostředí s hostiteli Apache ZooKeeper a zprostředkovatelskými hostiteli pro primární cluster. Nahraďte řetězce jako ZOOKEEPER_IP_ADDRESS1 skutečnými DŘÍVE zaznamenanými IP adresami, například 10.23.0.11 a 10.23.0.7. Totéž platí pro BROKER_IP_ADDRESS1. Pokud používáte překlad plně kvalifikovaných názvů domén s vlastním serverem DNS, pomocí následujícího postupu získejte názvy zprostředkovatele a ZooKeeperu.

    # get the ZooKeeper hosts for the primary cluster
    export PRIMARY_ZKHOSTS='ZOOKEEPER_IP_ADDRESS1:2181, ZOOKEEPER_IP_ADDRESS2:2181, ZOOKEEPER_IP_ADDRESS3:2181'
    
    # get the broker hosts for the primary cluster
    export PRIMARY_BROKERHOSTS='BROKER_IP_ADDRESS1:9092,BROKER_IP_ADDRESS2:9092,BROKER_IP_ADDRESS2:9092'
    
  3. K vytvoření tématu s názvem testtopicpoužijte následující příkaz:

    /usr/hdp/current/kafka-broker/bin/kafka-topics.sh --create --replication-factor 2 --partitions 8 --topic testtopic --zookeeper $PRIMARY_ZKHOSTS
    
  4. Pomocí následujícího příkazu ověřte, že se téma vytvořilo:

    /usr/hdp/current/kafka-broker/bin/kafka-topics.sh --list --zookeeper $PRIMARY_ZKHOSTS
    

    Odpověď obsahuje testtopic.

  5. Pomocí následujícího postupu můžete zobrazit informace o hostiteli zprostředkovatele pro tento (primární) cluster:

    echo $PRIMARY_BROKERHOSTS
    

    Vrátí se informace podobné následujícímu textu:

    10.23.0.11:9092,10.23.0.7:9092,10.23.0.9:9092

    Tyto informace si uložte. Použije se v další části.

Konfigurace zrcadlení

  1. Připojte se k sekundárnímu clusteru pomocí jiné relace SSH:

    ssh sshuser@SECONDARYCLUSTER-ssh.azurehdinsight.net
    

    Nahraďte sshuser uživatelským jménem SSH, které jste použili při vytváření clusteru. Nahraďte SECONDARYCLUSTER názvem, který jste použili při vytváření clusteru.

    Další informace najdete v tématu Použití SSH se službou HDInsight.

  2. Ke konfiguraci komunikace s primárním clusterem consumer.properties použijte soubor . K vytvoření souboru použijte následující příkaz:

    nano consumer.properties
    

    Jako obsah consumer.properties souboru použijte následující text:

    bootstrap.servers=PRIMARY_BROKERHOSTS
    group.id=mirrorgroup
    

    Nahraďte PRIMARY_BROKERHOSTS IP adresami hostitele zprostředkovatele z primárního clusteru.

    Tento soubor popisuje informace o spotřebiteli, které se mají použít při čtení z primárního clusteru Kafka. Další informace najdete v tématu Konfigurace příjemců na adrese kafka.apache.org.

    Pokud chcete soubor uložit, stiskněte Ctrl+X, Y a pak enter.

  3. Před konfigurací producenta, který komunikuje se sekundárním clusterem, nastavte proměnnou pro IP adresy zprostředkovatele sekundárního clusteru. K vytvoření této proměnné použijte následující příkazy:

    export SECONDARY_BROKERHOSTS='BROKER_IP_ADDRESS1:9092,BROKER_IP_ADDRESS2:9092,BROKER_IP_ADDRESS2:9092'
    

    Příkaz echo $SECONDARY_BROKERHOSTS by měl vrátit informace podobné následujícímu textu:

    10.23.0.14:9092,10.23.0.4:9092,10.23.0.12:9092

  4. Ke komunikaci sekundárního clusteru producer.properties použijte soubor. K vytvoření souboru použijte následující příkaz:

    nano producer.properties
    

    Jako obsah producer.properties souboru použijte následující text:

    bootstrap.servers=SECONDARY_BROKERHOSTS
    compression.type=none
    

    Nahraďte SECONDARY_BROKERHOSTS IP adresami zprostředkovatele, které jste použili v předchozím kroku.

    Další informace najdete v tématu Konfigurace producenta na adrese kafka.apache.org.

  5. Pomocí následujících příkazů vytvořte proměnnou prostředí s IP adresami hostitelů ZooKeeper pro sekundární cluster:

    # get the ZooKeeper hosts for the secondary cluster
    export SECONDARY_ZKHOSTS='ZOOKEEPER_IP_ADDRESS1:2181,ZOOKEEPER_IP_ADDRESS2:2181,ZOOKEEPER_IP_ADDRESS3:2181'
    
  6. Výchozí konfigurace kafka ve službě HDInsight neumožňuje automatické vytváření témat. Před zahájením procesu zrcadlení musíte použít jednu z následujících možností:

    • Vytvoření témat v sekundárním clusteru: Tato možnost umožňuje také nastavit počet oddílů a faktor replikace.

      Témata můžete vytvořit předem pomocí následujícího příkazu:

      /usr/hdp/current/kafka-broker/bin/kafka-topics.sh --create --replication-factor 2 --partitions 8 --topic testtopic --zookeeper $SECONDARY_ZKHOSTS
      

      Nahraďte testtopic názvem tématu, které chcete vytvořit.

    • Konfigurace clusteru pro automatické vytváření témat: Tato možnost umožňuje nástroji MirrorMaker automaticky vytvářet témata. Upozorňujeme, že je může vytvořit s jiným počtem oddílů nebo jiným faktorem replikace než primární téma.

      Pokud chcete nakonfigurovat sekundární cluster tak, aby automaticky vytvářel témata, postupujte takto:

      1. Přejděte na řídicí panel Ambari pro sekundární cluster: https://SECONDARYCLUSTERNAME.azurehdinsight.net.
      2. Vyberte Services>Kafka. Pak vyberte kartu Konfigurace .
      3. Do pole Filtr zadejte hodnotu auto.create. Tím se vyfiltruje seznam vlastností a zobrazí se auto.create.topics.enable nastavení.
      4. Změňte hodnotu auto.create.topics.enable na truea pak vyberte Uložit. Přidejte poznámku a pak znovu vyberte Uložit .
      5. Vyberte službu Kafka , vyberte Restartovat a pak vyberte Restartovat všechny ovlivněné. Po zobrazení výzvy vyberte Potvrdit restartování všech.

      Snímek obrazovky, který ukazuje, jak povolit automatické vytváření témat ve službě Kafka

Spustit MirrorMaker

Poznámka

Tento článek obsahuje odkazy na termín, který už microsoft nepoužívá. Po odebrání termínu ze softwaru ho z tohoto článku odebereme.

  1. Z připojení SSH k sekundárnímu clusteru spusťte proces MirrorMaker pomocí následujícího příkazu:

    /usr/hdp/current/kafka-broker/bin/kafka-run-class.sh kafka.tools.MirrorMaker --consumer.config consumer.properties --producer.config producer.properties --whitelist testtopic --num.streams 4
    

    V tomto příkladu se používají parametry:

    Parametr Popis
    --consumer.config Určuje soubor, který obsahuje vlastnosti příjemce. Tyto vlastnosti použijete k vytvoření příjemce, který čte z primárního clusteru Kafka.
    --producer.config Určuje soubor, který obsahuje vlastnosti producenta. Pomocí těchto vlastností vytvoříte producenta, který zapisuje do sekundárního clusteru Kafka.
    --whitelist Seznam témat, která Nástroj MirrorMaker replikuje z primárního clusteru do sekundárního.
    --num.streams Počet vláken příjemce, která se mají vytvořit.

    Příjemce na sekundárním uzlu teď čeká na příjem zpráv.

  2. Z připojení SSH k primárnímu clusteru pomocí následujícího příkazu spusťte producenta a odešlete zprávy do tématu:

    /usr/hdp/current/kafka-broker/bin/kafka-console-producer.sh --broker-list $PRIMARY_BROKERHOSTS --topic testtopic
    

    Když kurzorem přejdete na prázdný řádek, zadejte několik textových zpráv. Zprávy se odesílají do tématu v primárním clusteru. Až budete hotovi, ukončete proces producenta stisknutím kláves Ctrl+C.

  3. Z připojení SSH k sekundárnímu clusteru ukončete proces MirrorMakeru stisknutím kláves Ctrl+C. Dokončení procesu může trvat několik sekund. Pokud chcete ověřit, že se zprávy replikovaly do sekundární databáze, použijte následující příkaz:

    /usr/hdp/current/kafka-broker/bin/kafka-console-consumer.sh --bootstrap-server $SECONDARY_BROKERHOSTS --topic testtopic --from-beginning
    

    Seznam témat teď obsahuje testtopic, který se vytvoří, když MirrorMaster zrcadlí téma z primárního clusteru do sekundárního. Zprávy načtené z tématu jsou stejné jako zprávy, které jste zadali v primárním clusteru.

Odstranění clusteru

Upozornění

Fakturace za clustery HDInsight se účtuje po minutách bez ohledu na to, jestli je používáte, nebo ne. Po dokončení používání clusteru nezapomeňte odstranit. Přečtěte si , jak odstranit cluster HDInsight.

Kroky v tomto článku vytvořily clustery v různých skupinách prostředků Azure. Pokud chcete odstranit všechny vytvořené prostředky, můžete odstranit dvě vytvořené skupiny prostředků: kafka-primary-rg a kafka-secondary-rg. Odstraněním skupin prostředků odeberete všechny prostředky vytvořené podle tohoto článku, včetně clusterů, virtuálních sítí a účtů úložiště.

Další kroky

V tomto článku jste zjistili, jak pomocí nástroje MirrorMaker vytvořit repliku clusteru Apache Kafka . Další způsoby práce se systémem Kafka najdete na následujících odkazech: