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
- Azure CLI
- Bir Azure aboneliği
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:
Ö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:
- Azure Kubernetes Service (AKS) kümesi dağıtma - Portal
- Azure Kubernetes Service (AKS) kümesi dağıtma - CLI
- Azure Kubernetes Service (AKS) kümesi dağıtma - PowerShell
Ö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
Azure portalından AKS kümenizin sanal ağını içeren ek Kaynak grubunu bulun.
Kaynak grubundan Sanal ağ kaynağını seçin. Adı daha sonra kullanmak için not edin.
Ayarlar’dan Adres alanı’nı seçin. Listelenen adres alanını not edin.
Sanal ağ oluşturma
HDInsight için bir sanal ağ oluşturmak için + Kaynak>oluştur Ağ>Sanal ağı'na gidin.
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. Sonraki adıma geçmeden önce sanal ağ oluşturulana kadar bekleyin.
Eşlemeyi yapılandırma
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.
+ 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:
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.
Kafka'da bilgileri görüntülemek için soldaki listeden Kafka'yı seçin.
Kafka yapılandırmasını görüntülemek için üst ortadaki Yapılandırmalar'ı seçin.
kafka-env yapılandırmasını bulmak için sağ üstteki Filtre alanına girin
kafka-env
.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
Kafka'nın dinlediğini arabirimi yapılandırmak için sağ üstteki Filtre alanına girin
listeners
.Kafka'yı tüm ağ arabirimlerinde dinleyecek şekilde yapılandırmak için dinleyiciler alanındaki değeri olarak
PLAINTEXT://0.0.0.0:9092
değiştirin.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.
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.
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.
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:
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.
Örnek uygulamayı adresinden https://github.com/Blackmist/Kafka-AKS-Testindirin.
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ştirinmytopic
.var brokerHost = '176.16.0.13:9092'
: değerini, kümenizin aracı konaklarından birinin iç IP adresiyle değiştirin176.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
wn
başladığı girdilerden birinin IP adresini seçin.
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.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.
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
Görüntüyü kayıt defterine gönderin:
docker push <acrLoginServer>/kafka-aks-test:v1
Bu işlemin tamamlanması birkaç dakika sürer.
Kubernetes bildirim dosyasını (
kafka-aks-test.yaml
) düzenleyin ve değerini 4. adımda alınan ACR loginServer adıyla değiştirinmicrosoft
.Bildirimden uygulama ayarlarını dağıtmak için aşağıdaki komutu kullanın:
kubectl create -f kafka-aks-test.yaml
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
Bir web tarayıcısı açın ve hizmetin dış IP adresini girin. Aşağıdaki resme benzer bir sayfaya ulaşırsınız:
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:
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin