Aracılığıyla paylaş


HDInsight üzerinde Apache Kafka ile Azure Kubernetes Service'i kullanma

HDInsight kümesinde Apache Kafka ile Azure Kubernetes Service'i (AKS) kullanmayı öğrenin. Bu belgedeki adımlarda, Kafka bağlantısını doğrulamak için AKS'de barındırılan bir Node.js uygulaması kullanılır. Bu uygulama Kafka ile iletişim kurmak için kafka düğümü paketini kullanır. Tarayıcı istemcisi ile AKS'de barındırılan arka uç arasında olay odaklı mesajlaşma için Socket.io kullanır.

Apache Kafka, gerçek zamanlı akış verisi işlem hatları ve uygulamaları oluşturmak için kullanılabilen, açık kaynak dağıtılmış akış platformudur. Azure Kubernetes Service, barındırılan Kubernetes ortamınızı yönetir ve kapsayıcılı uygulamaları dağıtmayı hızlı ve kolay hale getirir. Azure Sanal Ağ kullanarak iki hizmeti bağlayabilirsiniz.

Not

Bu belgenin odağı, Azure Kubernetes Service'in HDInsight üzerinde Kafka ile iletişim kurmasını sağlamak için gereken adımlardadır. Örneğin kendisi, yapılandırmanın çalıştığını gösteren temel bir Kafka istemcisidir.

Önkoşullar

Bu belgede, aşağıdaki Azure hizmetlerini oluşturma ve kullanma konusunda bilgi sahibi olduğunuz varsayılır:

  • HDInsight üzerinde Kafka
  • Azure Kubernetes Service
  • Azure Sanal Ağlar

Bu belgede, Azure Kubernetes Service öğreticisini tamamladığınız da varsayılır. Bu makale bir kapsayıcı hizmeti oluşturur, bir Kubernetes kümesi, bir kapsayıcı kayıt defteri oluşturur ve yardımcı programını yapılandırır kubectl .

Mimari

Ağ topolojisi

Hem HDInsight hem de AKS, işlem kaynakları için kapsayıcı olarak azure Sanal Ağ kullanır. HDInsight ile AKS arasındaki iletişimi etkinleştirmek için, ağları arasında iletişimi etkinleştirmeniz gerekir. Bu belgedeki adımlarda ağlarla Sanal Ağ Eşleme kullanılır. VPN gibi diğer bağlantılar da çalışmalıdır. Eşleme hakkında daha fazla bilgi için Sanal ağ eşleme belgesine bakın.

Aşağıdaki diyagramda bu belgede kullanılan ağ topolojisi gösterilmektedir:

HDInsight in one virtual network, AKS in another, using peering.

Önemli

Eşlenen ağlar arasında ad çözümlemesi etkinleştirilmediğinden IP adresleme kullanılır. Varsayılan olarak, HDInsight üzerinde Kafka, istemciler bağlandığında IP adresleri yerine ana bilgisayar adlarını döndürecek şekilde yapılandırılır. Bu belgedeki adımlar Kafka'da IP reklamlarını kullanacak şekilde değiştirir.

Azure Kubernetes Service (AKS) oluşturma

Aks kümeniz yoksa, nasıl oluşturulacağını öğrenmek için aşağıdaki belgelerden birini kullanın:

Önemli

AKS, ek bir kaynak grubunda yükleme sırasında bir sanal ağ oluşturur. Ek kaynak grubu, MC_resourceGroup_AKSclusterName_location adlandırma kuralına uyar.
Bu ağ, sonraki bölümde HDInsight için oluşturulan ağ ile eşlenmiştir.

Sanal ağ eşlemesini yapılandırma

Ön bilgileri tanımlama

  1. Azure portalından AKS kümenizin sanal ağını içeren ek Kaynak grubunu bulun.

  2. Kaynak grubundan Sanal ağ kaynağını seçin. Adı daha sonra kullanmak için not edin.

  3. Ayarlar’dan Adres alanı’nı seçin. Listelenen adres alanını not edin.

Sanal ağ oluşturma

  1. HDInsight için bir sanal ağ oluşturmak için + Kaynak>oluştur Ağ>Sanal ağı'na gidin.

  2. Belirli özellikler için aşağıdaki yönergeleri kullanarak ağı oluşturun:

    Özellik Değer
    Adres alanı AKS kümesi ağı tarafından kullanılan adres alanıyla çakışmayan bir adres alanı kullanmanız gerekir.
    Konum AKS kümesi için kullandığınız sanal ağ için aynı Konumu kullanın.
  3. Sonraki adıma geçmeden önce sanal ağ oluşturulana kadar bekleyin.

Eşlemeyi yapılandırma

  1. HDInsight ağı ile AKS kümesi ağı arasındaki eşlemeyi yapılandırmak için sanal ağı ve ardından Eşlemeler'i seçin.

  2. + Ekle'yi seçin ve formu doldurmak için aşağıdaki değerleri kullanın:

    Özellik Değer
    Bu VN'den <> uzak sanal ağa eşlemenin adı Bu eşleme yapılandırması için benzersiz bir ad girin.
    Sanal ağ AKS kümesi için sanal ağı seçin.
    AKS VN'den <bu VN'ye <> eşlemenin adı> Benzersiz bir ad girin.

    Diğer tüm alanları varsayılan değerde bırakın ve eşlemeyi yapılandırmak için Tamam'ı seçin.

HDInsight üzerinde Apache Kafka kümesi oluşturma

HDInsight kümesinde Kafka oluştururken, HDInsight için daha önce oluşturulan sanal ağa katılmanız gerekir. Kafka kümesi oluşturma hakkında daha fazla bilgi için Apache Kafka kümesi oluşturma belgesine bakın.

Apache Kafka IP Reklamlarını Yapılandırma

Kafka'nın etki alanı adları yerine IP adreslerini tanıtacak şekilde yapılandırılması için aşağıdaki adımları kullanın:

  1. Web tarayıcısını kullanarak https://CLUSTERNAME.azurehdinsight.net adresine gidin. CLUSTERNAME değerini HDInsight kümesindeki Kafka adıyla değiştirin.

    İstendiğinde, küme için HTTPS kullanıcı adını ve parolasını kullanın. Küme için Ambari Web kullanıcı arabirimi görüntülenir.

  2. Kafka'da bilgileri görüntülemek için soldaki listeden Kafka'yı seçin.

    Service list with Kafka highlighted.

  3. Kafka yapılandırmasını görüntülemek için üst ortadaki Yapılandırmalar'ı seçin.

    Apache Ambari services configuration.

  4. kafka-env yapılandırmasını bulmak için sağ üstteki Filtre alanına girinkafka-env.

    Kafka configuration, for kafka-env.

  5. Kafka'yı IP adreslerini tanıtacak şekilde yapılandırmak için kafka-env-template alanının altına aşağıdaki metni ekleyin:

    # 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
    
  6. Kafka'nın dinlediğini arabirimi yapılandırmak için sağ üstteki Filtre alanına girinlisteners.

  7. Kafka'yı tüm ağ arabirimlerinde dinleyecek şekilde yapılandırmak için dinleyiciler alanındaki değeri olarak PLAINTEXT://0.0.0.0:9092değiştirin.

  8. Yapılandırma değişikliklerini kaydetmek için Kaydet düğmesini kullanın. Değişiklikleri açıklayan bir kısa mesaj girin. Değişiklikler kaydedildikten sonra Tamam'ı seçin.

    Apache Ambari save configuration.

  9. Kafka'yı yeniden başlatırken hataları önlemek için Hizmet Eylemleri düğmesini kullanın ve Bakım Modunu Aç'ı seçin. Bu işlemi tamamlamak için Tamam'ı seçin.

    Service actions, with turn on maintenance highlighted.

  10. Kafka'yı yeniden başlatmak için Yeniden Başlat düğmesini kullanın ve Tüm Etkilenenleri Yeniden Başlat'ı seçin. Yeniden başlatmayı onaylayın ve işlem tamamlandıktan sonra Tamam düğmesini kullanın.

    Restart button with restart all affected highlighted.

  11. Bakım modunu devre dışı bırakmak için Hizmet Eylemleri düğmesini kullanın ve Bakım Modunu Kapat'ı seçin. Bu işlemi tamamlamak için Tamam'ı seçin.

Yapılandırmayı test edin

Bu noktada Kafka ve Azure Kubernetes Service eşlenmiş sanal ağlar üzerinden iletişim halindedir. Bu bağlantıyı test etmek için aşağıdaki adımları kullanın:

  1. Test uygulaması tarafından kullanılan bir Kafka konusu oluşturun. Kafka konuları oluşturma hakkında bilgi için Apache Kafka kümesi oluşturma belgesine bakın.

  2. Örnek uygulamayı adresinden https://github.com/Blackmist/Kafka-AKS-Testindirin.

  3. index.js Dosyayı düzenleyin ve aşağıdaki satırları değiştirin:

    • var topic = 'mytopic': değerini bu uygulama tarafından kullanılan Kafka konusunun adıyla değiştirin mytopic .

    • var brokerHost = '176.16.0.13:9092': değerini, kümenizin aracı konaklarından birinin iç IP adresiyle değiştirin 176.16.0.13 .

      Kümedeki aracı konaklarının (çalışan düğümleri) iç IP adresini bulmak için Apache Ambari REST API belgesine bakın. Etki alanı adının ile wnbaşladığı girdilerden birinin IP adresini seçin.

  4. Dizindeki bir komut satırından src bağımlılıkları yükleyin ve Docker'ı kullanarak dağıtım için bir görüntü oluşturun:

    docker build -t kafka-aks-test .
    

    Not

    Bu uygulamanın gerektirdiği paketler depoda denetlendiğinden, bunları yüklemek için yardımcı programını kullanmanız npm gerekmez.

  5. Azure Container Registry'nizde (ACR) oturum açın ve loginServer adını bulun:

    az acr login --name <acrName>
    az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table
    

    Not

    Azure Container Registry adınızı bilmiyorsanız veya Azure Kubernetes Service ile çalışmak için Azure CLI'yi kullanmayı bilmiyorsanız AKS öğreticilerine bakın.

  6. Yerel kafka-aks-test görüntüyü ACR'nizin loginServer değeriyle etiketleyin. Ayrıca görüntü sürümünü belirtmek için sonuna ekleyin :v1 :

    docker tag kafka-aks-test <acrLoginServer>/kafka-aks-test:v1
    
  7. Görüntüyü kayıt defterine gönderin:

    docker push <acrLoginServer>/kafka-aks-test:v1
    

    Bu işlemin tamamlanması birkaç dakika sürer.

  8. Kubernetes bildirim dosyasını (kafka-aks-test.yaml) düzenleyin ve değerini 4. adımda alınan ACR loginServer adıyla değiştirin microsoft .

  9. Bildirimden uygulama ayarlarını dağıtmak için aşağıdaki komutu kullanın:

    kubectl create -f kafka-aks-test.yaml
    
  10. Uygulamanın sürümünü izlemek için EXTERNAL-IP aşağıdaki komutu kullanın:

    kubectl get service kafka-aks-test --watch
    

    Bir dış IP adresi atandıktan sonra, saat çıkışı için CTRL + C tuşlarını kullanın

  11. Bir web tarayıcısı açın ve hizmetin dış IP adresini girin. Aşağıdaki resme benzer bir sayfaya ulaşırsınız:

    Apache Kafka test web page image.

  12. Alana metin girin ve gönder düğmesini seçin. Veriler Kafka'ya gönderilir. Ardından uygulamadaki Kafka tüketicisi iletiyi okur ve Kafka'dan gelen iletiler bölümüne ekler.

    Uyarı

    İletinin birden çok kopyasını alabilirsiniz. Bu sorun genellikle bağlandıktan sonra tarayıcınızı yenilediğinizde veya uygulamaya birden çok tarayıcı bağlantısı açtığınızda oluşur.

Sonraki adımlar

HDInsight’ta Apache Kafka kullanma hakkında bilgi almak için aşağıdaki bağlantıları kullanın: