MirrorMaker kullanarak Apache Kafka konularını HDInsight üzerinde Kafka ile çoğaltma

Konuları ikincil kümeye çoğaltmak için Apache Kafka'nın yansıtma özelliğini kullanmayı öğrenin. Yansıtmayı sürekli bir işlem olarak veya aralıklı olarak çalıştırarak verileri bir kümeden diğerine geçirebilirsiniz.

Bu makalede, iki HDInsight kümesi arasında konuları çoğaltmak için yansıtmayı kullanacaksınız. Bu kümeler farklı veri merkezlerindeki farklı sanal ağlarda yer alır.

Uyarı

Yansıtmayı hataya dayanıklılık elde etmek için bir araç olarak kullanmayın. Bir konu başlığındaki öğelere uzaklık birincil ve ikincil kümeler arasında farklıdır, bu nedenle istemciler ikisini birbirinin yerine kullanamaz. Hataya dayanıklılık konusunda endişeleriniz varsa kümenizdeki konular için çoğaltmayı ayarlamanız gerekir. Daha fazla bilgi için bkz. HDInsight üzerinde Apache Kafka'yı kullanmaya başlama.

Apache Kafka yansıtması nasıl çalışır?

Yansıtma, Apache Kafka'nın parçası olan MirrorMaker aracını kullanarak çalışır. MirrorMaker, birincil kümedeki konulardan kayıtları tüketir ve ardından ikincil kümede yerel bir kopya oluşturur. MirrorMaker, birincil kümeden okuyan bir (veya daha fazla) tüketici ve yerel (ikincil) kümeye yazan bir üretici kullanır.

Olağanüstü durum kurtarma için en kullanışlı yansıtma kurulumu, farklı Azure bölgelerindeki Kafka kümelerini kullanır. Bunu başarmak için, kümelerin bulunduğu sanal ağlar birlikte eşlenir.

Aşağıdaki diyagramda yansıtma işlemi ve iletişimin kümeler arasında nasıl aktığı gösterilmektedir:

Yansıtma işleminin diyagramı.

Birincil ve ikincil kümeler düğüm ve bölüm sayısında farklı olabilir ve konu başlıkları içindeki uzaklıklar da farklıdır. Yansıtma bölümleme için kullanılan anahtar değerini korur, bu nedenle kayıt sırası anahtar temelinde korunur.

Ağ sınırları arasında yansıtma

Farklı ağlardaki Kafka kümeleri arasında yansıtma yapmanız gerekiyorsa, aşağıdaki ek noktalar vardır:

  • Ağ geçitleri: Ağların TCP/IP düzeyinde iletişim kurabilmesi gerekir.

  • Sunucu adresleme: Küme düğümlerinizi IP adreslerini veya tam etki alanı adlarını kullanarak ele almayı seçebilirsiniz.

    • IP adresleri: Kafka kümelerinizi IP adresi reklamlarını kullanacak şekilde yapılandırıyorsanız, aracı düğümlerinin ve ZooKeeper düğümlerinin IP adreslerini kullanarak yansıtma kurulumuna devam edebilirsiniz.

    • Etki alanı adları: Kafka kümelerinizi IP adresi reklamları için yapılandırmazsanız, kümelerin tam etki alanı adlarını (FQDN' ler) kullanarak birbirine bağlanabilmesi gerekir. Bu, istekleri diğer ağlara iletmek üzere yapılandırılmış her ağda bir etki alanı adı sistemi (DNS) sunucusu gerektirir. Azure sanal ağı oluştururken, ağ ile sağlanan otomatik DNS'yi kullanmak yerine özel bir DNS sunucusu ve sunucu için IP adresi belirtmeniz gerekir. Sanal ağı oluşturduktan sonra, bu IP adresini kullanan bir Azure sanal makinesi oluşturmanız gerekir. Ardından DNS yazılımını yükleyip yapılandırabilirsiniz.

    Önemli

    HDInsight'ı sanal ağa yüklemeden önce özel DNS sunucusunu oluşturun ve yapılandırın. HDInsight'ın sanal ağ için yapılandırılmış DNS sunucusunu kullanması için ek yapılandırma gerekmez.

İki Azure sanal ağını bağlama hakkında daha fazla bilgi için bkz. Bağlantı yapılandırma.

Yansıtma mimarisi

Bu mimaride farklı kaynak gruplarında ve sanal ağlarda iki küme bulunur: birincil ve ikincil.

Oluşturma adımları

  1. İki yeni kaynak grubu oluşturun:

    Kaynak grubu Konum
    kafka-primary-rg Central US
    kafka-secondary-rg Orta Kuzey ABD
  2. kafka-primary-rg içinde yeni bir kafka-primary-vnet sanal ağı oluşturun. Varsayılan ayarları değiştirmeyin.

  3. Kafka-secondary-rg içinde, varsayılan ayarlarla yeni bir sanal ağ kafka-secondary-vnet oluşturun.

  4. İki yeni Kafka kümesi oluşturun:

    Küme adı Kaynak grubu Sanal ağ Depolama hesabı
    kafka-primary-cluster kafka-primary-rg kafka-primary-vnet kafkaprimarystorage
    kafka-secondary-cluster kafka-secondary-rg kafka-secondary-vnet kafkasecondarystorage
  5. Sanal ağ eşlemeleri oluşturun. Bu adım iki eşleme oluşturur: biri kafka-primary-vnet'tenkafka-secondary-vnet'e ve diğeri kafka-secondary-vnet'tenkafka-primary-vnet'e geri döner.

    1. kafka-primary-vnet sanal ağını seçin.

    2. Ayarlar'ın altında Eşlemeler'i seçin.

    3. Add (Ekle) seçeneğini belirleyin.

    4. Eşleme ekle ekranında, aşağıdaki ekran görüntüsünde gösterildiği gibi ayrıntıları girin.

      H D Insight Kafka'nın sanal ağ eşlemesi eklemeyi gösteren ekran görüntüsü.

IP reklamlarını yapılandırma

İstemcinin etki alanı adları yerine aracı IP adreslerini kullanarak bağlanmasını sağlamak için IP reklamını yapılandırın.

  1. Birincil kümenin Ambari panosuna gidin: https://PRIMARYCLUSTERNAME.azurehdinsight.net.

  2. Hizmetler>Kafka'ya tıklayın. Yapılandırmalar sekmesini seçin.

  3. Aşağıdaki yapılandırma satırlarını kafka-env şablonunun alt bölümüne ekleyin. Kaydet’i seçin.

    # 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. Yapılandırmayı Kaydet ekranına bir not girin ve Kaydet'i seçin.

  5. Yapılandırma uyarısı alırsanız Yine de Devam Et'i seçin.

  6. Yapılandırma Değişikliklerini Kaydet'teTamam'ı seçin.

  7. Yeniden Başlat Gerekli bildiriminde Yeniden Başlat>Etkilenen Tümünü Yeniden Başlat'ı seçin. Ardından Tümünü Yeniden Başlat'ı onayla'yı seçin.

    Etkilenenlerin tümünü yeniden başlatmak için Apache Ambari seçeneğini gösteren ekran görüntüsü.

Kafka'nın tüm ağ arabirimlerini dinleyecek şekilde yapılandırılması

  1. Hizmetler>Kafka'nın altındaki Yapılandırmalar sekmesinde kalın. Kafka Aracısı bölümünde listeners özelliğini olarak PLAINTEXT://0.0.0.0:9092ayarlayın.
  2. Kaydet’i seçin.
  3. Yeniden Başlat>Tümünü Yeniden Başlat'ı seçin.

Birincil küme için aracı IP adreslerini ve ZooKeeper adreslerini kaydetme

  1. Ambari panosunda Konaklar'ı seçin.

  2. Aracıların ve ZooKeeper'ların IP adreslerini not edin. Aracı düğümleri ana bilgisayar adının ilk iki harfi olarak wn , ZooKeeper düğümleri ise konak adının ilk iki harfi olarak zk'ye sahiptir.

    Apache Ambari görünüm düğümünü i p adreslerini gösteren ekran görüntüsü.

  3. kafka-secondary-cluster adlı ikinci küme için önceki üç adımı yineleyin: IP reklamını yapılandırma, dinleyicileri ayarlama ve aracı ile ZooKeeper IP adreslerini not edin.

Konu oluşturma

  1. SSH kullanarak birincil kümeye bağlanın:

    ssh sshuser@PRIMARYCLUSTER-ssh.azurehdinsight.net
    

    değerini, kümeyi oluştururken kullandığınız SSH kullanıcı adıyla değiştirin sshuser . değerini, kümeyi oluştururken kullandığınız temel adla değiştirin PRIMARYCLUSTER .

    Daha fazla bilgi için bkz. HDInsight ile SSH kullanma.

  2. Birincil küme için Apache ZooKeeper konakları ve aracı konakları ile iki ortam değişkeni oluşturmak için aşağıdaki komutu kullanın. gibi ZOOKEEPER_IP_ADDRESS1 dizeleri ve 10.23.0.7gibi 10.23.0.11 daha önce kaydedilen gerçek IP adresleriyle değiştirin. Aynı durum için BROKER_IP_ADDRESS1de geçerli. FQDN çözümlemesini özel bir DNS sunucusuyla kullanıyorsanız aracı ve ZooKeeper adlarını almak için bu adımları izleyin.

    # 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. adlı testtopicbir konu oluşturmak için aşağıdaki komutu kullanın:

    /usr/hdp/current/kafka-broker/bin/kafka-topics.sh --create --replication-factor 2 --partitions 8 --topic testtopic --zookeeper $PRIMARY_ZKHOSTS
    
  4. Konunun oluşturulduğunu doğrulamak için aşağıdaki komutu kullanın:

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

    Yanıt içerir testtopic.

  5. Bu (birincil) kümenin aracı konak bilgilerini görüntülemek için aşağıdakileri kullanın:

    echo $PRIMARY_BROKERHOSTS
    

    Bu, aşağıdaki metne benzer bilgiler döndürür:

    10.23.0.11:9092,10.23.0.7:9092,10.23.0.9:9092

    Bu bilgileri kaydedin. Bir sonraki bölümde kullanılacaktır.

Yansıtmayı yapılandırma

  1. Farklı bir SSH oturumu kullanarak ikincil kümeye bağlanın:

    ssh sshuser@SECONDARYCLUSTER-ssh.azurehdinsight.net
    

    değerini, kümeyi oluştururken kullandığınız SSH kullanıcı adıyla değiştirin sshuser . değerini, kümeyi oluştururken kullandığınız adla değiştirin SECONDARYCLUSTER .

    Daha fazla bilgi için bkz. HDInsight ile SSH kullanma.

  2. Birincil kümeyle iletişimi yapılandırmak için bir consumer.properties dosya kullanın. Dosyayı oluşturmak için aşağıdaki komutu kullanın:

    nano consumer.properties
    

    Dosyanın içeriği consumer.properties olarak aşağıdaki metni kullanın:

    bootstrap.servers=PRIMARY_BROKERHOSTS
    group.id=mirrorgroup
    

    değerini birincil kümedeki aracı ana bilgisayar IP adresleriyle değiştirin PRIMARY_BROKERHOSTS .

    Bu dosya, birincil Kafka kümesinden okurken kullanılacak tüketici bilgilerini açıklar. Daha fazla bilgi için adresinden Tüketici Yapılandırmaları bölümüne bakın kafka.apache.org.

    Dosyayı kaydetmek için Ctrl+X tuşlarına basın, Y tuşuna basın ve ardından Enter tuşuna basın.

  3. İkincil kümeyle iletişim kuran üreticiyi yapılandırmadan önce, ikincil kümenin aracı IP adresleri için bir değişken ayarlayın. Bu değişkeni oluşturmak için aşağıdaki komutları kullanın:

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

    Komut echo $SECONDARY_BROKERHOSTS aşağıdaki metne benzer bilgiler döndürmelidir:

    10.23.0.14:9092,10.23.0.4:9092,10.23.0.12:9092

  4. İkincil kümeyi iletmek için bir producer.properties dosya kullanın. Dosyayı oluşturmak için aşağıdaki komutu kullanın:

    nano producer.properties
    

    Dosyanın içeriği producer.properties olarak aşağıdaki metni kullanın:

    bootstrap.servers=SECONDARY_BROKERHOSTS
    compression.type=none
    

    değerini önceki adımda kullanılan aracı IP adresleriyle değiştirin SECONDARY_BROKERHOSTS .

    Daha fazla bilgi için bkz. adresinde Üretici Yapılandırmalarıkafka.apache.org.

  5. İkincil küme için ZooKeeper konaklarının IP adresleriyle bir ortam değişkeni oluşturmak için aşağıdaki komutları kullanın:

    # get the ZooKeeper hosts for the secondary cluster
    export SECONDARY_ZKHOSTS='ZOOKEEPER_IP_ADDRESS1:2181,ZOOKEEPER_IP_ADDRESS2:2181,ZOOKEEPER_IP_ADDRESS3:2181'
    
  6. HDInsight üzerinde Kafka için varsayılan yapılandırma, konuların otomatik olarak oluşturulmasına izin vermez. Yansıtma işlemine başlamadan önce aşağıdaki seçeneklerden birini kullanmanız gerekir:

    • İkincil kümede konuları oluşturun: Bu seçenek, bölüm sayısını ve çoğaltma faktörünü ayarlamanıza da olanak tanır.

      Aşağıdaki komutu kullanarak konuları önceden oluşturabilirsiniz:

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

      öğesini, oluşturulacak konunun adıyla değiştirin testtopic .

    • Kümeyi otomatik konu oluşturma için yapılandırın: Bu seçenek MirrorMaker'ın konuları otomatik olarak oluşturmasını sağlar. Bunları birincil konu başlığından farklı sayıda bölümle veya farklı bir çoğaltma faktörüyle oluşturabileceğini unutmayın.

      İkincil kümeyi konuları otomatik olarak oluşturacak şekilde yapılandırmak için şu adımları uygulayın:

      1. İkincil kümenin Ambari panosuna gidin: https://SECONDARYCLUSTERNAME.azurehdinsight.net.
      2. Hizmetler>Kafka'ya tıklayın. Ardından Yapılandırmalar sekmesini seçin.
      3. Filtre alanına değerini auto.creategirin. Bu, özellik listesini filtreler ve ayarı görüntüler auto.create.topics.enable .
      4. değerini olarak auto.create.topics.enabletruedeğiştirin ve kaydet'i seçin. Bir not ekleyin ve sonra yeniden Kaydet'i seçin.
      5. Kafka hizmetini seçin, Yeniden Başlat'ı ve ardından Etkilenenlerin tümünü yeniden başlat'ı seçin. İstendiğinde Tümünü yeniden başlatmayı onayla'yı seçin.

      Kafka hizmetinde otomatik oluşturma konularının nasıl etkinleştirildiğini gösteren ekran görüntüsü.

MirrorMaker'ı başlatma

Not

Bu makalede, Microsoft'un artık kullanmadığını belirten bir terime başvurular yer alır. Terim yazılımdan kaldırıldığında, bu makaleden kaldıracağız.

  1. İkincil kümeye SSH bağlantısından MirrorMaker işlemini başlatmak için aşağıdaki komutu kullanın:

    /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
    

    Bu örnekte kullanılan parametreler şunlardır:

    Parametre Açıklama
    --consumer.config Tüketici özelliklerini içeren dosyayı belirtir. Bu özellikleri birincil Kafka kümesinden okuyan bir tüketici oluşturmak için kullanırsınız.
    --producer.config Üretici özelliklerini içeren dosyayı belirtir. İkincil Kafka kümesine yazan bir üretici oluşturmak için bu özellikleri kullanırsınız.
    --whitelist MirrorMaker'ın birincil kümeden ikincil kümeye çoğaltılan konuların listesi.
    --num.streams Oluşturulacak tüketici iş parçacığı sayısı.

    İkincil düğümdeki tüketici artık iletileri almayı bekliyor.

  2. Birincil kümeye SSH bağlantısından bir üretici başlatmak ve konuya ileti göndermek için aşağıdaki komutu kullanın:

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

    İmleç içeren boş bir satıra geldiğinizde, birkaç kısa mesaj yazın. İletiler birincil kümedeki konuya gönderilir. bitirdiğinizde, üretici işlemini sonlandırmak için Ctrl+C tuşlarına basın.

  3. İkincil kümeye SSH bağlantısından MirrorMaker işlemini sonlandırmak için Ctrl+C tuşlarına basın. İşlemi sonlandırmak birkaç saniye sürebilir. İletilerin ikincil öğeye çoğaltıldığını doğrulamak için aşağıdaki komutu kullanın:

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

    Konu listesi artık MirrorMaster konuyu birincil kümeden ikincil kümeye yansıttığında oluşturulan öğesini içerir testtopic. Konu başlığından alınan iletiler, birincil kümeye girdiğiniz iletilerle aynıdır.

Küme silme

Uyarı

HDInsight kümeleri için faturalama, kullansanız da kullanmasanız da dakika başına eşit olarak eşit olarak dağıtılır. Kullanmayı bitirdikten sonra kümenizi sildiğinizden emin olun. Bkz. HDInsight kümesini silme.

Bu makaledeki adımlar farklı Azure kaynak gruplarında kümeler oluşturmuştur. Oluşturulan tüm kaynakları silmek için oluşturulan iki kaynak grubunu silebilirsiniz: kafka-primary-rg ve kafka-secondary-rg. Kaynak gruplarının silinmesi, kümeler, sanal ağlar ve depolama hesapları dahil olmak üzere bu makaleyi izleyerek oluşturulan tüm kaynakları kaldırır.

Sonraki adımlar

Bu makalede, Apache Kafka kümesinin çoğaltmasını oluşturmak için MirrorMaker kullanmayı öğrendiniz. Kafka ile çalışmanın diğer yollarını keşfetmek için aşağıdaki bağlantıları kullanın: