Dikkat
Bu makale, Kullanım Süresi Sonu (EOL) olan bir Linux dağıtımı olan CentOS'a başvurur. Lütfen kullanımınızı göz önünde bulundurun ve uygun şekilde planlayın. Daha fazla bilgi için bkz . CentOS Kullanım Süresi Sonu kılavuzu.
Bu örnek senaryoda Azure'da Apache NiFi'nin nasıl çalıştırılacakları gösterilmektedir. NiFi, verileri işlemek ve dağıtmak için bir sistem sağlar.
Apache®, Apache NiFi® ve NiFi®, Apache Software Foundation'ın Birleşik Devletler ve/veya diğer ülkelerdeki kayıtlı ticari markaları veya ticari markalarıdır. Bu işaretlerin kullanılması Apache Software Foundation tarafından onaylanmamaktadır.
Mimari
Bu mimarinin bir Visio dosyasını indirin.
İş Akışı
NiFi uygulaması, NiFi küme düğümlerindeki VM'lerde çalışır. VM'ler, yapılandırmanın kullanılabilirlik alanları arasında dağıttığı bir sanal makine ölçek kümesindedir.
Apache ZooKeeper, ayrı bir kümedeki VM'lerde çalışır. NiFi şu amaçlar için ZooKeeper kümesini kullanır:
- Küme koordinatör düğümü seçmek için
- Veri akışını koordine etmek için
Azure Uygulaması lication Gateway, NiFi düğümlerinde çalışan kullanıcı arabirimi için katman 7 yük dengelemesi sağlar.
İzleme ve Log Analytics özelliği NiFi sisteminden telemetri toplar, analiz eder ve üzerinde işlem gösterir. Telemetri niFi sistem günlüklerini, sistem durumu ölçümlerini ve performans ölçümlerini içerir.
Azure Key Vault, NiFi kümesi için sertifikaları ve anahtarları güvenli bir şekilde depolar.
Microsoft Entra ID çoklu oturum açma (SSO) ve çok faktörlü kimlik doğrulaması sağlar.
Bileşenler
- NiFi , verileri işlemek ve dağıtmak için bir sistem sağlar.
- ZooKeeper , dağıtılmış sistemleri yöneten açık kaynak bir sunucudur.
- Sanal Makineler bir hizmet olarak altyapı (IaaS) teklifidir. İsteğe bağlı, ölçeklenebilir bilgi işlem kaynaklarını dağıtmak için Sanal Makineler kullanabilirsiniz. Sanal Makineler sanallaştırma esnekliği sağlar ancak fiziksel donanımın bakım taleplerini ortadan kaldırır.
- Azure Sanal Makine Ölçek Kümeleri bir grup yük dengeli VM'yi yönetmek için bir yol sağlar. Bir kümedeki VM örneklerinin sayısı talebe veya tanımlı bir zamanlamaya yanıt olarak otomatik olarak artabilir veya düşebilir.
- Kullanılabilirlik alanları , bir Azure bölgesi içindeki benzersiz fiziksel konumlardır. Bu yüksek kullanılabilirlik teklifleri, uygulamaları ve verileri veri merkezi hatalarına karşı korur.
- Application Gateway , web uygulamalarına yönelik trafiği yöneten bir yük dengeleyicidir.
- İzleyici , ortamlar ve Azure kaynaklarıyla ilgili verileri toplar ve analiz eder. Bu veriler, performans ölçümleri ve etkinlik günlükleri gibi uygulama telemetrisini içerir. Daha fazla bilgi için bu makalenin devamında dikkat edilmesi gerekenleri izleme konusuna bakın.
- Log Analytics , günlük verilerini izleme konusunda sorgular çalıştıran bir Azure portalı aracıdır. Log Analytics ayrıca sorgu sonuçlarını grafiklendirmeye ve istatistiksel olarak çözümlemeye yönelik özellikler de sağlar.
- Azure DevOps Services , kodlama projelerini ve dağıtımlarını yönetmek için hizmetler, araçlar ve ortamlar sağlar.
- Key Vault api anahtarları, parolalar, sertifikalar ve şifreleme anahtarları gibi bir sistemin gizli dizilerine erişimi güvenli bir şekilde depolar ve denetler.
- Microsoft Entra Id , Azure'a ve diğer bulut uygulamalarına erişimi denetleen bulut tabanlı bir kimlik hizmetidir.
Alternatifler
- Azure Data Factory bu çözüme bir alternatif sağlar.
- Key Vault yerine, sistem gizli dizilerini depolamak için benzer bir hizmet kullanabilirsiniz.
- Apache Airflow. Airflow ve NiFi'nin nasıl farklı olduğunu görün.
- Cloudera Apache NiFi gibi desteklenen bir kurumsal NiFi alternatifi kullanmak mümkündür. Cloudera teklifi Azure Market aracılığıyla kullanılabilir.
Senaryo ayrıntıları
Bu senaryoda NiFi, ölçek kümesindeki Azure Sanal Makineler genelinde kümelenmiş bir yapılandırmada çalışır. Ancak bu makalenin önerilerinin çoğu, NiFi'yi tek bir sanal makinede (VM) tek örnek modunda çalıştıran senaryolar için de geçerlidir. Bu makaledeki en iyi yöntemler ölçeklenebilir, yüksek kullanılabilirlik ve güvenli dağıtım gösterir.
Olası kullanım örnekleri
NiFi, verileri taşımak ve veri akışını yönetmek için iyi çalışır:
- Ayrılmış sistemleri buluta bağlama
- Azure Depolama ve diğer veri depolarına veri taşıma
- Buluttan buluta ve hibrit bulut uygulamalarını Azure IoT, Azure Stack ve Azure Kubernetes Service (AKS) ile tümleştirme
Sonuç olarak, bu çözüm birçok alan için geçerlidir:
Modern veri ambarları (MDW) yapılandırılmış ve yapılandırılmamış verileri büyük ölçekte bir araya getirir. Çeşitli kaynaklardan, havuzlardan ve biçimlerden veri toplar ve depolar. NiFi, aşağıdaki nedenlerle Azure tabanlı MDW'lere veri alma konusunda üstünlük sağlar:
- Verileri okumak, yazmak ve işlemek için 200'den fazla işlemci kullanılabilir.
- Sistem Azure Blob Depolama, Azure Data Lake Storage, Azure Event Hubs, Azure Kuyruk Depolama, Azure Cosmos DB ve Azure Synapse Analytics gibi Depolama hizmetlerini destekler.
- Güçlü veri başarısı özellikleri, uyumlu çözümlerin uygulanmasını mümkün hale getirir. Azure İzleyici'nin Log Analytics özelliğinde veri başarısı yakalama hakkında bilgi için bu makalenin devamında yer alan Raporlama konuları bölümüne bakın.
NiFi, küçük ayak izi olan cihazlarda tek başına çalışabilir. Böyle durumlarda NiFi uç verileri işlemeyi ve bu verileri buluttaki daha büyük NiFi örneklerine veya kümelerine taşımayı mümkün kılar. NiFi, hareket halindeki uç verileri filtrelemeye, dönüştürmeye ve önceliklendirmeye yardımcı olarak güvenilir ve verimli veri akışları sağlar.
Endüstriyel IoT (IIoT) çözümleri, uçtan veri merkezine veri akışını yönetir. Bu akış, endüstriyel kontrol sistemlerinden ve ekipmanlarından veri alımıyla başlar. Veriler daha sonra veri yönetimi çözümlerine ve MDW'lere taşınır. NiFi, veri alımı ve hareket için uygun hale getiren özellikler sunar:
- Edge veri işleme işlevi
- IoT ağ geçitlerinin ve cihazların kullandığı protokoller için destek
- Event Hubs ve Depolama hizmetleriyle tümleştirme
Tahmine dayalı bakım ve tedarik zinciri yönetimi alanlarındaki IoT uygulamaları bu işlevi kullanabilir.
Öneriler
Bu çözümü kullanırken aşağıdaki noktaları göz önünde bulundurun:
NiFi'nin önerilen sürümleri
Bu çözümü Azure'da çalıştırdığınızda NiFi'nin 1.13.2+ sürümünü kullanmanızı öneririz. Diğer sürümleri çalıştırabilirsiniz, ancak bu sürümler bu kılavuzdakilerden farklı yapılandırmalar gerektirebilir.
Azure VM'lerine NiFi yüklemek için NiFi indirmeleri sayfasından kolaylık ikili dosyalarını indirmek en iyisidir. kaynak kodundan ikili dosyaları da oluşturabilirsiniz.
ZooKeeper'ın önerilen sürümleri
Bu örnek iş yükü için ZooKeeper'ın 3.5.5 ve üzeri veya 3.6.x sürümlerini kullanmanızı öneririz.
Resmi kolaylık ikili dosyalarını veya kaynak kodunu kullanarak Azure VM'lerine ZooKeeper yükleyebilirsiniz. Her ikisi de Apache ZooKeeper sürümleri sayfasında bulunur.
Dikkat edilmesi gereken noktalar
Bu önemli noktalar, bir iş yükünün kalitesini artırmak için kullanılabilecek bir dizi yol gösteren ilke olan Azure İyi Tasarlanmış Çerçeve'nin yapı taşlarını uygular. Daha fazla bilgi için bkz . Microsoft Azure İyi Tasarlanmış Çerçeve.
NiFi'yi yapılandırma hakkında bilgi için bkz . Apache NiFi Sistem Yöneticisi Kılavuzu. Ayrıca, bu çözümü uygularken bu noktaları göz önünde bulundurun.
Maliyet iyileştirme
Maliyet iyileştirmesi, gereksiz giderleri azaltmanın ve operasyonel verimlilikleri iyileştirmenin yollarını aramaktır. Daha fazla bilgi için bkz . Maliyet iyileştirme sütununa genel bakış.
- Bu mimarideki kaynakların maliyetini tahmin etmek için Azure Fiyatlandırma Hesaplayıcısı'nı kullanın.
- Özel uyarı çözümü dışında bu mimarideki tüm hizmetleri içeren bir tahmin için bu örnek maliyet profiline bakın.
VM ile ilgili dikkat edilmesi gereken konular
Aşağıdaki bölümlerde NiFi VM'lerinin nasıl yapılandırıldığında ayrıntılı bir ana hat sağlanır:
VM boyutu
Bu tabloda, başlangıç için önerilen VM boyutları listelenmiştir. Çoğu genel amaçlı veri akışı için Standard_D16s_v3 en iyisidir. Ancak NiFi'deki her veri akışının farklı gereksinimleri vardır. Akışınızı test edin ve akışın gerçek gereksinimlerine göre gerektiği şekilde yeniden boyutlandırın.
Ağ performansını artırmak için VM'lerde hızlandırılmış ağı etkinleştirmeyi göz önünde bulundurun. Daha fazla bilgi için bkz . Azure sanal makine ölçek kümeleri için ağ oluşturma.
VM boyutu | Sanal işlemci | GB cinsinden bellek | Mb/sn başına saniyede G/Ç işlemlerinde (IOPS) en fazla kazınmamış veri diski aktarım hızı* | En fazla ağ arabirimi (NIC) / Beklenen ağ bant genişliği (Mb/sn) |
---|---|---|---|---|
Standard_D8s_v3 | 8 | 32 | 12,800/192 | 4/4,000 |
Standard_D16s_v3** | 16 | 64 | 25,600/384 | 8/8,000 |
Standard_D32s_v3 | 32 | 128 | 51,200/768 | 8/16,000 |
Standard_M16m | 16 | 437.5 | 10,000/250 | 8/4,000 |
* NiFi düğümlerinde kullandığınız tüm veri diskleri için veri diski yazma önbelleğini devre dışı bırakın.
** Genel amaçlı veri akışlarının çoğu için bu SKU'yu öneririz. Benzer vCPU ve bellek yapılandırmalarına sahip Azure VM SKU'ları da yeterli olmalıdır.
VM işletim sistemi (işletim sistemi)
Aşağıdaki konuk işletim sistemlerinden birinde Azure'da NiFi çalıştırmanızı öneririz:
- Ubuntu 18.04 LTS veya üzeri
- CentOS 7.9
Veri akışınızın belirli gereksinimlerini karşılamak için aşağıdakiler de dahil olmak üzere çeşitli işletim sistemi düzeyinde ayarların ayarlanması önemlidir:
- En fazla çatallanmış işlem.
- En fazla dosya tutamaçları.
- Erişim zamanı,
atime
.
İşletim sistemini beklenen kullanım örneğine uyacak şekilde ayarladıktan sonra, ayarlanmış görüntülerin neslini koordine etmek için Azure VM Görüntü Oluşturucusu'nu kullanın. NiFi'ye özgü yönergeler için Apache NiFi Sistem Yöneticisi Kılavuzu'ndaki Yapılandırma en iyi yöntemleri bölümüne bakın.
Depolama
Çeşitli NiFi depolarını işletim sistemi diskinde değil veri disklerinde depolamanın üç ana nedeni vardır:
- Akışlar genellikle tek bir diskin karşılayabildiği yüksek disk aktarım hızı gereksinimlerine sahiptir.
- NiFi disk işlemlerini işletim sistemi disk işlemlerinden ayırmak en iyisidir.
- Depolar geçici depolamada olmamalıdır.
Aşağıdaki bölümlerde veri disklerini yapılandırma yönergeleri özetlenmiştir. Bu yönergeler Azure'a özeldir. Depoları yapılandırma hakkında daha fazla bilgi için Apache NiFi Sistem Yöneticisi Kılavuzu'ndaki Durum Yönetimi bölümüne bakın.
Veri diski türü ve boyutu
NiFi için veri disklerini yapılandırırken şu faktörleri göz önünde bulundurun:
- Disk türü
- Disk boyutu
- Toplam disk sayısı
Not
Disk türleri, boyutlandırma ve fiyatlandırma hakkında güncel bilgiler için bkz . Azure yönetilen disklerine giriş.
Aşağıdaki tabloda, şu anda Azure'da kullanılabilen yönetilen disk türleri gösterilmektedir. NiFi'i bu disk türlerinden herhangi biriyle kullanabilirsiniz. Ancak yüksek aktarım hızına sahip veri akışları için Premium SSD'yi öneririz.
Ultra Disk (NVM Express (NVMe)) | Premium SSD | Standart SSD | Standart HDD | |
---|---|---|---|---|
Disk türü | SSD | SSD | SSD | HDD |
En büyük disk boyutu | 65.536 GB | 32.767 GB | 32.767 GB | 32.767 GB |
En yüksek işleme hızı | 2.000 MiB/sn | 900 MiB/sn | 750 MiB/sn | 500 MiB/sn |
Maks. IOPS | 160.000 | 20.000 | 6.000 | 2.000 |
Veri akışının aktarım hızını artırmak için en az üç veri diski kullanın. Disklerdeki depoları yapılandırmaya yönelik en iyi yöntemler için bu makalenin devamında yer alan Depo yapılandırması bölümüne bakın.
Aşağıdaki tabloda, her disk boyutu ve türü için uygun boyut ve aktarım hızı numaraları listelenir.
Standart HDD S15 | Standart HDD S20 | Standart HDD S30 | Standart SSD S15 | Standart SSD S20 | Standart SSD S30 | Premium SSD P15 | Premium SSD P20 | Premium SSD P30 | |
---|---|---|---|---|---|---|---|---|---|
GB cinsinden disk boyutu | Kategori 256 | 512 | 1,024 | Kategori 256 | 512 | 1,024 | Kategori 256 | 512 | 1,024 |
Disk başına IOPS | En fazla 500 | En fazla 500 | En fazla 500 | En fazla 500 | En fazla 500 | En fazla 500 | 1.100 | 2.300 | 5.000 |
Disk başına aktarım hızı | 60 MBps'ye kadar | 60 MBps'ye kadar | 60 MBps'ye kadar | 60 MBps'ye kadar | 60 MBps'ye kadar | 60 MBps'ye kadar | 125 MBps | 150 MBps | 200 MBps |
Sisteminiz VM sınırlarına ulaştığında, daha fazla disk eklemek aktarım hızını artırmayabilir:
- IOPS ve aktarım hızı sınırları diskin boyutuna bağlıdır.
- Seçtiğiniz VM boyutu, vm için IOPS ve aktarım hızı sınırlarını tüm veri disklerine yerleştirir.
VM düzeyinde disk aktarım hızı sınırları için bkz . Azure'da Linux sanal makineleri için boyutlar.
VM disk önbelleğe alma
Azure VM'lerinde Konak Önbelleğe Alma özelliği disk yazma önbelleğini yönetir. Depolar için kullandığınız veri disklerinde aktarım hızını artırmak için, Ana Bilgisayar Önbelleği'ni None
olarak ayarlayarak disk yazma önbelleğini kapatın.
Depo yapılandırması
NiFi için en iyi uygulama yönergeleri, bu depoların her biri için ayrı bir disk veya disk kullanmaktır:
- Content
- FlowFile
- Köken
Bu yaklaşım için en az üç disk gerekir.
NiFi ayrıca uygulama düzeyinde şeritlemeyi de destekler. Bu işlev, veri depolarının boyutunu veya performansını artırır.
Aşağıdaki alıntı yapılandırma dosyasındandır nifi.properties
. Bu yapılandırma, depoları VM'lere bağlı yönetilen diskler arasında bölümlere ayırır ve ayırır:
nifi.provenance.repository.directory.stripe1=/mnt/disk1/ provenance_repository
nifi.provenance.repository.directory.stripe2=/mnt/disk2/ provenance_repository
nifi.provenance.repository.directory.stripe3=/mnt/disk3/ provenance_repository
nifi.content.repository.directory.stripe1=/mnt/disk4/ content_repository
nifi.content.repository.directory.stripe2=/mnt/disk5/ content_repository
nifi.content.repository.directory.stripe3=/mnt/disk6/ content_repository
nifi.flowfile.repository.directory=/mnt/disk7/ flowfile_repository
Yüksek performanslı depolama için tasarlama hakkında daha fazla bilgi için bkz . Azure premium depolama: yüksek performans için tasarım.
Raporlama
NiFi, Log Analytics özelliği için bir provenance raporlama görevi içerir.
Bu raporlama görevini, provenance olaylarını uygun maliyetli, dayanıklı uzun vadeli depolama alanına boşaltmak için kullanabilirsiniz. Log Analytics özelliği, olayları tek tek görüntülemek ve grafını oluşturmak için bir sorgu arabirimi sağlar. Bu sorgular hakkında daha fazla bilgi için bu makalenin devamında yer alan Log Analytics sorguları bölümüne bakın.
Bu görevi geçici, bellek içi provenans depolamasıyla da kullanabilirsiniz. Birçok senaryoda aktarım hızı artışı elde edebilirsiniz. Ancak olay verilerini korumanız gerekiyorsa bu yaklaşım risklidir. Geçici depolamanın, kanıtlanmış olaylar için dayanıklılık gereksinimlerinizi karşıladığından emin olun. Daha fazla bilgi için Apache NiFi Sistem Yöneticisi Kılavuzu'ndaki Provenance Deposu'na bakın.
Bu işlemi kullanmadan önce Azure aboneliğinizde bir log analytics çalışma alanı oluşturun. Çalışma alanını iş yükünüzle aynı bölgede ayarlamak en iyisidir.
Provenance raporlama görevini yapılandırmak için:
- NiFi'de denetleyici ayarlarını açın.
- Raporlama görevleri menüsünü seçin.
- Yeni raporlama görevi oluştur'u seçin.
- Azure Log Analytics Raporlama Görevi'ne tıklayın.
Aşağıdaki ekran görüntüsünde bu raporlama görevinin özellikler menüsü gösterilmektedir:
İki özellik gereklidir:
- Log Analytics çalışma alanı kimliği
- Log Analytics çalışma alanı anahtarı
Log Analytics çalışma alanınıza giderek bu değerleri Azure portalında bulabilirsiniz.
Sistemin gönderdiği provenance olaylarını özelleştirmek ve filtrelemek için başka seçenekler de mevcuttur.
Güvenlik
Güvenlik, kasıtlı saldırılara ve değerli verilerinizin ve sistemlerinizin kötüye kullanılmasına karşı güvence sağlar. Daha fazla bilgi için bkz . Güvenlik sütununa genel bakış.
NiFi'nin güvenliğini kimlik doğrulaması ve yetkilendirme açısından sağlayabilirsiniz. NiFi'nin güvenliğini şu şekilde tüm ağ iletişimleri için de sağlayabilirsiniz:
- Küme içinde.
- Küme ile ZooKeeper arasında.
Aşağıdaki seçenekleri açma yönergeleri için Apache NiFi Yöneticileri Kılavuzu'na bakın:
- Kerberos
- Hafif Dizin Erişim Protokolü (LDAP)
- Sertifika tabanlı kimlik doğrulaması ve yetkilendirme
- Küme iletişimleri için iki yönlü Güvenli Yuva Katmanı (SSL)
ZooKeeper güvenli istemci erişimini açarsanız, yapılandırma dosyasına ilgili özellikleri ekleyerek NiFi'yi bootstrap.conf
yapılandırın. Aşağıdaki yapılandırma girdileri bir örnek sağlar:
java.arg.18=-Dzookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty
java.arg.19=-Dzookeeper.client.secure=true
java.arg.20=-Dzookeeper.ssl.keyStore.location=/path/to/keystore.jks
java.arg.21=-Dzookeeper.ssl.keyStore.password=[KEYSTORE PASSWORD]
java.arg.22=-Dzookeeper.ssl.trustStore.location=/path/to/truststore.jks
java.arg.23=-Dzookeeper.ssl.trustStore.password=[TRUSTSTORE PASSWORD]
Genel öneriler için bkz . Linux güvenlik temeli.
Ağ güvenliği
Bu çözümü uygularken ağ güvenliğiyle ilgili aşağıdaki noktaları göz önünde bulundurun:
Ağ güvenlik grupları
Azure'da ağ trafiğini kısıtlamak için ağ güvenlik gruplarını kullanabilirsiniz.
Yönetim görevleri için NiFi kümesine bağlanmak için bir sıçrama kutusu öneririz. Tam zamanında (JIT) erişim veya Azure Bastion ile bu güvenlik sağlamlaştırılmış VM'leri kullanın. Sıçrama kutusuna veya Azure Bastion'a erişim izni verme yönteminizi denetlemek için ağ güvenlik grupları ayarlayın. Mimarinin çeşitli alt ağlarında ağ güvenlik gruplarını rastgele kullanarak ağ yalıtımı ve denetimi elde edebilirsiniz.
Aşağıdaki ekran görüntüsünde tipik bir sanal ağdaki bileşenler gösterilmektedir. Sıçrama kutusu, sanal makine ölçek kümesi ve ZooKeeper VM'leri için ortak bir alt ağ içerir. Bu basitleştirilmiş ağ topolojisi, bileşenleri tek bir alt ağda gruplandırıyor. Kuruluşunuzun görev ayrımı ve ağ tasarımı yönergelerini izleyin.
Giden İnternet erişimiyle ilgili dikkat edilmesi gerekenler
Azure'da NiFi'nin çalışması için genel İnternet erişimi gerekmez. Veri akışının veri almak için İnternet erişimine ihtiyacı yoksa, giden İnternet erişimini devre dışı bırakmak için aşağıdaki adımları izleyerek kümenin güvenliğini geliştirin:
Sanal ağda ek bir ağ güvenlik grubu kuralı oluşturun.
Şu ayarları kullanın:
- Kaynak:
Any
- Hedef:
Internet
- Eylem:
Deny
- Kaynak:
Bu kural uygulandığında, sanal ağda özel bir uç nokta yapılandırdığınızda veri akışından bazı Azure hizmetlerine erişmeye devam edebilirsiniz. Bu amaçla Azure Özel Bağlantı kullanın. Bu hizmet, trafiğinizin Microsoft omurga ağında seyahat edebilmesi için başka bir dış ağ erişimi gerektirmeyen bir yol sağlar. NiFi şu anda Blob Depolama ve Data Lake Storage işlemcileri için Özel Bağlantı destekler. Özel ağınızda bir Ağ Zaman Protokolü (NTP) sunucusu yoksa, NTP'ye giden erişime izin verin. Ayrıntılı bilgi için bkz . Azure'da Linux VM'leri için zaman eşitleme.
Veri koruması
NiFi'yi güvenli olmayan, kablo şifrelemesi, kimlik ve erişim yönetimi (IAM) veya veri şifrelemesi olmadan çalıştırmak mümkündür. Ancak en iyisi üretim ve genel bulut dağıtımlarının güvenliğini şu yollarla sağlamaktır:
- Aktarım Katmanı Güvenliği (TLS) ile iletişimi şifreleme
- Desteklenen bir kimlik doğrulama ve yetkilendirme mekanizması kullanma
- Bekleyen verileri şifreleme
Azure Depolama, sunucu tarafı saydam veri şifrelemesi sağlar. Ancak 1.13.2 sürümünden itibaren NiFi, varsayılan olarak kablo şifreleme veya IAM yapılandırmaz. Bu davranış, gelecek sürümlerde değişebilir.
Aşağıdaki bölümlerde dağıtımların güvenliğini sağlama adımları gösterilmektedir:
- TLS ile kablo şifrelemeyi etkinleştirme
- Sertifikaları veya Microsoft Entra Kimliğini temel alan kimlik doğrulamasını yapılandırma
- Azure'da şifrelenmiş depolamayı yönetme
Disk şifrelemesi
Güvenliği geliştirmek için Azure disk şifrelemesini kullanın. Ayrıntılı bir yordam için bkz . Azure CLI ile sanal makine ölçek kümesindeki işletim sistemini ve bağlı veri disklerini şifreleme. Bu belgede kendi şifreleme anahtarınızı sağlamaya yönelik yönergeler de bulunur. Aşağıdaki adımlarda, çoğu dağıtımda çalışan NiFi için temel bir örnek özetlenmiştir:
Mevcut bir Key Vault örneğinde disk şifrelemesini açmak için aşağıdaki Azure CLI komutunu kullanın:
az keyvault create --resource-group myResourceGroup --name myKeyVaultName --enabled-for-disk-encryption
Aşağıdaki komutla sanal makine ölçek kümesi veri disklerinin şifrelenmesini açın:
az vmss encryption enable --resource-group myResourceGroup --name myScaleSet --disk-encryption-keyvault myKeyVaultID --volume-type DATA
İsteğe bağlı olarak bir anahtar şifreleme anahtarı (KEK) kullanabilirsiniz. KEK ile şifrelemek için aşağıdaki Azure CLI komutunu kullanın:
az vmss encryption enable --resource-group myResourceGroup --name myScaleSet \ --disk-encryption-keyvault myKeyVaultID \ --key-encryption-keyvault myKeyVaultID \ --key-encryption-key https://<mykeyvaultname>.vault.azure.net/keys/myKey/<version> \ --volume-type DATA
Not
Sanal makine ölçek kümenizi el ile güncelleştirme modu için yapılandırdıysanız komutunu çalıştırın update-instances
. Key Vault'ta depoladığınız şifreleme anahtarının sürümünü ekleyin.
Aktarım sırasında şifreleme
NiFi, aktarım sırasında şifreleme için TLS 1.2'i destekler. Bu protokol, kullanıcı arabirimine kullanıcı erişimi için koruma sağlar. Kümeler ile protokol, NiFi düğümleri arasındaki iletişimi korur. ZooKeeper ile iletişimi de koruyabilir. TLS'yi etkinleştirdiğinizde NiFi, aşağıdakiler için karşılıklı kimlik doğrulaması için karşılıklı TLS (mTLS) kullanır:
- Bu kimlik doğrulama türünü yapılandırdıysanız sertifika tabanlı istemci kimlik doğrulaması.
- Bütün topluluk içi iletişimler.
TLS'yi etkinleştirmek için aşağıdaki adımları izleyin:
İstemci-sunucu ve küme içi iletişim ve kimlik doğrulaması için bir anahtar deposu ve güven deposu oluşturun.
öğesini yapılandırın
$NIFI_HOME/conf/nifi.properties
. Aşağıdaki değerleri ayarlayın:- Konak adları
- Bağlantı Noktaları
- Keystore özellikleri
- Truststore özellikleri
- Varsa Küme ve ZooKeeper güvenlik özellikleri
içinde
$NIFI_HOME/conf/authorizers.xml
kimlik doğrulamayı, genellikle sertifika tabanlı kimlik doğrulamasına sahip ilk kullanıcıyla veya başka bir seçenekle yapılandırın.İsteğe bağlı olarak NiFi ile ara sunucular, yük dengeleyiciler veya dış uç noktalar arasında mTLS ve ara sunucu okuma ilkesi yapılandırın.
Tam bir izlenecek yol için Apache projesi belgelerindeki NiFi'yi TLS ile güvenli hale getirme bölümüne bakın.
Not
Sürüm 1.13.2 itibariyle:
- NiFi, TLS'yi varsayılan olarak etkinleştirmez.
- TLS özellikli NiFi örnekleri için anonim ve tek kullanıcı erişimi için kullanıma hazır destek yoktur.
Aktarım sırasında şifreleme için TLS'yi etkinleştirmek için, içinde $NIFI_HOME/conf/authorizers.xml
kimlik doğrulaması ve yetkilendirme için bir kullanıcı grubu ve ilke sağlayıcısı yapılandırın. Daha fazla bilgi için bu makalenin devamında yer alan Kimlik ve erişim denetimi bölümüne bakın.
Sertifikalar, anahtarlar ve anahtar depoları
TLS'yi desteklemek için sertifikalar oluşturun, bunları Java KeyStore ve TrustStore'da depolayın ve bir NiFi kümesine dağıtın. Sertifikalar için iki genel seçenek vardır:
- Otomatik olarak imzalanan sertifikalar
- Sertifikalı yetkililerin (CA' lar) imzalayan sertifikalar
CA imzalı sertifikalarla, kümedeki düğümler için sertifika oluşturmak üzere ara CA kullanmak en iyisidir.
KeyStore ve TrustStore, Java platformundaki anahtar ve sertifika kapsayıcılarıdır. KeyStore, kümedeki bir düğümün özel anahtarını ve sertifikasını depolar. TrustStore aşağıdaki sertifika türlerinden birini depolar:
- KeyStore'da otomatik olarak imzalanan sertifikalar için tüm güvenilen sertifikalar
- KeyStore'da CA ile imzalanan sertifikalar için CA'dan sertifika
Bir kapsayıcı seçtiğinizde NiFi kümenizin ölçeklenebilirliğini göz önünde bulundurun. Örneğin, gelecekte bir kümedeki düğüm sayısını artırmak veya azaltmak isteyebilirsiniz. KeyStore'da CA imzalı sertifikalar ve bu durumda TrustStore'daki bir CA'dan bir veya daha fazla sertifika seçin. Bu seçenekle, kümenin mevcut düğümlerinde mevcut TrustStore'yu güncelleştirmeye gerek yoktur. Mevcut bir TrustStore, şu düğüm türlerindeki sertifikalara güvenir ve bunları kabul eder:
- Kümeye eklediğiniz düğümler
- Kümedeki diğer düğümlerin yerini alan düğümler
NiFi yapılandırması
NiFi için TLS'yi etkinleştirmek için bu tablodaki özellikleri yapılandırmak için kullanın $NIFI_HOME/conf/nifi.properties
. Aşağıdaki özelliklerin NiFi'ye erişmek için kullandığınız konak adını içerdiğinden emin olun:
nifi.web.https.host
veyanifi.web.proxy.host
- Konak sertifikasının belirlenen adı veya konu alternatif adları
Aksi takdirde bir konak adı doğrulama hatası veya HTTP ANA BILGISAYAR üst bilgisi doğrulama hatası oluşabilir ve erişiminiz reddedebilir.
Özellik adı | Açıklama | Örnek değerler |
---|---|---|
nifi.web.https.host |
Kullanıcı arabirimi ve REST API için kullanılacak ana bilgisayar adı veya IP adresi. Bu değer dahili olarak çözümlenebilir olmalıdır. Herkese açık bir ad kullanmamanızı öneririz. | nifi.internal.cloudapp.net |
nifi.web.https.port |
Kullanıcı arabirimi ve REST API için kullanılacak HTTPS bağlantı noktası. | 9443 (varsayılan) |
nifi.web.proxy.host |
İstemcilerin kullanıcı arabirimine ve REST API'ye erişmek için kullandığı alternatif konak adlarının virgülle ayrılmış listesi. Bu liste genellikle sunucu sertifikasında konu alternatif adı (SAN) olarak belirtilen tüm konak adlarını içerir. Liste, yük dengeleyici, ara sunucu veya Kubernetes giriş denetleyicisinin kullandığı herhangi bir konak adını ve bağlantı noktasını da içerebilir. | 40.67.218.235, 40.67.218.235:443, nifi.westus2.cloudapp.com, nifi.westus2.cloudapp.com:443 |
nifi.security.keystore |
Sertifikanın özel anahtarını içeren bir JKS veya PKCS12 anahtar deposunun yolu. | ./conf/keystore.jks |
nifi.security.keystoreType |
Anahtar deposu türü. | JKS veya PKCS12 |
nifi.security.keystorePasswd |
Anahtar deposu parolası. | O8SitLBYpCz7g/RpsqH+zM |
nifi.security.keyPasswd |
(İsteğe bağlı) Özel anahtarın parolası. | |
nifi.security.truststore |
Güvenilen kullanıcıların ve küme düğümlerinin kimliğini doğrulayan sertifikalar veya CA sertifikaları içeren bir JKS veya PKCS12 güven deposunun yolu. | ./conf/truststore.jks |
nifi.security.truststoreType |
Truststore türü. | JKS veya PKCS12 |
nifi.security.truststorePasswd |
Truststore parolası. | RJlpGe6/TuN5fG+VnaEPi8 |
nifi.cluster.protocol.is.secure |
Küme içi iletişim için TLS'nin durumu. ise nifi.cluster.is.node true , küme TLS'yi etkinleştirmek için bu değeri olarak true ayarlayın. |
true |
nifi.remote.input.secure |
Siteden siteye iletişim için TLS'nin durumu. | true |
Aşağıdaki örnek, bu özelliklerin içinde $NIFI_HOME/conf/nifi.properties
nasıl göründüğünü gösterir. ve nifi.web.http.port
değerlerinin nifi.web.http.host
boş olduğunu unutmayın.
nifi.remote.input.secure=true
nifi.web.http.host=
nifi.web.http.port=
nifi.web.https.host=nifi.internal.cloudapp.net
nifi.web.https.port=9443
nifi.web.proxy.host=40.67.218.235, 40.67.218.235:443, nifi.westus2.cloudapp.com, nifi.westus2.cloudapp.com:443
nifi.security.keystore=./conf/keystore.jks
nifi.security.keystoreType=JKS
nifi.security.keystorePasswd=O8SitLBYpCz7g/RpsqH+zM
nifi.security.keyPasswd=
nifi.security.truststore=./conf/truststore.jks
nifi.security.truststoreType=JKS
nifi.security.truststorePasswd=RJlpGe6/TuN5fG+VnaEPi8
nifi.cluster.protocol.is.secure=true
ZooKeeper yapılandırması
Çekirdek iletişimleri ve istemci erişimi için Apache ZooKeeper'da TLS'yi etkinleştirme yönergeleri için bkz. ZooKeeper Yönetici Kılavuzu. Yalnızca 3.5.5 veya sonraki sürümler bu işlevselliği destekler.
NiFi, sıfır öncü kümeleme ve küme koordinasyonu için ZooKeeper kullanır. 1.13.0 sürümünden itibaren NiFi, ZooKeeper'ın TLS özellikli örneklerine güvenli istemci erişimini destekler. ZooKeeper, küme üyeliğini ve küme kapsamlı işlemci durumunu düz metin olarak depolar. Bu nedenle ZooKeeper istemci isteklerinin kimliğini doğrulamak için ZooKeeper'a güvenli istemci erişimi kullanmak önemlidir. Ayrıca aktarımdaki hassas değerleri şifreleyin.
ZooKeeper'a NiFi istemci erişimi için TLS'yi etkinleştirmek için içinde $NIFI_HOME/conf/nifi.properties
aşağıdaki özellikleri ayarlayın. Özellikleri yapılandırmadan ayarlarsanız nifi.zookeeper.client.secure
true
NiFi, içinde nifi.securityproperties
belirttiğiniz anahtar deposuna ve güven deposuna nifi.zookeeper.security
geri döner.
Özellik adı | Açıklama | Örnek değerler |
---|---|---|
nifi.zookeeper.client.secure |
ZooKeeper'a bağlanırken istemci TLS'nin durumu. | true |
nifi.zookeeper.security.keystore |
Kimlik doğrulaması için ZooKeeper'a sunulan sertifikanın özel anahtarını içeren JKS, PKCS12 veya PEM anahtar deposunun yolu. | ./conf/zookeeper.keystore.jks |
nifi.zookeeper.security.keystoreType |
Anahtar deposu türü. | JKS , PKCS12 , PEM veya uzantıya göre otomatik algıla |
nifi.zookeeper.security.keystorePasswd |
Anahtar deposu parolası. | caB6ECKi03R/co+N+64lrz |
nifi.zookeeper.security.keyPasswd |
(İsteğe bağlı) Özel anahtarın parolası. | |
nifi.zookeeper.security.truststore |
ZooKeeper kimliğini doğrulamak için kullanılan sertifikaları veya CA sertifikalarını içeren JKS, PKCS12 veya PEM güven deposunun yolu. | ./conf/zookeeper.truststore.jks |
nifi.zookeeper.security.truststoreType |
Truststore türü. | JKS , PKCS12 , PEM veya uzantıya göre otomatik algıla |
nifi.zookeeper.security.truststorePasswd |
Truststore parolası. | qBdnLhsp+mKvV7wab/L4sv |
nifi.zookeeper.connect.string |
ZooKeeper konağına veya çekirdeğine bağlantı dizesi. Bu dize virgülle ayrılmış bir değer listesidir host:port . secureClientPort Genellikle değer değerle clientPort aynı değildir. Doğru değer için ZooKeeper yapılandırmanıza bakın. |
zookeeper1.internal.cloudapp.net:2281, zookeeper2.internal.cloudapp.net:2281, zookeeper3.internal.cloudapp.net:2281 |
Aşağıdaki örnekte, bu özelliklerin içinde nasıl göründüğü gösterilmektedir $NIFI_HOME/conf/nifi.properties
:
nifi.zookeeper.client.secure=true
nifi.zookeeper.security.keystore=./conf/keystore.jks
nifi.zookeeper.security.keystoreType=JKS
nifi.zookeeper.security.keystorePasswd=caB6ECKi03R/co+N+64lrz
nifi.zookeeper.security.keyPasswd=
nifi.zookeeper.security.truststore=./conf/truststore.jks
nifi.zookeeper.security.truststoreType=JKS
nifi.zookeeper.security.truststorePasswd=qBdnLhsp+mKvV7wab/L4sv
nifi.zookeeper.connect.string=zookeeper1.internal.cloudapp.net:2281,zookeeper2.internal.cloudapp.net:2281,zookeeper3.internal.cloudapp.net:2281
ZooKeeper'ın TLS ile güvenliğini sağlama hakkında daha fazla bilgi için bkz . Apache NiFi Yönetim Kılavuzu.
Kimlik ve erişim denetimi
NiFi'de kimlik ve erişim denetimi, kullanıcı kimlik doğrulaması ve yetkilendirme yoluyla sağlanır. Kullanıcı kimlik doğrulaması için NiFi'nin aralarından seçim yapabileceğiniz birden çok seçenek vardır: Tek Kullanıcı, LDAP, Kerberos, Güvenlik Onaylama İşaretleme Dili (SAML) ve OpenID Connect (OIDC). Bir seçeneği yapılandırmazsanız NiFi, HTTPS üzerinden kullanıcıların kimliğini doğrulamak için istemci sertifikalarını kullanır.
Çok faktörlü kimlik doğrulamasını düşünüyorsanız Microsoft Entra ID ve OIDC birleşimini öneririz. Microsoft Entra ID, OIDC ile bulutta yerel çoklu oturum açmayı (SSO) destekler. Bu birleşimle, kullanıcılar birçok kurumsal güvenlik özelliğinden yararlanabilir:
- Kullanıcı hesaplarından şüpheli etkinlikleri günlüğe kaydetme ve uyarı alma
- Devre dışı bırakılan kimlik bilgilerine erişme girişimlerini izleme
- Olağan dışı hesap oturum açma davranışıyla ilgili uyarı
Yetkilendirme için NiFi, kullanıcı, grup ve erişim ilkelerini temel alan zorlama sağlar. NiFi bu zorlamayı UserGroupProviders ve AccessPolicyProviders aracılığıyla sağlar. Varsayılan olarak sağlayıcılar Dosya, LDAP, Kabuk ve Azure Graph tabanlı UserGroupProviders'ı içerir. AzureGraphUserGroupProvider ile Microsoft Entra Id'den kaynak kullanıcı grupları oluşturabilirsiniz. Daha sonra bu gruplara ilke atayabilirsiniz. Yapılandırma yönergeleri için bkz . Apache NiFi Yönetim Kılavuzu.
Dosyaları ve Apache Ranger'ı temel alan AccessPolicyProviders şu anda kullanıcı ve grup ilkelerini yönetmek ve depolamak için kullanılabilir. Ayrıntılı bilgi için Apache NiFi belgelerine ve Apache Ranger belgelerine bakın.
Uygulama ağ geçidi
Uygulama ağ geçidi, NiFi arabirimi için yönetilen katman 7 yük dengeleyici sağlar. Uygulama ağ geçidini, arka uç havuzu olarak NiFi düğümlerinin sanal makine ölçek kümesini kullanacak şekilde yapılandırın.
Çoğu NiFi yüklemesi için aşağıdaki Application Gateway yapılandırmasını öneririz:
- Katman: Standart
- SKU boyutu: orta
- Örnek sayısı: iki veya daha fazla
Her düğümdeki web sunucusunun durumunu izlemek için bir sistem durumu yoklaması kullanın. İyi durumda olmayan düğümleri yük dengeleyici döndürmesinden kaldırın. Bu yaklaşım, genel küme iyi durumda olmadığında kullanıcı arabirimini görüntülemeyi kolaylaştırır. Tarayıcı sizi yalnızca şu anda iyi durumda olan ve isteklere yanıt veren düğümlere yönlendirir.
Dikkate alınması gereken iki önemli durum yoklaması vardır. Birlikte kümedeki her düğümün genel durumuyla ilgili düzenli bir sinyal sağlar. İlk sistem durumu araştırmasını yoluna /NiFi
işaret etmek için yapılandırın. Bu yoklama, her düğümdeki NiFi kullanıcı arabiriminin sistem durumunu belirler. yolu /nifi-api/controller/cluster
için ikinci bir sistem durumu yoklaması yapılandırın. Bu araştırma, her düğümün şu anda iyi durumda olup olmadığını ve genel kümeye katılıp katılmadığını gösterir.
Uygulama ağ geçidinin ön uç IP adresini yapılandırmak için iki seçeneğiniz vardır:
- Genel IP adresi ile
- Özel alt ağ IP adresi ile
Yalnızca kullanıcıların genel İnternet üzerinden kullanıcı arabirimine erişmesi gerekiyorsa genel IP adresi ekleyin. Kullanıcılar için genel İnternet erişimi gerekli değilse, yük dengeleyici ön ucuna sanal ağdaki bir sıçrama kutusundan veya özel ağınızla eşleme yoluyla erişin. Uygulama ağ geçidini genel IP adresiyle yapılandırıyorsanız NiFi için istemci sertifikası kimlik doğrulamasını etkinleştirmenizi ve NiFi kullanıcı arabirimi için TLS'yi etkinleştirmenizi öneririz. Kaynak IP adreslerini sınırlamak için temsilci uygulama ağ geçidi alt ağında bir ağ güvenlik grubu da kullanabilirsiniz.
Tanılama ve sistem durumu izleme
Application Gateway'in tanılama ayarlarında ölçümleri ve erişim günlüklerini göndermek için bir yapılandırma seçeneği vardır. Bu seçeneği kullanarak bu bilgileri yük dengeleyiciden çeşitli yerlere gönderebilirsiniz:
- Depolama hesabı
- Event Hubs
- Log Analytics çalışma alanı
Bu ayarı açmak yük dengeleme sorunlarının hatalarını ayıklamak ve küme düğümlerinin durumu hakkında içgörü elde etmek için yararlıdır.
Aşağıdaki Log Analytics sorgusu, Application Gateway perspektifinden küme düğüm durumunu zaman içinde gösterir. İyi durumda olmayan düğümler için uyarılar veya otomatik onarım eylemleri oluşturmak için benzer bir sorgu kullanabilirsiniz.
AzureDiagnostics
| summarize UnHealthyNodes = max(unHealthyHostCount_d), HealthyNodes = max(healthyHostCount_d) by bin(TimeGenerated, 5m)
| render timechart
Sorgu sonuçlarının aşağıdaki grafiğinde kümenin sistem durumunun zaman görünümü gösterilir:
Kullanılabilirlik
Bu çözümü uygularken kullanılabilirlik hakkında aşağıdaki noktaları göz önünde bulundurun:
Yük Dengeleyici
Düğüm kapalı kalma süresi sırasında kullanıcı arabirimi kullanılabilirliğini artırmak için kullanıcı arabirimi için bir yük dengeleyici kullanın.
VM'leri ayırma
Kullanılabilirliği artırmak için ZooKeeper kümesini NiFi kümesindeki VM'lerden ayrı VM'lere dağıtın. ZooKeeper'ı yapılandırma hakkında daha fazla bilgi için Apache NiFi Sistem Yöneticisi Kılavuzu'ndaki Durum Yönetimi bölümüne bakın.
Kullanılabilirlik alanları
Kullanılabilirliği en üst düzeye çıkarmak için hem NiFi sanal makine ölçek kümesini hem de ZooKeeper kümesini bölgeler arası bir yapılandırmaya dağıtın. Kümedeki düğümler arasındaki iletişim kullanılabilirlik alanlarını aştığında, az miktarda gecikme süresine neden olur. Ancak bu gecikme genellikle kümenin aktarım hızı üzerinde en düşük düzeyde bir genel etkiye sahiptir.
Sanal makine ölçek kümeleri
NiFi düğümlerini kullanılabilir durumdaki kullanılabilirlik alanlarına yayılan tek bir sanal makine ölçek kümesine dağıtmanızı öneririz. Ölçek kümelerini bu şekilde kullanma hakkında ayrıntılı bilgi için bkz. Kullanılabilirlik Alanları kullanan bir sanal makine ölçek kümesi oluşturma.
İzleme
NiFi kümesinin durumunu ve performansını izlemek için raporlama görevlerini kullanın.
Raporlama görevi tabanlı izleme
İzleme için NiFi'de yapılandırıp çalıştırdığınız bir raporlama görevi kullanabilirsiniz. Tanılama ve sistem durumu izlemenin açıklandığı gibi Log Analytics, NiFi Azure paketinde bir raporlama görevi sağlar. İzlemeyi Log Analytics ve mevcut izleme veya günlüğe kaydetme sistemleriyle tümleştirmek için bu raporlama görevini kullanabilirsiniz.
Log Analytics sorguları
Aşağıdaki bölümlerde yer alan örnek sorgular kullanmaya başlamanıza yardımcı olabilir. Log Analytics verilerini sorgulamaya genel bakış için bkz . Azure İzleyici günlük sorguları.
İzleyici ve Log Analytics'teki günlük sorguları Kusto Sorgu Dili bir sürümünü kullanır. Ancak günlük sorguları ile Kusto sorguları arasında farklılıklar vardır. Daha fazla bilgi için bkz . Kusto sorgusuna genel bakış.
Daha yapılandırılmış öğrenme için şu öğreticilere bakın:
- Azure İzleyici’de günlük sorgularını kullanmaya başlama
- Azure İzleyici'de Log Analytics'i kullanmaya başlama
Log Analytics raporlama görevi
NiFi varsayılan olarak ölçüm verilerini tabloya nifimetrics
gönderir. Ancak, raporlama görevi özelliklerinde farklı bir hedef yapılandırabilirsiniz. Raporlama görevi aşağıdaki NiFi ölçümlerini yakalar:
Ölçüm türü | Ölçüm adı |
---|---|
NiFi Ölçümleri | FlowFilesReceived |
NiFi Ölçümleri | FlowFilesSent |
NiFi Ölçümleri | FlowFilesQueued |
NiFi Ölçümleri | BytesReceived |
NiFi Ölçümleri | BytesWritten |
NiFi Ölçümleri | BytesRead |
NiFi Ölçümleri | BytesSent |
NiFi Ölçümleri | BytesQueued |
Bağlantı noktası durumu ölçümleri | InputCount |
Bağlantı noktası durumu ölçümleri | InputBytes |
Bağlantı durumu ölçümleri | QueuedCount |
Bağlantı durumu ölçümleri | QueuedBytes |
Bağlantı noktası durumu ölçümleri | OutputCount |
Bağlantı noktası durumu ölçümleri | OutputBytes |
Java sanal makinesi (JVM) Ölçümleri | jvm.uptime |
JVM Ölçümleri | jvm.heap_used |
JVM Ölçümleri | jvm.heap_usage |
JVM Ölçümleri | jvm.non_heap_usage |
JVM Ölçümleri | jvm.thread_states.runnable |
JVM Ölçümleri | jvm.thread_states.blocked |
JVM Ölçümleri | jvm.thread_states.timed_waiting |
JVM Ölçümleri | jvm.thread_states.terminated |
JVM Ölçümleri | jvm.thread_count |
JVM Ölçümleri | jvm.daemon_thread_count |
JVM Ölçümleri | jvm.file_descriptor_usage |
JVM Ölçümleri | jvm.gc.runs jvm.gc.runs.g1_old_generation jvm.gc.runs.g1_young_generation |
JVM Ölçümleri | jvm.gc.time jvm.gc.time.g1_young_generation jvm.gc.time.g1_old_generation |
JVM Ölçümleri | jvm.buff_pool_direct_capacity |
JVM Ölçümleri | jvm.buff_pool_direct_count |
JVM Ölçümleri | jvm.buff_pool_direct_mem_used |
JVM Ölçümleri | jvm.buff_pool_mapped_capacity |
JVM Ölçümleri | jvm.buff_pool_mapped_count |
JVM Ölçümleri | jvm.buff_pool_mapped_mem_used |
JVM Ölçümleri | jvm.mem_pool_code_cache |
JVM Ölçümleri | jvm.mem_pool_compressed_class_space |
JVM Ölçümleri | jvm.mem_pool_g1_eden_space |
JVM Ölçümleri | jvm.mem_pool_g1_old_gen |
JVM Ölçümleri | jvm.mem_pool_g1_survivor_space |
JVM Ölçümleri | jvm.mem_pool_metaspace |
JVM Ölçümleri | jvm.thread_states.new |
JVM Ölçümleri | jvm.thread_states.waiting |
İşlemci Düzeyi ölçümleri | BytesRead |
İşlemci Düzeyi ölçümleri | BytesWritten |
İşlemci Düzeyi ölçümleri | FlowFilesReceived |
İşlemci Düzeyi ölçümleri | FlowFilesSent |
Aşağıda bir kümenin BytesQueued
ölçümü için örnek bir sorgu verilmişti:
let table_name = nifimetrics_CL;
let metric = "BytesQueued";
table_name
| where Name_s == metric
| where Computer contains {ComputerName}
| project TimeGenerated, Computer, ProcessGroupName_s, Count_d, Name_s
| summarize sum(Count_d) by bin(TimeGenerated, 1m), Computer, Name_s
| render timechart
Bu sorgu, bu ekran görüntüsündekine benzer bir grafik oluşturur:
Not
Azure'da NiFi çalıştırdığınızda Log Analytics raporlama göreviyle sınırlı değilsiniz. NiFi, birçok üçüncü taraf izleme teknolojisi için raporlama görevlerini destekler. Desteklenen raporlama görevlerinin listesi için Apache NiFi Belgeleri dizininin Raporlama Görevleri bölümüne bakın.
NiFi altyapısı izleme
Raporlama görevinin yanı sıra Log Analytics VM uzantısını NiFi ve ZooKeeper düğümlerine yükleyin. Bu uzantı ZooKeeper'dan günlükleri, ek VM düzeyindeki ölçümleri ve ölçümleri toplar.
NiFi uygulaması, kullanıcı, bootstrap ve ZooKeeper için özel günlükler
Daha fazla günlük yakalamak için şu adımları izleyin:
Azure portalında Log Analytics çalışma alanları'nı ve ardından çalışma alanınızı seçin.
Ayarlar'ın altında Özel günlükler'i seçin.
Özel günlük ekle'yi seçin.
Şu değerlerle özel bir günlük ayarlayın:
- Ad:
NiFiAppLogs
- Yol türü:
Linux
- Yol adı:
/opt/nifi/logs/nifi-app.log
- Ad:
Şu değerlerle özel bir günlük ayarlayın:
- Ad:
NiFiBootstrapAndUser
- İlk yol türü:
Linux
- İlk yol adı:
/opt/nifi/logs/nifi-user.log
- İkinci yol türü:
Linux
- İkinci yol adı:
/opt/nifi/logs/nifi-bootstrap.log
- Ad:
Şu değerlerle özel bir günlük ayarlayın:
- Ad:
NiFiZK
- Yol türü:
Linux
- Yol adı:
/opt/zookeeper/logs/*.out
- Ad:
İlk örneğin oluşturduğu özel tablonun örnek sorgusu NiFiAppLogs
aşağıda verilmişti:
NiFiAppLogs_CL
| where TimeGenerated > ago(24h)
| where Computer contains {ComputerName} and RawData contains "error"
| limit 10
Bu sorgu aşağıdaki sonuçlara benzer sonuçlar üretir:
Altyapı günlüğü yapılandırması
VM'leri veya fiziksel bilgisayarları izlemek ve yönetmek için İzleyici'yi kullanabilirsiniz. Bu kaynaklar yerel veri merkezinizde veya başka bir bulut ortamında olabilir. Bu izlemeyi ayarlamak için Log Analytics aracısını dağıtın. Aracıyı Log Analytics çalışma alanına rapor vermek üzere yapılandırın. Daha fazla bilgi için bkz . Log Analytics aracıya genel bakış.
Aşağıdaki ekran görüntüsünde NiFi VM'leri için örnek aracı yapılandırması gösterilmektedir. Tabloda Perf
toplanan veriler depolanıyor.
NiFi uygulama Perf
günlükleri için örnek bir sorgu aşağıda verilmişti:
let cluster_name = {ComputerName};
// The hourly average of CPU usage across all computers.
Perf
| where Computer contains {ComputerName}
| where CounterName == "% Processor Time" and InstanceName == "_Total"
| where ObjectName == "Processor"
| summarize CPU_Time_Avg = avg(CounterValue) by bin(TimeGenerated, 30m), Computer
Bu sorgu, bu ekran görüntüsündekine benzer bir rapor oluşturur:
Uyarılar
NiFi kümesinin durumu ve performansı hakkında uyarılar oluşturmak için İzleyici'yi kullanın. Örnek uyarılar şunlardır:
- Toplam kuyruk sayısı eşiği aştı.
- Değer
BytesWritten
beklenen eşiğin altında. - Değer
FlowFilesReceived
bir eşiğin altındadır. - Küme iyi durumda değil.
İzleyici'de uyarıları ayarlama hakkında daha fazla bilgi için bkz . Microsoft Azure'da uyarılara genel bakış.
Yapılandırma parametreleri
Aşağıdaki bölümlerde, ZooKeeper ve Java dahil olmak üzere NiFi ve bağımlılıkları için önerilen, varsayılan olmayan yapılandırmalar ele alınmaktadır. Bu ayarlar bulutta mümkün olan küme boyutları için uygundur. Aşağıdaki yapılandırma dosyalarındaki özellikleri ayarlayın:
$NIFI_HOME/conf/nifi.properties
$NIFI_HOME/conf/bootstrap.conf
$ZOOKEEPER_HOME/conf/zoo.cfg
$ZOOKEEPER_HOME/bin/zkEnv.sh
Kullanılabilir yapılandırma özellikleri ve dosyaları hakkında ayrıntılı bilgi için bkz . Apache NiFi Sistem Yöneticisi Kılavuzu ve ZooKeeper Yönetici Kılavuzu.
NiFi
Azure dağıtımı için içindeki $NIFI_HOME/conf/nifi.properties
özellikleri ayarlamayı göz önünde bulundurun. Aşağıdaki tabloda en önemli özellikler listelenir. Daha fazla öneri ve içgörü için Apache NiFi posta listelerine bakın.
Parametre | Açıklama | Varsayılan | Öneri |
---|---|---|---|
nifi.cluster.node.connection.timeout |
Diğer küme düğümlerine bağlantı açarken ne kadar süre beklenmesi gerekir? | 5 saniye | 60 saniye |
nifi.cluster.node.read.timeout |
Diğer küme düğümlerine istekte bulunurken yanıt bekleme süresi. | 5 saniye | 60 saniye |
nifi.cluster.protocol.heartbeat.interval |
Sinyallerin küme düzenleyicisine ne sıklıkta geri gönderebilirsiniz? | 5 saniye | 60 saniye |
nifi.cluster.node.max.concurrent.requests |
REST API çağrıları gibi HTTP çağrılarını diğer küme düğümlerine çoğaltırken kullanılacak paralellik düzeyi. | 100 | 500 |
nifi.cluster.node.protocol.threads |
Kümeler arası/çoğaltılmış iletişimler için ilk iş parçacığı havuzu boyutu. | 10 | 50 |
nifi.cluster.node.protocol.max.threads |
Kümeler arası/çoğaltılmış iletişimler için kullanılacak en fazla iş parçacığı sayısı. | 50 | 75 |
nifi.cluster.flow.election.max.candidates |
Geçerli akışın ne olduğuna karar verirken kullanılacak düğüm sayısı. Bu değer, belirtilen sayıdaki oyunu kısa devreler. | empty | 75 |
nifi.cluster.flow.election.max.wait.time |
Geçerli akışın ne olduğuna karar vermeden önce düğümlerde bekleme süresi. | 5 dakika | 5 dakika |
Küme davranışı
Kümeleri yapılandırırken aşağıdaki noktaları göz önünde bulundurun.
Timeout
Kümenin ve düğümlerinin genel durumunu sağlamak için zaman aşımlarını artırmak yararlı olabilir. Bu uygulama, hataların geçici ağ sorunlarından veya yüksek yüklerden kaynaklanmamasını garanti altına alır.
Dağıtılmış bir sistemde tek tek sistemlerin performansı farklılık gösterir. Bu varyasyon, genellikle düğümler arası, kümeler arası iletişimi etkileyen ağ iletişimlerini ve gecikme süresini içerir. Ağ altyapısı veya sistemin kendisi bu değişime neden olabilir. Sonuç olarak, değişim olasılığı büyük olasılıkla büyük sistem kümelerindedir. Yük altındaki Java uygulamalarında, Java sanal makinesinde (JVM) atık toplama (GC) duraklamaları istek yanıt sürelerini de etkileyebilir.
Zaman aşımlarını sisteminizin gereksinimlerine uyacak şekilde yapılandırmak için aşağıdaki bölümlerdeki özellikleri kullanın:
nifi.cluster.node.connection.timeout ve nifi.cluster.node.read.timeout
özelliği, nifi.cluster.node.connection.timeout
bir bağlantı açılırken ne kadar süre beklenmek üzere yapılacağını belirtir. nifi.cluster.node.read.timeout
özelliği, istekler arasında veri alınırken ne kadar süre bekleneceklerini belirtir. Her özellik için varsayılan değer beş saniyedir. Bu özellikler düğümden düğüme istekler için geçerlidir. Bu değerlerin artırılması, ilgili birkaç sorunun giderilmesine yardımcı olur:
- Sinyal kesintileri nedeniyle küme düzenleyicisinin bağlantısı kesiliyor
- Kümeye katılırken koordinatörden akış alınamaması
- Siteden siteye (S2S) ve yük dengeleme iletişimleri oluşturma
Kümenizin üç veya daha az düğüm gibi çok küçük bir ölçek kümesi yoksa varsayılan değerlerden daha büyük değerler kullanın.
nifi.cluster.protocol.heartbeat.interval
NiFi kümeleme stratejisinin bir parçası olarak, her düğüm sağlıklı durumunu iletmek için bir sinyal yayar. Varsayılan olarak düğümler her beş saniyede bir sinyal gönderir. Küme düzenleyicisi bir düğümden bir satırdaki sekiz sinyalin başarısız olduğunu algılarsa düğümün bağlantısını keser. Yavaş sinyalleri barındırmaya yardımcı olmak ve kümenin nifi.cluster.protocol.heartbeat.interval
düğümlerin gereksiz yere bağlantısını kesmesini önlemek için özelliğinde ayarlanan aralığı artırın.
Eşzamanlılık
Eşzamanlılık ayarlarını yapılandırmak için aşağıdaki bölümlerdeki özellikleri kullanın:
nifi.cluster.node.protocol.threads ve nifi.cluster.node.protocol.max.threads
özelliği, nifi.cluster.node.protocol.max.threads
S2S yük dengeleme ve kullanıcı arabirimi toplama gibi tüm küme iletişimleri için kullanılacak en fazla iş parçacığı sayısını belirtir. Bu özellik için varsayılan değer 50 iş parçacığıdır. Büyük kümelerde, bu işlemlerin gerektirdiği daha fazla sayıda isteği hesaba eklemek için bu değeri artırın.
özelliği ilk nifi.cluster.node.protocol.threads
iş parçacığı havuzu boyutunu belirler. Varsayılan değer 10 iş parçacığıdır. Bu değer en düşük değerdir. gerektiğinde içinde nifi.cluster.node.protocol.max.threads
ayarlanan en yüksek değere kadar büyür. Başlatma sırasında nifi.cluster.node.protocol.threads
büyük bir ölçek kümesi kullanan kümelerin değerini artırın.
nifi.cluster.node.max.concurrent.requests
REST API çağrıları ve UI çağrıları gibi birçok HTTP isteğinin kümedeki diğer düğümlere çoğaltılması gerekir. Kümenin boyutu büyüdükçe, artan sayıda istek çoğaltılır. özelliği bekleyen nifi.cluster.node.max.concurrent.requests
isteklerin sayısını sınırlar. Değeri beklenen küme boyutunu aşmalıdır. Varsayılan değer 100 eşzamanlı istektir. Üç veya daha az düğümden oluşan küçük bir küme çalıştırmadığınız sürece, bu değeri artırarak başarısız istekleri önleyin.
Akış seçimi
Akış seçimi ayarlarını yapılandırmak için aşağıdaki bölümlerdeki özellikleri kullanın:
nifi.cluster.flow.election.max.candidates
NiFi, sıfır öncü kümeleme kullanır, yani belirli bir yetkili düğüm yoktur. Sonuç olarak, düğümler hangi akış tanımının doğru olduğunu oylar. Ayrıca kümeye hangi düğümlerin katılacağını belirlemek için oy kullanırlar.
Varsayılan olarak özellik, nifi.cluster.flow.election.max.candidates
özelliğin belirttiği en uzun bekleme süresidir nifi.cluster.flow.election.max.wait.time
. Bu değer çok yüksek olduğunda, başlatma yavaş olabilir. için nifi.cluster.flow.election.max.wait.time
varsayılan değer beş dakikadır. Beklemenin gerekenden fazla olmadığından emin olmak için en fazla aday sayısını veya gibi 1
boş olmayan bir değere ayarlayın. Bu özelliği ayarlarsanız, küme boyutuna veya beklenen küme boyutunun bazı çoğunluk bölümüne karşılık gelen bir değer atayın. 10 veya daha az düğümden oluşan küçük, statik kümeler için bu değeri kümedeki düğüm sayısına ayarlayın.
nifi.cluster.flow.election.max.wait.time
Elastik bulut ortamında konak sağlama süresi, uygulamanın başlangıç süresini etkiler. özelliği, nifi.cluster.flow.election.max.wait.time
Bir akışa karar vermeden önce NiFi'nin ne kadar bekleyeceğini belirler. Bu değeri kümenin başlangıç boyutunda genel başlatma süresiyle uygun hale getirin. İlk testlerde, önerilen örnek türlerine sahip tüm Azure bölgelerinde beş dakika yeterli değildir. Ancak, düzenli olarak sağlama süresi varsayılan değeri aşarsa bu değeri artırabilirsiniz.
Java
Java'nın LTS sürümünü kullanmanızı öneririz. Java 11 daha hızlı çöp toplama uygulamasını desteklediğinden bu sürümlerden Java 11, Java 8'e göre biraz daha tercih edilir. Ancak, iki sürümü de kullanarak yüksek performanslı bir NiFi dağıtımına sahip olmak mümkündür.
Aşağıdaki bölümlerde NiFi çalıştırılırken kullanılacak yaygın JVM yapılandırmaları açıklanmıştır. konumundaki bootstrap yapılandırma dosyasında $NIFI_HOME/conf/bootstrap.conf
JVM parametrelerini ayarlayın.
Çöp toplayıcı
Java 11 çalıştırıyorsanız çoğu durumda G1 çöp toplayıcısını (G1GC) kullanmanızı öneririz. G1GC, GC duraklamalarının uzunluğunu azalttığı için, G1GC ParallelGC'ye göre performansı geliştirmiştir. G1GC, Java 11'de varsayılan değerdir, ancak içinde aşağıdaki değeri bootstrap.conf
ayarlayarak bunu açıkça yapılandırabilirsiniz:
java.arg.13=-XX:+UseG1GC
Java 8 çalıştırıyorsanız G1GC kullanmayın. Bunun yerine ParallelGC kullanın. G1GC'nin Java 8 uygulamasında önerilen depo uygulamalarıyla kullanmanızı engelleyen eksiklikler vardır. ParallelGC, G1GC'den daha yavaştır. Ancak ParallelGC ile Java 8 ile yüksek performanslı bir NiFi dağıtımına sahip olabilirsiniz.
Yığın
Dosyadaki bootstrap.conf
bir özellik kümesi, NiFi JVM yığınının yapılandırmasını belirler. Standart akış için şu ayarları kullanarak 32 GB'lık bir yığın yapılandırın:
java.arg.3=-Xmx32g
java.arg.2=-Xms32g
JVM işlemine uygulanacak en uygun yığın boyutunu seçmek için iki faktörü göz önünde bulundurun:
- Veri akışının özellikleri
- NiFi'nin işlemede belleği kullanma şekli
Ayrıntılı belgeler için bkz . Derinlemesine Apache NiFi.
Yığını yalnızca işleme gereksinimlerini karşılamak için gerektiği kadar büyük yapın. Bu yaklaşım GC duraklamalarının uzunluğunu en aza indirir. Java çöp toplamayla ilgili genel konular için Java sürümünüz için çöp toplama ayarlama kılavuzuna bakın.
JVM bellek ayarlarını yaparken şu önemli faktörleri göz önünde bulundurun:
Belirli bir dönemde etkin olan FlowFiles veya NiFi veri kayıtlarının sayısı. Bu sayı, arka baskılı veya kuyruğa alınmış FlowFile'ları içerir.
FlowFiles içinde tanımlanan özniteliklerin sayısı.
bir işlemcinin belirli bir içerik parçasını işlemek için gereken bellek miktarı.
İşlemcinin verileri işleme yöntemi:
- Akış verileri
- Kayıt odaklı işlemcileri kullanma
- Tüm verileri aynı anda bellekte tutma
Bu ayrıntılar önemlidir. İşleme sırasında NiFi, bellekteki her FlowFile için başvuruları ve öznitelikleri tutar. En yüksek performansta, sistemin kullandığı bellek miktarı canlı FlowFile sayısı ve içerdiği tüm özniteliklerle orantılıdır. Bu sayı kuyruğa alınmış FlowFiles içerir. NiFi, diske geçiş yapabilir. Ancak performansı zedelediğinden bu seçenekten kaçının.
Ayrıca temel nesne bellek kullanımını da unutmayın. Özellikle, yığınınızı nesneleri bellekte tutacak kadar büyük hale getirin. Bellek ayarlarını yapılandırmaya yönelik şu ipuçlarını göz önünde bulundurun:
- Ayarı
-Xmx4G
kullanmaya başlayıp belleği gerektiği gibi muhafazakar bir şekilde artırarak akışınızı temsili verilerle ve minimum geri baskısıyla çalıştırın. - Bu ayardan
-Xmx4G
başlayıp küme boyutunu gerektiği gibi muhafazakar bir şekilde artırarak akışınızı temsili verilerle ve en yüksek geri baskısıyla çalıştırın. - VisualVM ve YourKit gibi araçları kullanarak akış çalışırken uygulamanın profilini oluşturun.
- Yığındaki konservatif artışlar performansı önemli ölçüde geliştirmiyorsa, akışları, işlemcileri ve sisteminizin diğer yönlerini yeniden tasarlamayı göz önünde bulundurun.
Ek JVM parametreleri
Aşağıdaki tabloda ek JVM seçenekleri listelenmiştir. Ayrıca ilk testte en iyi sonucu veren değerleri de sağlar. Testler GC etkinliğini ve bellek kullanımını gözlemledi ve dikkatli profil oluşturma kullandı.
Parametre | Açıklama | JVM varsayılan | Öneri |
---|---|---|---|
InitiatingHeapOccupancyPercent |
İşaretleme döngüsü tetiklemeden önce kullanılan yığın miktarı. | 45 | 35 |
ParallelGCThreads |
GC'nin kullandığı iş parçacığı sayısı. Bu değer, sistem üzerindeki genel etkiyi sınırlamak için eşlenir. | vCPU sayısının 5/8'i | 8 |
ConcGCThreads |
Paralel olarak çalıştırılacak GC iş parçacığı sayısı. Bu değer, eşlenen ParallelGCThreads için hesaba eklenir. | Değerin 1/4'leri ParallelGCThreads |
4 |
G1ReservePercent |
Boş tutulacak ayrılmış bellek yüzdesi. Bu değer, boşluk tükenmesini önlemek için artırılır ve bu da tam GC'yi önlemeye yardımcı olur. | 10 | 20 |
UseStringDeduplication |
Özdeş dizelere yapılan başvuruları tanımlamaya ve yinelenenleri kaldırmaya çalışıp çalışmayacağınız. Bu özelliğin açılması bellek tasarrufuna neden olabilir. | - | hediye |
NiFi'ye bootstrap.conf
aşağıdaki girdileri ekleyerek bu ayarları yapılandırın:
java.arg.17=-XX:+UseStringDeduplication
java.arg.18=-XX:G1ReservePercent=20
java.arg.19=-XX:ParallelGCThreads=8
java.arg.20=-XX:ConcGCThreads=4
java.arg.21=-XX:InitiatingHeapOccupancyPercent=35
ZooKeeper
Gelişmiş hataya dayanıklılık için ZooKeeper'ı küme olarak çalıştırın. Çoğu NiFi dağıtımı ZooKeeper'a nispeten mütevazı bir yük yüklese de bu yaklaşımı benimser. ZooKeeper için kümeleyi açıkça açın. ZooKeeper varsayılan olarak tek sunucu modunda çalışır. Ayrıntılı bilgi için ZooKeeper Yönetici Kılavuzu'ndaki Kümelenmiş (Çoklu Sunucu) Kurulumu bölümüne bakın.
Kümeleme ayarları dışında ZooKeeper yapılandırmanız için varsayılan değerleri kullanın.
Büyük bir NiFi kümeniz varsa, daha fazla sayıda ZooKeeper sunucusu kullanmanız gerekebilir. Daha küçük küme boyutları için daha küçük VM boyutları ve Standart SSD ile yönetilen diskler yeterlidir.
Katkıda Bulunanlar
Bu makale Microsoft tarafından yönetilir. Başlangıçta aşağıdaki katkıda bulunanlar tarafından yazılmıştır.
Asıl yazar:
- Muazma Zahid | Baş PM Yöneticisi
Genel olmayan LinkedIn profillerini görmek için LinkedIn'de oturum açın.
Sonraki adımlar
Bu belgedeki malzeme ve öneriler çeşitli kaynaklardan geldi:
- Deneme
- Azure için en iyi yöntemler
- NiFi topluluk bilgisi, en iyi yöntemler ve belgeler
Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
- Apache NiFi Sistem Yöneticisi Kılavuzu
- Apache NiFi posta listeleri
- Yüksek performanslı NiFi yüklemesi ayarlamak için Cloudera en iyi yöntemleri
- Azure premium depolama: yüksek performans tasarımı
- Linux veya Windows'ta Azure sanal makine performansı sorunlarını giderme
İlgili kaynaklar
- Apache NiFi için Helm tabanlı dağıtımlar
- Azure Veri Gezgini izleme
- [Azure Data Factory ile karma ayıklama, dönüştürme, yükleme (ETL)] [Azure Data Factory ile Hibrit ETL]
- [Modern veri ambarı için DataOps] [Modern veri ambarı için DataOps]
- Veri ambarı ve analiz