A MirrorMaker használata Apache Kafka-témakörök replikálására a Kafka on HDInsight esetében
Megtudhatja, hogyan replikálhatja a témaköröket egy másodlagos fürtre az Apache Kafka tükrözési funkciójával. A tükrözést folyamatos folyamatként vagy időszakosan futtathatja az adatok egyik fürtről a másikra való migrálásához.
Ebben a cikkben tükrözés használatával replikálja a témaköröket két HDInsight-fürt között. Ezek a fürtök különböző virtuális hálózatokban találhatók különböző adatközpontokban.
Figyelmeztetés
Ne használjon tükrözést eszközként a hibatűrés eléréséhez. A témakör elemeinek eltolása különbözik az elsődleges és a másodlagos fürtök között, így az ügyfelek nem használhatják a kettőt felcserélhetően. Ha a hibatűrés miatt aggódik, állítsa be a fürtön belüli témakörök replikációját. További információ: Ismerkedés az Apache Kafkával a HDInsighton.
Az Apache Kafka-tükrözés működése
A tükrözés az Apache Kafka részét képező MirrorMaker eszközzel működik. A MirrorMaker az elsődleges fürt témaköreiből származó rekordokat használja fel, majd létrehoz egy helyi másolatot a másodlagos fürtön. A MirrorMaker egy (vagy több) felhasználót használ, aki az elsődleges fürtből olvas, és egy gyártót , amely a helyi (másodlagos) fürtbe ír.
A vészhelyreállítás leghatékonyabb tükrözési beállítása kafka-fürtöket használ a különböző Azure-régiókban. Ennek elérése érdekében a fürtöket tároló virtuális hálózatok társviszonyban vannak egymással.
Az alábbi ábra a tükrözési folyamatot és a fürtök közötti kommunikáció áramlását mutatja be:
Az elsődleges és másodlagos fürtök eltérőek lehetnek a csomópontok és partíciók számában, és a témakörökben lévő eltolások is eltérőek. A tükrözés megőrzi a particionáláshoz használt kulcsértéket, így a rekord sorrendje kulcsonként megmarad.
Tükrözés a hálózati határok között
Ha különböző hálózatokban lévő Kafka-fürtök között kell tükröznie, az alábbi további szempontokat kell figyelembe vennie:
Átjárók: A hálózatoknak TCP/IP szinten kell tudniuk kommunikálni.
Kiszolgálócímzés: Dönthet úgy, hogy a fürtcsomópontokat ip-címük vagy teljes tartománynevük alapján kezeli.
IP-címek: Ha úgy konfigurálja a Kafka-fürtöket, hogy IP-címhirdetést használjon, folytathatja a tükrözés beállítását a közvetítő csomópontok ÉS a ZooKeeper-csomópontok IP-címeivel.
Tartománynevek: Ha nem konfigurálja a Kafka-fürtöket IP-címek hirdetéséhez, a fürtöknek teljes tartománynevek (FQDN-k) használatával kell tudniuk csatlakozni egymáshoz. Ehhez minden hálózatban rendelkeznie kell egy DNS-kiszolgálóval, amely úgy van konfigurálva, hogy a kéréseket a többi hálózatnak továbbítsa. Azure-beli virtuális hálózat létrehozásakor a hálózathoz megadott automatikus DNS helyett meg kell adnia egy egyéni DNS-kiszolgálót és a kiszolgáló IP-címét. A virtuális hálózat létrehozása után létre kell hoznia egy Azure-beli virtuális gépet, amely ezt az IP-címet használja. Ezután telepíti és konfigurálja a DNS-szoftvereket.
Fontos
A HDInsight virtuális hálózatba való telepítése előtt hozza létre és konfigurálja az egyéni DNS-kiszolgálót. Nincs szükség további konfigurációra a HDInsight számára a virtuális hálózathoz konfigurált DNS-kiszolgáló használatához.
További információ két Azure-beli virtuális hálózat csatlakoztatásáról: Kapcsolat konfigurálása.
Tükrözési architektúra
Ez az architektúra két fürtöt tartalmaz különböző erőforráscsoportokban és virtuális hálózatokban: egy elsődleges és egy másodlagos.
Létrehozási lépések
Hozzon létre két új erőforráscsoportot:
Erőforráscsoport Hely kafka-primary-rg Az USA középső régiója kafka-secondary-rg USA északi középső régiója Hozzon létre egy új kafka-primary-vnet virtuális hálózatot a kafka-primary-rg fájlban. Hagyja meg az alapértelmezett beállításokat.
Hozzon létre egy új kafka-secondary-vnet virtuális hálózatot a kafka-secondary-rg fájlban, szintén az alapértelmezett beállításokkal.
Hozzon létre két új Kafka-fürtöt:
Fürt neve Erőforráscsoport Virtuális hálózat Tárfiók kafka-primary-cluster kafka-primary-rg kafka-primary-vnet kafkaprimarystorage kafka-secondary-cluster kafka-secondary-rg kafka-secondary-vnet kafkasecondarystorage Virtuális hálózati társviszonyok létrehozása. Ez a lépés két társviszonyt hoz létre: egyet a kafka-primary-vnet és a kafka-secondary-vnet között, egyet pedig a kafka-secondary-vnetrőla kafka-primary-vnetre.
Válassza ki a kafka-primary-vnet virtuális hálózatot.
A Beállítások területen válassza a Társviszonyok lehetőséget.
Válassza a Hozzáadás lehetőséget.
A Társviszony hozzáadása képernyőn adja meg a részleteket az alábbi képernyőképen látható módon.
IP-hirdetések konfigurálása
Konfigurálja az IP-hirdetéseket úgy, hogy az ügyfél a tartománynevek helyett közvetítői IP-címekkel csatlakozzon.
Nyissa meg az elsődleges fürt Ambari-irányítópultját:
https://PRIMARYCLUSTERNAME.azurehdinsight.net
.Válassza a Szolgáltatások>Kafka lehetőséget. Válassza a Konfigurációk lapot.
Adja hozzá a következő konfigurációs sorokat az alsó kafka-env sablonszakaszhoz . Kattintson a Mentés gombra.
# 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
Írjon be egy megjegyzést a Konfiguráció mentése képernyőn, és válassza a Mentés lehetőséget.
Ha konfigurációs figyelmeztetést kap, válassza a Folytatás mindenképpen lehetőséget.
A Konfigurációs módosítások mentése területen válassza az OK gombot.
Az Újraindítás szükséges értesítésben válassza aMinden érintett újraindítása lehetőséget>. Ezután válassza az Összes újraindításának megerősítése lehetőséget.
A Kafka konfigurálása az összes hálózati adapter figyelésére
- Maradjon a Konfigurációk lapon a Services>Kafka alatt. A Kafka Broker szakaszban állítsa a figyelők tulajdonságot a értékre
PLAINTEXT://0.0.0.0:9092
. - Kattintson a Mentés gombra.
- Válassza az Újraindítás újraindítása>Az összes újraindításának megerősítése lehetőséget.
Rekordközvetítő IP-címei és ZooKeeper-címei az elsődleges fürthöz
Válassza a Gazdagépek lehetőséget az Ambari irányítópultján.
Jegyezze fel a közvetítők és a ZooKeepers IP-címeit. A közvetítőcsomópontok a gazdagép nevének első két betűjeként, a ZooKeeper csomópontok pedig a gazdanév első két betűjeként zk betűvel rendelkeznek.
Ismételje meg az előző három lépést a második fürthöz, a kafka-secondary-clusterhez: konfigurálja az IP-hirdetéseket, állítsa be a figyelőket, és jegyezze fel a közvetítőt és a ZooKeeper IP-címeit.
Témakörök létrehozása
Csatlakozzon az elsődleges fürthöz az SSH használatával:
ssh sshuser@PRIMARYCLUSTER-ssh.azurehdinsight.net
Cserélje le a elemet
sshuser
a fürt létrehozásakor használt SSH-felhasználónévre. Cserélje lePRIMARYCLUSTER
a elemet a fürt létrehozásakor használt alapnévre.További információ: SSH használata HDInsighttal.
Az alábbi paranccsal két környezeti változót hozhat létre az Elsődleges fürt Apache ZooKeeper-gazdagépeivel és közvetítő gazdagépeivel. Cserélje le az olyan sztringeket, mint
ZOOKEEPER_IP_ADDRESS1
a korábban rögzített tényleges IP-címek, például10.23.0.11
a és10.23.0.7
a. Ugyanez vonatkozik a következőre:BROKER_IP_ADDRESS1
. Ha az FQDN-feloldás egyéni DNS-kiszolgálóval van használatban, kövesse az alábbi lépéseket a közvetítő és a ZooKeeper-nevek lekéréséhez.# 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'
A nevű
testtopic
témakör létrehozásához használja a következő parancsot:/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --create --replication-factor 2 --partitions 8 --topic testtopic --zookeeper $PRIMARY_ZKHOSTS
A témakör létrehozásának ellenőrzéséhez használja az alábbi parancsot:
/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --list --zookeeper $PRIMARY_ZKHOSTS
A válasz tartalmazza a következőt:
testtopic
.Az alábbi módon tekintheti meg a (elsődleges) fürt közvetítő gazdagépadatait:
echo $PRIMARY_BROKERHOSTS
Ez a következő szöveghez hasonló információkat ad vissza:
10.23.0.11:9092,10.23.0.7:9092,10.23.0.9:9092
Mentse ezeket az adatokat. Ezt a következő szakaszban használjuk.
Tükrözés konfigurálása
Csatlakozzon a másodlagos fürthöz egy másik SSH-munkamenet használatával:
ssh sshuser@SECONDARYCLUSTER-ssh.azurehdinsight.net
Cserélje le a elemet
sshuser
a fürt létrehozásakor használt SSH-felhasználónévre. Cserélje leSECONDARYCLUSTER
a elemet a fürt létrehozásakor használt névre.További információ: SSH használata HDInsighttal.
consumer.properties
Fájl használatával konfigurálja az elsődleges fürttel folytatott kommunikációt. A fájl létrehozásához használja a következő parancsot:nano consumer.properties
A fájl tartalmaként használja a
consumer.properties
következő szöveget:bootstrap.servers=PRIMARY_BROKERHOSTS group.id=mirrorgroup
Cserélje le
PRIMARY_BROKERHOSTS
a elemet az elsődleges fürt közvetítő gazdagépének IP-címére.Ez a fájl az elsődleges Kafka-fürtből való olvasáskor használandó fogyasztói adatokat ismerteti. További információ: Fogyasztói konfigurációk itt
kafka.apache.org
: .A fájl mentéséhez nyomja le a Ctrl+X billentyűkombinációt, nyomja le az Y billentyűt, majd nyomja le az Enter billentyűt.
Mielőtt konfigurálná a másodlagos fürttel kommunikáló gyártót, állítson be egy változót a másodlagos fürt közvetítő IP-címéhez. A változó létrehozásához használja az alábbi parancsokat:
export SECONDARY_BROKERHOSTS='BROKER_IP_ADDRESS1:9092,BROKER_IP_ADDRESS2:9092,BROKER_IP_ADDRESS2:9092'
A parancsnak
echo $SECONDARY_BROKERHOSTS
az alábbi szöveghez hasonló információkat kell visszaadnia:10.23.0.14:9092,10.23.0.4:9092,10.23.0.12:9092
Használjon egy
producer.properties
fájlt a másodlagos fürt kommunikációjára. A fájl létrehozásához használja a következő parancsot:nano producer.properties
A fájl tartalmaként használja a
producer.properties
következő szöveget:bootstrap.servers=SECONDARY_BROKERHOSTS compression.type=none
Cserélje le a elemet
SECONDARY_BROKERHOSTS
az előző lépésben használt közvetítői IP-címekre.További információ: Producer Configs at
kafka.apache.org
.A következő parancsokkal hozzon létre egy környezeti változót a zooKeeper-gazdagépek IP-címeivel a másodlagos fürthöz:
# get the ZooKeeper hosts for the secondary cluster export SECONDARY_ZKHOSTS='ZOOKEEPER_IP_ADDRESS1:2181,ZOOKEEPER_IP_ADDRESS2:2181,ZOOKEEPER_IP_ADDRESS3:2181'
A HDInsight-alapú Kafka alapértelmezett konfigurációja nem teszi lehetővé a témakörök automatikus létrehozását. A tükrözési folyamat megkezdése előtt az alábbi lehetőségek egyikét kell használnia:
Hozza létre a témaköröket a másodlagos fürtön: Ezzel a beállítással a partíciók számát és a replikációs tényezőt is beállíthatja.
A témaköröket az alábbi paranccsal hozhatja létre előre:
/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --create --replication-factor 2 --partitions 8 --topic testtopic --zookeeper $SECONDARY_ZKHOSTS
Cserélje le
testtopic
a elemet a létrehozandó témakör nevére.Konfigurálja a fürtöt az automatikus témakörlétrehozáshoz: Ezzel a beállítással a MirrorMaker automatikusan létrehozhat témaköröket. Vegye figyelembe, hogy azokat az elsődleges témakörhöz képest eltérő számú partícióval vagy más replikációs tényezővel hozhatja létre.
Ha a másodlagos fürtöt úgy szeretné konfigurálni, hogy automatikusan hozzon létre témaköröket, hajtsa végre az alábbi lépéseket:
- Nyissa meg a másodlagos fürt Ambari-irányítópultját:
https://SECONDARYCLUSTERNAME.azurehdinsight.net
. - Válassza a Szolgáltatások>Kafka lehetőséget. Ezután válassza a Konfigurációk lapot.
- A Szűrő mezőben adjon meg egy értéket.
auto.create
Ez szűri a tulajdonságok listáját, és megjeleníti aauto.create.topics.enable
beállítást. - Módosítsa a értékét a értékre
auto.create.topics.enable
true
, majd válassza a Mentés lehetőséget. Vegyen fel egy megjegyzést, majd válassza ismét a Mentés lehetőséget. - Válassza a Kafka szolgáltatást, válassza az Újraindítás, majd az Összes érintett újraindítása lehetőséget. Amikor a rendszer kéri, válassza az Összes újraindításának megerősítése lehetőséget.
- Nyissa meg a másodlagos fürt Ambari-irányítópultját:
A MirrorMaker indítása
Megjegyzés
Ez a cikk a Microsoft által már nem használt kifejezésre mutató hivatkozásokat tartalmaz. Ha a kifejezés el lesz távolítva a szoftverből, eltávolítjuk ebből a cikkből.
A másodlagos fürthöz való SSH-kapcsolatból a következő paranccsal indítsa el a MirrorMaker-folyamatot:
/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
A példában használt paraméterek a következők:
Paraméter Leírás --consumer.config
Meghatározza a fogyasztói tulajdonságokat tartalmazó fájlt. Ezekkel a tulajdonságokkal olyan fogyasztót hozhat létre, amely az elsődleges Kafka-fürtből olvas. --producer.config
Meghatározza az előállítói tulajdonságokat tartalmazó fájlt. Ezekkel a tulajdonságokkal hozhat létre egy gyártót, amely a másodlagos Kafka-fürtbe ír. --whitelist
A MirrorMaker által az elsődleges fürtről a másodlagosra replikált témakörök listája. --num.streams
A létrehozandó fogyasztói szálak száma. A másodlagos csomóponton lévő fogyasztó most arra vár, hogy üzeneteket fogadjon.
Az elsődleges fürthöz való SSH-kapcsolatból az alábbi paranccsal indítsa el a gyártót, és küldjön üzeneteket a témakörnek:
/usr/hdp/current/kafka-broker/bin/kafka-console-producer.sh --broker-list $PRIMARY_BROKERHOSTS --topic testtopic
Amikor egy kurzorral ellátott üres sorba érkezik, írjon be néhány szöveges üzenetet. A rendszer elküldi az üzeneteket az elsődleges fürt témakörének. Ha elkészült, a Ctrl+C billentyűkombinációval fejezhesse be az előállítói folyamatot.
A Másodlagos fürthöz való SSH-kapcsolatról a Ctrl+C billentyűkombinációt lenyomva fejezhesse be a MirrorMaker-folyamatot. A folyamat befejezése több másodpercet is igénybe vehet. Annak ellenőrzéséhez, hogy az üzenetek replikálva lettek-e a másodlagosra, használja a következő parancsot:
/usr/hdp/current/kafka-broker/bin/kafka-console-consumer.sh --bootstrap-server $SECONDARY_BROKERHOSTS --topic testtopic --from-beginning
A témakörök listája mostantól tartalmazza a
testtopic
témakört, amely akkor jön létre, amikor a MirrorMaster az elsődleges fürtről a másodlagosra tükrözi a témakört. A témakörből lekért üzenetek megegyeznek az elsődleges fürtön megadott üzenetekkel.
A fürt törlése
Figyelmeztetés
A HDInsight-fürtök számlázása percenként történik, függetlenül attól, hogy használja-e őket. A használat befejezése után mindenképpen törölje a fürtöt. Tekintse meg , hogyan törölhet HDInsight-fürtöt.
A cikkben ismertetett lépések különböző Azure-erőforráscsoportokban hoztak létre fürtöket. Az összes létrehozott erőforrás törléséhez törölheti a létrehozott két erőforráscsoportot: kafka-primary-rg és kafka-secondary-rg. Az erőforráscsoportok törlése eltávolítja a cikk alapján létrehozott összes erőforrást, beleértve a fürtöket, a virtuális hálózatokat és a tárfiókokat.
Következő lépések
Ebben a cikkben megtanulhatta, hogyan hozhat létre egy Apache Kafka-fürt replikáját a MirrorMaker használatával. Az alábbi hivatkozásokon megismerheti a Kafkával való munkavégzés egyéb módjait: