{"id":944,"date":"2026-05-21T17:53:10","date_gmt":"2026-05-21T14:53:10","guid":{"rendered":"https:\/\/oraclius.com.tr\/?p=944"},"modified":"2026-06-02T15:48:44","modified_gmt":"2026-06-02T12:48:44","slug":"apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu","status":"publish","type":"post","link":"https:\/\/oraclius.com.tr\/en\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\/","title":{"rendered":"Apache NiFi 2.9 ile Y\u00fcksek Eri\u015filebilir (HA) Data Ingestion: 2-Node Cluster Kurulumu"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Veri ak\u0131\u015f y\u00f6netimi ve entegrasyon s\u00fcre\u00e7lerinde, sistemin kesintisiz \u00e7al\u0131\u015fmas\u0131 (High Availability) ve gelen veri y\u00fck\u00fcn\u00fcn sunucular aras\u0131nda dengeli payla\u015f\u0131lmas\u0131 (Load Balancing) sistem mimarisinin en kritik yap\u0131 ta\u015flar\u0131d\u0131r. Apache NiFi, b\u00fcy\u00fck \u00f6l\u00e7ekli veri \u00fcretim ortamlar\u0131nda bu ihtiyac\u0131 yerel olarak destekledi\u011fi Aktif-Aktif (Active-Active) cluster mimarisiyle \u00e7\u00f6zer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bu yaz\u0131 dizisinde, kurumsal ortamlarda veri kayb\u0131n\u0131n \u00f6n\u00fcne ge\u00e7mek ve i\u015fleme kapasitesini iki kat\u0131na \u00e7\u0131karmak i\u00e7in kullanabilece\u011finiz \u00f6l\u00e7eklenebilir bir NiFi k\u00fcmesi in\u015fa edece\u011fiz. Yap\u0131daki t\u00fcm node&#8217;lar\u0131n ayn\u0131 ak\u0131\u015flar\u0131 e\u015f zamanl\u0131 i\u015flemesini sa\u011flarken, bir node&#8217;un \u00e7\u00f6kmesi durumunda di\u011ferinin trafi\u011fi nas\u0131l kesintisiz devralaca\u011f\u0131n\u0131 ad\u0131m ad\u0131m g\u00f6recece\u011fiz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rehberimizin bu ilk b\u00f6l\u00fcm\u00fcnde, Red Hat Enterprise Linux (RHEL) \u00fczerinde, <strong>Apache NiFi 2.9.0<\/strong> ve Java 21 cluster mimarisini s\u0131f\u0131rdan aya\u011fa kald\u0131raca\u011f\u0131z. NiFi 2.x mimarisiyle birlikte g\u00f6m\u00fcl\u00fc (embedded) ZooKeeper deste\u011fi tamamen kald\u0131r\u0131ld\u0131\u011f\u0131 i\u00e7in, bu rehberde koordinasyon katman\u0131n\u0131 <strong>harici (external) bir ZooKeeper cluster&#8217;\u0131<\/strong> ile entegre olacak \u015fekilde kurgulayaca\u011f\u0131z.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">1.) Apache NiFi 2.0 Cluster Kurulumu: OS, Network ve G\u00fcvenlik Ayarlar\u0131<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Apache NiFi cluster mimarisinin sa\u011fl\u0131kl\u0131, kararl\u0131 ve performansl\u0131 \u00e7al\u0131\u015fabilmesi i\u00e7in i\u015fletim sistemi ve network seviyesindeki konfig\u00fcrasyonlar\u0131n eksiksiz yap\u0131lmas\u0131 gerekir. NiFi node&#8217;lar\u0131 hem kendi aralar\u0131nda (Cluster Protokol\u00fc) hem de i\u00e7 koordinasyonu sa\u011flayan harici ZooKeeper servisiyle s\u00fcrekli ve milisaniyeler seviyesinde el s\u0131k\u0131\u015fmak (heartbeat) zorundad\u0131r. Networkteki anl\u0131k bir kesinti veya yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f bir firewall kural\u0131, cluster&#8217;\u0131n b\u00f6l\u00fcnmesine (split-brain) yol a\u00e7abilir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bu b\u00f6l\u00fcmde, RHEL i\u015fletim sistemine sahip iki sunucumuzun network, hostname, SELinux ve firewall ayarlar\u0131n\u0131 yap\u0131land\u0131raca\u011f\u0131z.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1.1. Sunucu Bilgileri ve Hostname Yap\u0131land\u0131rmas\u0131<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Kurulumumuzda IP adresleri \u00fczerinden de\u011fil, kal\u0131c\u0131 hostname (sunucu ad\u0131) tan\u0131mlamalar\u0131 \u00fczerinden ilerleyece\u011fiz. Bu, cluster mimarilerinde IP de\u011fi\u015fikliklerinden etkilenmemek i\u00e7in en g\u00fcvenli y\u00f6ntemdir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mevcut laboratuvar topolojimiz:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Node 1 IP:<\/strong> <code>10.10.10.11<\/code> -&gt; Belirlenen Hostname: <code>nifi01.cluster<\/code><\/li>\n\n\n\n<li><strong>Node 2 IP:<\/strong> <code>10.10.10.12<\/code> -&gt; Belirlenen Hostname: <code>nifi02.cluster<\/code><\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Hostname Tan\u0131mlama Komutlar\u0131<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Sistemlerin birbirini \u00e7\u00f6zebilmesi i\u00e7in (DNS sunucunuz yoksa) her iki sunucunun `\/etc\/hosts` dosyas\u0131na bu iki node&#8217;u da eklememiz gerekiyor.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>10.10.10.11 \tnifi01.cluster \t\tnifi01\n10.10.10.12 \tnifi02.cluster \t\tnifi02<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">1.2. RHEL 8.9 G\u00fcvenlik Ayarlar\u0131 (SELinux ve Limits)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">RHEL 8.9 \u00fczerinde varsay\u0131lan olarak gelen baz\u0131 k\u0131s\u0131tlamalar, NiFi&#8217;\u0131n y\u00fcksek performansla \u00e7al\u0131\u015fmas\u0131n\u0131 veya cluster portlar\u0131na ba\u011flanmas\u0131n\u0131 engelleyebilir.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">SELinux Yap\u0131land\u0131rmas\u0131<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Test ve lokal sim\u00fclasyon ortamlar\u0131nda s\u00fcre\u00e7lerin k\u0131s\u0131tlanmamas\u0131 ad\u0131na SELinux&#8217;u <code>Permissive<\/code> moda \u00e7ekiyoruz.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Ge\u00e7ici olarak permissive moda al\u0131r\nsudo setenforce 0\n\n# Kal\u0131c\u0131 hale getirmek i\u00e7in dosyay\u0131 d\u00fczenleyin\nsudo vi \/etc\/selinux\/config<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dosya i\u00e7indeki <code>SELINUX=enforcing<\/code> sat\u0131r\u0131n\u0131 <code>SELINUX=permissive<\/code> olarak g\u00fcncelleyin.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">OS Kaynak Limitlerinin (Ulimits) Art\u0131r\u0131lmas\u0131<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Apache NiFi, do\u011fas\u0131 gere\u011fi ayn\u0131 anda binlerce dosyay\u0131 a\u00e7\u0131p i\u015fleyebilir ve \u00e7ok say\u0131da thread (i\u015f par\u00e7ac\u0131\u011f\u0131) kullan\u0131r. RHEL&#8217;in varsay\u0131lan kullan\u0131c\u0131 limitleri NiFi i\u00e7in yetersiz kalacakt\u0131r ve loglarda <code>java.lang.OutOfMemoryError: unable to create new native thread<\/code> veya <code>Too many open files<\/code> hatas\u0131 alman\u0131za neden olur.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bunu \u00f6nlemek i\u00e7in limitler dosyas\u0131n\u0131 a\u00e7\u0131n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo vi \/etc\/security\/limits.conf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dosyan\u0131n en sonuna, ileride olu\u015fturaca\u011f\u0131m\u0131z <code>nifi<\/code> kullan\u0131c\u0131s\u0131 i\u00e7in \u015fu sat\u0131rlar\u0131 ekleyin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nifi           soft    nofile          65536\nnifi           hard    nofile          65536\nnifi           soft    nproc           10000\nnifi           hard    nproc           10000<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">1.3. Firewall (G\u00fcvenlik Duvar\u0131) Kurallar\u0131<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Geldik en kritik a\u015famaya. \u0130ki node&#8217;un birbiriyle sorunsuz konu\u015fabilmesi i\u00e7in RHEL \u00fczerinde <code>firewalld<\/code> servisine gerekli izinleri tan\u0131mlamal\u0131y\u0131z. Apache NiFi 2.0 Cluster yap\u0131s\u0131nda a\u00e7\u0131lmas\u0131 gereken portlar ve g\u00f6revleri \u015funlard\u0131r:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>Port Numaras\u0131<\/strong><\/td><td><strong>Protokol<\/strong><\/td><td><strong>Kullan\u0131m Amac\u0131<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong>8443<\/strong><\/td><td>TCP<\/td><td>NiFi HTTPS Web Kullan\u0131c\u0131 Aray\u00fcz\u00fc (UI) ve API Portu<\/td><\/tr><tr><td><strong>11443<\/strong><\/td><td>TCP<\/td><td>Cluster Node Protokol Portu (Node&#8217;lar\u0131n birbiriyle konu\u015fmas\u0131)<\/td><\/tr><tr><td><strong>2181<\/strong><\/td><td>TCP<\/td><td>G\u00f6m\u00fcl\u00fc ZooKeeper \u0130stemci Ba\u011flant\u0131 Portu<\/td><\/tr><tr><td><strong>2888<\/strong><\/td><td>TCP<\/td><td>G\u00f6m\u00fcl\u00fc ZooKeeper Leader Se\u00e7im Portu<\/td><\/tr><tr><td><strong>3888<\/strong><\/td><td>TCP<\/td><td>G\u00f6m\u00fcl\u00fc ZooKeeper Node&#8217;lar Aras\u0131 Senkronizasyon Portu<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Firewall Komutlar\u0131<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Her iki RHEL sunucusunda da a\u015fa\u011f\u0131daki komut blo\u011funu s\u0131ras\u0131yla \u00e7al\u0131\u015ft\u0131rarak kurallar\u0131 kal\u0131c\u0131 hale getirin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Gerekli t\u00fcm portlar\u0131 kal\u0131c\u0131 (permanent) olarak a\u00e7\u0131yoruz\nsudo firewall-cmd --permanent --add-port=8443\/tcp\nsudo firewall-cmd --permanent --add-port=11443\/tcp\nsudo firewall-cmd --permanent --add-port=2181\/tcp\nsudo firewall-cmd --permanent --add-port=2888\/tcp\nsudo firewall-cmd --permanent --add-port=3888\/tcp\n\n# De\u011fi\u015fikliklerin devreye girmesi i\u00e7in firewall servisini yeniden y\u00fckl\u00fcyoruz\nsudo firewall-cmd --reload<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A\u00e7t\u0131\u011f\u0131n\u0131z portlar\u0131 do\u011frulamak i\u00e7in \u015fu komutu kullanabilirsiniz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo firewall-cmd --list-ports<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c7\u0131kt\u0131da <code>8443\/tcp 11443\/tcp 2181\/tcp 2888\/tcp 3888\/tcp<\/code> portlar\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Portlar\u0131 tek tek a\u00e7makla u\u011fra\u015fmamak i\u00e7in RHEL \u00fczerindeki firewall servisini tamamen kapat\u0131p devre d\u0131\u015f\u0131 b\u0131rakarak da eri\u015fim sorununu \u00e7\u00f6zebilirsiniz:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl stop firewalld\nsudo systemctl disable firewalld<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">2.) Java ve NiFi Paket Haz\u0131rl\u0131\u011f\u0131<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bu b\u00f6l\u00fcmde, sunucular\u0131m\u0131z i\u00e7in gerekli olan <strong>Java 21 (OpenJDK)<\/strong> ve <strong>Apache NiFi 2.0.0 (LTS)<\/strong> paketlerinin indirme linklerini ve sunucu \u00fczerindeki dizin haz\u0131rl\u0131klar\u0131n\u0131 tamamlayaca\u011f\u0131z.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2.1. Java 21 (OpenJDK LTS) ve Nifi 2.0 \u0130ndirme Linkleri<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Apache NiFi 2.x s\u00fcr\u00fcmleri \u00e7al\u0131\u015fmak i\u00e7in en az Java 21&#8217;ye ihtiya\u00e7 duyar. RHEL uyumlu resmi Red Hat OpenJDK veya genel Linux x64 OpenJDK paketini indirebilirsiniz.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-ee856660 wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/www.oracle.com\/java\/technologies\/javase\/jdk21-archive-downloads.html\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">jdk-21.0.3_linux-x64_bin.tar.gz<\/a><\/div>\n\n\n\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/archive.apache.org\/dist\/nifi\/2.9.0\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">nifi-2.9.0-bin.zip<\/a><\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">2.2. Sunucularda Kullan\u0131c\u0131 ve Dizin Mimarisinin Haz\u0131rlanmas\u0131<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Paketleri sunucuya transfer etmeden \u00f6nce, her iki RHEL sunucusunda da NiFi servisinin \u00e7al\u0131\u015faca\u011f\u0131 izole ve g\u00fcvenli bir sistem kullan\u0131c\u0131s\u0131 ile ana dizin yap\u0131s\u0131n\u0131 kurgulamal\u0131y\u0131z.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Her iki node \u00fczerinde de <strong>root<\/strong> kullan\u0131c\u0131s\u0131yla \u015fu komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># nifi ad\u0131nda \u00f6zel bir sistem kullan\u0131c\u0131s\u0131 olu\u015fturun\nsudo useradd -m -s \/bin\/bash nifi\n\n# NiFi ve Java klas\u00f6rlerini bar\u0131nd\u0131racak ana dizini olu\u015fturun\nsudo mkdir -p \/opt\/nifi\n\n# Bu dizinin t\u00fcm sahipli\u011fini ve yetkisini nifi kullan\u0131c\u0131s\u0131na devredin\nsudo chown -R nifi:nifi \/opt\/nifi<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2.3. Paketlerin \u00c7\u0131kar\u0131lmas\u0131 ve Alternatif Java S\u00fcr\u00fcm\u00fcn\u00fc De\u011fi\u015ftirme<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0130ndirdi\u011finiz <code>jdk-21.0.3_linux-x64_bin.tar.gz<\/code> ve <code>nifi-2.0.0-bin.zip<\/code> dosyalar\u0131n\u0131 WinSCP veya SCP gibi bir ara\u00e7la her iki RHEL sunucusunun <code>\/opt\/nifi<\/code> dizinine aktar\u0131n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Transfer bittikten sonra <strong>her iki sunucuda da<\/strong> <code>nifi<\/code> kullan\u0131c\u0131s\u0131na ge\u00e7i\u015f yap\u0131p ar\u015fivleri a\u00e7al\u0131m:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># nifi kullan\u0131c\u0131s\u0131na ge\u00e7i\u015f yap\u0131n\nsudo su - nifi\ncd \/opt\/nifi\n\n# Paketleri ar\u015fivden \u00e7\u0131kart\u0131n\ntar -xvf jdk-21.0.3_linux-x64_bin.tar.gz\nunzip nifi-2.9.0-bin.zip<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">S\u00fcr\u00fcm Y\u00f6netimi \u0130\u00e7in Sembolik Link (K\u0131sayol) Tan\u0131mlama<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0130leride s\u00fcr\u00fcm y\u00fckseltme i\u015flemlerinde konfig\u00fcrasyon yollar\u0131n\u0131 bozmamak i\u00e7in dizinlere sembolik link tan\u0131ml\u0131yoruz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ln -s jdk-21.0.3 java_home\nln -s nifi-2.9.0 current<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Mevcut Sistem Java S\u00fcr\u00fcm\u00fcn\u00fc De\u011fi\u015ftirme ve Ezme<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">RHEL 8.9 \u00fczerinde halihaz\u0131rda sistem seviyesinde kurulu bir Java (\u00f6rne\u011fin eski bir Java 8 veya Java 11) bulunabilir. NiFi servisinin i\u015fletim sistemindeki di\u011fer Java s\u00fcr\u00fcmlerinden etkilenmemesi ve tamamen bizim indirdi\u011fimiz Oracle JDK 21&#8217;yi kullanmas\u0131 i\u00e7in <code>nifi<\/code> kullan\u0131c\u0131s\u0131n\u0131n profil de\u011fi\u015fkenlerini ezmemiz gerekir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bunu yapmak i\u00e7in <code>nifi<\/code> kullan\u0131c\u0131s\u0131n\u0131n ev dizinindeki <code>.bash_profile<\/code> dosyas\u0131n\u0131 d\u00fczenliyoruz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vi ~\/.bash_profile<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dosyan\u0131n en alt\u0131na, sistemdeki mevcut t\u00fcm <code>PATH<\/code> tan\u0131mlamalar\u0131n\u0131n <strong>\u00f6n\u00fcne ge\u00e7ecek \u015fekilde<\/strong> \u015fu sat\u0131rlar\u0131 ekleyin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export JAVA_HOME=\/opt\/nifi\/java_home\nexport PATH=$JAVA_HOME\/bin:$PATH<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>P\u00fcf Noktas\u0131:<\/strong> <code>$JAVA_HOME\/bin<\/code> ifadesini <code>$PATH<\/code> de\u011fi\u015fkeninin <strong>soluna (\u00f6n\u00fcne)<\/strong> yazd\u0131\u011f\u0131m\u0131z i\u00e7in, i\u015fletim sistemi bir java komutu ald\u0131\u011f\u0131nda sistemdeki eski Java&#8217;lara bakmadan direkt olarak bizim belirtti\u011fimiz Java 21 klas\u00f6r\u00fcn\u00fc tetikleyecektir.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">De\u011fi\u015fikliklerin profil \u00fczerinde aktif olmas\u0131 i\u00e7in dosyay\u0131 okutun ve s\u00fcr\u00fcm\u00fc do\u011frulay\u0131n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>source ~\/.bash_profile\n\n# Do\u011frulama Komutu\njava -version<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">E\u011fer ekranda ba\u015far\u0131yla a\u015fa\u011f\u0131daki \u00e7\u0131kt\u0131y\u0131 g\u00f6r\u00fcyorsan\u0131z, sistemde ba\u015fka hangi Java s\u00fcr\u00fcm\u00fc olursa olsun <code>nifi<\/code> kullan\u0131c\u0131s\u0131 i\u00e7in bu durum tamamen ezilmi\u015f ve Java 21 varsay\u0131lan yap\u0131lm\u0131\u015f demektir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">3. Harici ZooKeeper K\u00fcmesi Kurulumu ve Yap\u0131land\u0131rmas\u0131<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Apache NiFi cluster mimarisinde, d\u00fc\u011f\u00fcmlerin (node) birbirini tan\u0131mas\u0131, k\u00fcme durumunun izlenmesi ve bir node \u00e7\u00f6kt\u00fc\u011f\u00fcnde liderlik se\u00e7iminin (Primary Node ve Cluster Coordinator) saniyeler i\u00e7inde yap\u0131labilmesi i\u00e7in arka planda bir koordinasyon servisi \u00e7al\u0131\u015fmal\u0131d\u0131r. NiFi, bu i\u015f i\u00e7in <strong>Apache ZooKeeper<\/strong> mimarisini kullan\u0131r.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u00c7ok Kritik NiFi 2.x+ De\u011fi\u015fikli\u011fi:<\/strong> Apache NiFi 2.0 ve \u00fczeri (LTS) s\u00fcr\u00fcmleriyle birlikte, eski versiyonlarda yer alan G\u00f6m\u00fcl\u00fc (Embedded) ZooKeeper deste\u011fi tamamen kald\u0131r\u0131lm\u0131\u015ft\u0131r. Dolay\u0131s\u0131yla, modern bir NiFi cluster yap\u0131s\u0131 kurarken, koordinasyon katman\u0131n\u0131 harici (external) ve ba\u011f\u0131ms\u0131z bir ZooKeeper k\u00fcmesi olarak yap\u0131land\u0131rmak zorunludur. Bu b\u00f6l\u00fcmde, her iki sunucumuza da resmi Apache ZooKeeper paketini kuracak ve 2 node&#8217;lu bir koordinasyon omurgas\u0131 aya\u011fa kald\u0131raca\u011f\u0131z.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.1. ZooKeeper Paketinin \u0130ndirilmesi ve \u00c7\u0131kar\u0131lmas\u0131<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">G\u00fcvenlik ve yetki karma\u015fas\u0131n\u0131 \u00f6nlemek ad\u0131na ZooKeeper servisini de sistemde olu\u015fturdu\u011fumuz izole <code>nifi<\/code> kullan\u0131c\u0131s\u0131 alt\u0131nda \u00e7al\u0131\u015ft\u0131raca\u011f\u0131z. <strong>Her iki sunucuda da<\/strong> s\u0131ras\u0131yla <code>nifi<\/code> kullan\u0131c\u0131s\u0131na ge\u00e7i\u015f yap\u0131p g\u00fcncel ve kararl\u0131 Apache ZooKeeper paketini indirelim:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># nifi kullan\u0131c\u0131s\u0131na ge\u00e7i\u015f yap\u0131n\nsudo su - nifi\ncd \/opt\/nifi\n\n# Resmi ar\u015fivden paketi indirin ve \u00e7\u0131kart\u0131n\nwget https:\/\/archive.apache.org\/dist\/zookeeper\/zookeeper-3.9.2\/apache-zookeeper-3.9.2-bin.tar.gz\ntar -xvf apache-zookeeper-3.9.2-bin.tar.gz\n\n# S\u00fcr\u00fcm y\u00f6netimi i\u00e7in sembolik link (symlink) olu\u015fturun\nln -s apache-zookeeper-3.9.2-bin zookeeper<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dosya i\u00e7erisinde <code>nifi.state.management.embedded.zookeeper.start<\/code> parametresini bulun ve de\u011ferini <code>true<\/code> yap\u0131n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nifi.state.management.embedded.zookeeper.start=true<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3.2. zoo.cfg Dosyas\u0131n\u0131n D\u00fczenlenmesi<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">ZooKeeper, varsay\u0131lan olarak konfig\u00fcrasyonunu <code>zoo.cfg<\/code> dosyas\u0131ndan okur. Paketle birlikte gelen \u00f6rnek \u015fablonu kopyalayarak d\u00fczenlemeye ba\u015fl\u0131yoruz. <strong>Her iki sunucuda da<\/strong> a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vi \/opt\/nifi\/current\/conf\/zookeeper.properties<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dosyan\u0131n en alt\u0131na gelin ve a\u015fa\u011f\u0131daki sat\u0131rlar\u0131 ekleyin. Bu sat\u0131rlar, ZooKeeper&#8217;a k\u00fcmede 2 adet sunucu oldu\u011funu ve birbirlerine nas\u0131l eri\u015feceklerini s\u00f6yler:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cp \/opt\/nifi\/zookeeper\/conf\/zoo_sample.cfg \/opt\/nifi\/zookeeper\/conf\/zoo.cfg\nvi \/opt\/nifi\/zookeeper\/conf\/zoo.cfg<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dosya i\u00e7erisindeki varsay\u0131lan ge\u00e7ici <code>dataDir<\/code> parametresini kal\u0131c\u0131 bir dizine y\u00f6nlendirin ve dosyan\u0131n en sonuna gelerek cluster sunucu tan\u0131mlamalar\u0131n\u0131 ekleyin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Verilerin kal\u0131c\u0131 olarak yaz\u0131laca\u011f\u0131 dizin\ndataDir=\/opt\/nifi\/zookeeper\/data\n\n# \u0130stemci (NiFi) ba\u011flant\u0131 portu\nclientPort=2181\n\n# 2-Node ZooKeeper Cluster Sunucu Tan\u0131mlamalar\u0131\nserver.1=nifi01.cluster:2888:3888\nserver.2=nifi02.cluster:2888:3888<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udccc <strong>Portlar\u0131n G\u00f6revi:<\/strong> <code>2181<\/code> portu NiFi&#8217;\u0131n bu servise ba\u011flanaca\u011f\u0131 istemci portudur. <code>2888<\/code> portu ZooKeeper d\u00fc\u011f\u00fcmlerinin lider sunucuya ba\u011flanmas\u0131 (follower-to-leader) i\u00e7in, <code>3888<\/code> portu ise kendi aralar\u0131nda yeni bir lider se\u00e7mek (Leader Election) i\u00e7in kullan\u0131l\u0131r.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.3. Benzersiz Kimliklerin Olu\u015fturulmas\u0131 (myid Dosyas\u0131)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">ZooKeeper mimarisinde en kritik kural, her bir koordinasyon servisinin k\u00fcme i\u00e7inde <strong>benzersiz bir ID (numara)<\/strong> ile tan\u0131mlanmas\u0131 zorunlulu\u011fudur. <code>zoo.cfg<\/code> dosyas\u0131nda <code>server.1<\/code> ve <code>server.2<\/code> olarak verdi\u011fimiz benzersiz numaralar\u0131, sunucular\u0131n kendi data dizinlerine el ile yazmal\u0131y\u0131z.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00d6ncelikle veri dizinini her iki sunucuda da olu\u015ftural\u0131m:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p \/opt\/nifi\/zookeeper\/data<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u015eimdi sunuculara \u00f6zel kimliklerini yaz\u0131yoruz:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1. Sunucuda (nifi01.cluster) \u00e7al\u0131\u015ft\u0131r\u0131n:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \"1\" &gt; \/opt\/nifi\/zookeeper\/data\/myid<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">2. Sunucuda (nifi02.cluster) \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \"2\" &gt; \/opt\/nifi\/zookeeper\/data\/myid<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3.4. ZooKeeper Servislerinin Ba\u015flat\u0131lmas\u0131<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Yap\u0131land\u0131rma tamamland\u0131. NiFi cluster servislerini tetiklemeden \u00f6nce, arka plandaki bu koordinat\u00f6r mekanizmas\u0131n\u0131n ayakta ve haz\u0131r olmas\u0131 gerekir. <strong>Her iki sunucuda da<\/strong> ZooKeeper servisini ba\u015flat\u0131n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/opt\/nifi\/zookeeper\/bin\/zkServer.sh start<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Servisin durumunu ve hangi node&#8217;un lider (leader\/follower) oldu\u011funu do\u011frulamak i\u00e7in \u015fu komutu kullanabilirsiniz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/opt\/nifi\/zookeeper\/bin\/zkServer.sh status<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3.5. state-management.xml Dosyas\u0131n\u0131n D\u00fczenlenmesi<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">NiFi&#8217;\u0131n kendi i\u00e7indeki i\u015flemcilerin (Stateful Processors) anl\u0131k durum bilgilerini az \u00f6nce kurdu\u011fumuz harici k\u00fcmeye yazabilmesi i\u00e7in NiFi taraf\u0131ndaki dosyay\u0131 haz\u0131rl\u0131yoruz. <strong>Her iki sunucuda da<\/strong> a\u015fa\u011f\u0131daki dosyay\u0131 a\u00e7\u0131n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vi \/opt\/nifi\/current\/conf\/state-management.xml<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dosya i\u00e7erisinde <code>&lt;cluster-provider&gt;<\/code> etiketini bulun. Bu etiketin alt\u0131ndaki s\u0131n\u0131f yolunu (NiFi 2.x mimarisine uygun yeni paket yoluyla) ve <code>Connect String<\/code> k\u0131sm\u0131n\u0131 harici ZooKeeper cluster&#8217;\u0131m\u0131z\u0131 g\u00f6recek \u015fekilde g\u00fcncelleyin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;cluster-provider&gt;\n    &lt;id&gt;zk-provider&lt;\/id&gt;\n    &lt;class&gt;org.apache.nifi.controller.state.providers.zookeeper.ZooKeeperStateProvider&lt;\/class&gt;\n    &lt;property name=\"Connect String\"&gt;nifi01.cluster:2181,nifi02.cluster:2181&lt;\/property&gt;\n    &lt;property name=\"Root Node\"&gt;\/nifi&lt;\/property&gt;\n    &lt;property name=\"Session Timeout\"&gt;10 seconds&lt;\/property&gt;\n    &lt;property name=\"Access Control\"&gt;Open&lt;\/property&gt;\n&lt;\/cluster-provider&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3.6 Test Ad\u0131mlar\u0131<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Quorum (Lider\/Takip\u00e7i) Testi<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0130ki sunucunun birbiriyle konu\u015fup bir k\u00fcme olu\u015fturabildi\u011fini anlaman\u0131n en kolay yolu stat\u00fclerini kontrol etmektir. Her iki sunucuda da \u015fu komutu \u00e7al\u0131\u015ft\u0131r:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/opt\/nifi\/zookeeper\/bin\/zkServer.sh status<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Beklenen Sonu\u00e7:<\/strong> \u00c7\u0131kt\u0131n\u0131n en alt sat\u0131r\u0131nda sunuculardan birinin <code>Mode: leader<\/code>, di\u011ferinin ise <code>Mode: follower<\/code> olarak g\u00f6r\u00fcnmesi gerekir. E\u011fer b\u00f6yleyse kendi aralar\u0131nda anla\u015fm\u0131\u015flar ve cluster kurulmu\u015f demektir.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Port ve Eri\u015fim Testi<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><code>nifi01<\/code> makinesindeyken <code>nifi02<\/code>&#8216;nin 2181 portuna eri\u015febildi\u011fimizi (firewall kurallar\u0131n\u0131n vs. do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131) netcat komutu ile do\u011frulayal\u0131m:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>nifi01<\/code> \u00fczerinden \u015funu \u00e7al\u0131\u015ft\u0131r:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nc -zv nifi02.cluster 2181<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>nifi02<\/code> \u00fczerinden de \u015funu \u00e7al\u0131\u015ft\u0131r:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nc -zv nifi01.cluster 2181<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Beklenen Sonu\u00e7:<\/strong> <code>Connection to nifiXX.cluster 2181 port [tcp\/*] succeeded!<\/code> veya <code>succeeded<\/code> kelimesini i\u00e7eren bir \u00e7\u0131kt\u0131 g\u00f6rmelisin.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0130stemci (CLI) Testi (En Garantisi)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">NiFi&#8217;\u0131n ba\u011flan\u0131rken yapaca\u011f\u0131 i\u015flemin ayn\u0131s\u0131n\u0131 ZooKeeper&#8217;\u0131n kendi komut sat\u0131r\u0131 arac\u0131yla sim\u00fcle edelim. Herhangi bir sunucuda \u015fu komutu \u00e7al\u0131\u015ft\u0131r\u0131p cluster&#8217;a ba\u011flanmay\u0131 dene:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/opt\/nifi\/zookeeper\/bin\/zkCli.sh -server nifi01.cluster:2181,nifi02.cluster:2181<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ekrana bir s\u00fcr\u00fc log akacak ve en sonunda <code>[zk: nifi01.cluster:2181,nifi02.cluster:2181(CONNECTED) 0]<\/code> gibi bir komut sat\u0131r\u0131na d\u00fc\u015feceksin. Buraya <code>ls \/<\/code> yaz\u0131p Enter&#8217;a bas. Sana <code>[zookeeper]<\/code> gibi bir klas\u00f6r listesi d\u00f6n\u00fcyorsa, ba\u011flant\u0131 okuma\/yazma i\u015flemleri t\u0131k\u0131r t\u0131k\u0131r \u00e7al\u0131\u015f\u0131yor demektir. \u00c7\u0131kmak i\u00e7in <code>quit<\/code> yaz\u0131p Enter&#8217;a basabilirsin.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">4. Sunucu ve HTTPS Ayarlar\u0131<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Apache NiFi 2.9.0 s\u00fcr\u00fcm\u00fc, modern kurumsal g\u00fcvenlik standartlar\u0131 gere\u011fi varsay\u0131lan olarak tamamen g\u00fcvenli (Secure HTTPS) modda aya\u011fa kalkar. Eski 1.x s\u00fcr\u00fcmlerindeki g\u00fcvensiz HTTP konfig\u00fcrasyonlar\u0131 bu versiyonda tamamen kald\u0131r\u0131lm\u0131\u015ft\u0131r. Bu nedenle, cluster mimarisindeki node&#8217;lar\u0131n hem aray\u00fcze eri\u015firken HTTPS kullanmas\u0131 hem de kendi aralar\u0131ndaki cluster i\u00e7 ileti\u015fim trafi\u011fini (Cluster Protocol) g\u00fcvenli SSL kanallar\u0131ndan ak\u0131tmas\u0131 gerekir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bu b\u00f6l\u00fcmde, her iki node \u00fczerindeki ana konfig\u00fcrasyon dosyas\u0131 olan <code>nifi.properties<\/code> \u015fablonunu kurumsal cluster standartlar\u0131na g\u00f6re sat\u0131r sat\u0131r g\u00fcncelleyece\u011fiz.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4.1. Node-1 (nifi-node01) \u0130\u00e7in nifi.properties Ayarlar\u0131<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0130lk olarak <strong>1. Sunucumuza (10.10.10.11)<\/strong> giri\u015f yap\u0131n ve ana konfig\u00fcrasyon dosyas\u0131n\u0131 a\u00e7\u0131n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vi \/opt\/nifi\/current\/conf\/nifi.properties<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dosya i\u00e7erisindeki ilgili alanlar\u0131 bulun ve tam olarak a\u015fa\u011f\u0131daki gibi g\u00fcncelleyin (Arama kolayl\u0131\u011f\u0131 i\u00e7in ba\u015fl\u0131k isimleri korunmu\u015ftur):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># ====================================================================\n# Web Properties (Kullan\u0131c\u0131 Aray\u00fcz\u00fc ve API Eri\u015fimi)\n# ====================================================================\nnifi.web.https.host=nifi01.cluster\nnifi.web.https.port=8443\n\n# ====================================================================\n# Cluster Node Properties (Cluster \u0130leti\u015fim Kurallar\u0131)\n# ====================================================================\n# Bu sunucunun cluster yap\u0131s\u0131na dahil bir node oldu\u011funu belirtiyoruz\nnifi.cluster.is.node=true\n\n# Node'lar\u0131n birbiriyle konu\u015faca\u011f\u0131 adres ve port (B\u00f6l\u00fcm 1'de firewall izni vermi\u015ftik)\nnifi.cluster.node.address=nifi01.cluster\nnifi.cluster.node.protocol.port=11443\n\n# Cluster i\u00e7indeki anl\u0131k durum ve ba\u011flant\u0131 zaman a\u015f\u0131m\u0131 s\u00fcreleri\nnifi.cluster.node.protocol.threads=10\nnifi.cluster.node.connection.timeout=15 sec\nnifi.cluster.node.read.timeout=15 sec\n\n# ====================================================================\n# ZooKeeper Properties (B\u00f6l\u00fcm 3'te kurdu\u011fumuz harici yap\u0131ya ba\u011flant\u0131)\n# ====================================================================\n# NiFi'\u0131n liderlik se\u00e7imi ve koordinasyon i\u00e7in ba\u011flanaca\u011f\u0131 ZooKeeper adresleri\nnifi.zookeeper.connect.string=nifi01.cluster:2181,nifi02.cluster:2181<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">4.2. Node-2 (nifi-node02) \u0130\u00e7in nifi.properties Ayarlar\u0131<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u015eimdi <strong>2. Sunucumuza (10.10.10.12)<\/strong> giri\u015f yap\u0131n ve ayn\u0131 dosyay\u0131 a\u00e7\u0131n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vi \/opt\/nifi\/current\/conf\/nifi.properties<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Bu sunucuda adres tan\u0131mlamalar\u0131n\u0131 kendi hostname bilgisine (<code>nifi-node02<\/code>) g\u00f6re g\u00fcncelliyoruz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># ====================================================================\n# Web Properties\n# ====================================================================\nnifi.web.https.host=nifi02.cluster\nnifi.web.https.port=8443\n\n# ====================================================================\n# Cluster Node Properties\n# ====================================================================\nnifi.cluster.is.node=true\nnifi.cluster.node.address=nifi02.cluster\nnifi.cluster.node.protocol.port=11443\nnifi.cluster.node.protocol.threads=10\nnifi.cluster.node.connection.timeout=15 sec\nnifi.cluster.node.read.timeout=15 sec\n\n# ====================================================================\n# ZooKeeper Properties\n# ====================================================================\nnifi.zookeeper.connect.string=nifi01.cluster:2181,nifi02.cluster:2181<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">4.3. Kritik Cluster Sertifika Zorunlulu\u011fu (Ortak CA Mimarisi)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"> Apache NiFi tek ba\u015f\u0131na (Standalone) \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda, ilk a\u00e7\u0131l\u0131\u015fta otomatik olarak kendinden imzal\u0131 (Self-Signed) bir SSL sertifikas\u0131 \u00fcretme yetene\u011fine sahiptir. Ancak bu otomatik mekanizma <strong>Cluster mimarilerinde kesinlikle \u00e7al\u0131\u015fmaz.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">E\u011fer node&#8217;lar\u0131 bu \u015fekilde kendi hallerine b\u0131rak\u0131p do\u011frudan ba\u015flat\u0131rsan\u0131z, <code>nifi01<\/code> kendi sertifikas\u0131n\u0131, <code>nifi02<\/code> ise tamamen ba\u011f\u0131ms\u0131z ba\u015fka bir sertifika \u00fcretecektir. Sunucular <code>11443<\/code> portu \u00fczerinden el s\u0131k\u0131\u015fmaya \u00e7al\u0131\u015ft\u0131klar\u0131nda birbirlerinin sertifikalar\u0131na g\u00fcvenmeyecekler ve loglarda <strong><code>SSLHandshakeException: PKIX path building failed<\/code><\/strong> hatas\u0131 f\u0131rlatarak cluster yap\u0131s\u0131n\u0131 kuramayacaklard\u0131r.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Net \u00c7\u00f6z\u00fcm:<\/strong> Cluster yap\u0131s\u0131ndaki t\u00fcm node&#8217;lar\u0131n ayn\u0131 k\u00f6k sertifika otoritesinden (Common CA) imzalanm\u0131\u015f veya birbirine g\u00fcveni do\u011frulanm\u0131\u015f Keystore ve Truststore dosyalar\u0131n\u0131 kullanmas\u0131 \u015fartt\u0131r.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4.4. Java Keytool ile K\u00fcme Sertifikalar\u0131n\u0131n Manuel \u00dcretilmesi<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">NiFi 2.x mimarisinde art\u0131k otomatik sertifika sihirbaz\u0131 (<code>tls-toolkit<\/code>) bulunmad\u0131\u011f\u0131 i\u00e7in, cluster node&#8217;lar\u0131n\u0131n g\u00fcvenle el s\u0131k\u0131\u015fmas\u0131n\u0131 sa\u011flayacak sertifikalar\u0131 Java&#8217;n\u0131n yerel <code>keytool<\/code> komutunu kullanarak el ile \u00fcretece\u011fiz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Sadece Node-1 (nifi01.cluster) sunucusuna<\/strong> <code>nifi<\/code> kullan\u0131c\u0131s\u0131 ile ba\u011flan\u0131n ve a\u015fa\u011f\u0131daki komutlar\u0131 s\u0131ras\u0131yla \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Ge\u00e7ici sertifika \u00fcretim dizinini olu\u015fturun ve i\u00e7ine girin\nmkdir -p \/opt\/nifi\/certs\ncd \/opt\/nifi\/certs\n\n# 1. Node (nifi01) i\u00e7in Keystore \u00fcretimi\nkeytool -genkeypair -alias nifi01 -keyalg RSA -keysize 3072 -validity 3650 \\\n  -keystore nifi01.keystore.p12 -storetype PKCS12 -storepass 123456 \\\n  -dname \"CN=nifi01.cluster\" -ext SAN=dns:nifi01.cluster\n\n# 2. Node (nifi02) i\u00e7in Keystore \u00fcretimi\nkeytool -genkeypair -alias nifi02 -keyalg RSA -keysize 3072 -validity 3650 \\\n  -keystore nifi02.keystore.p12 -storetype PKCS12 -storepass 123456 \\\n  -dname \"CN=nifi02.cluster\" -ext SAN=dns:nifi02.cluster\n\n# Sertifikalar\u0131n birbirine g\u00fcvenmesi i\u00e7in public (.cer) dosyalar\u0131n\u0131 d\u0131\u015far\u0131 aktar\u0131yoruz\nkeytool -exportcert -alias nifi01 -keystore nifi01.keystore.p12 -storepass 123456 -file nifi01.cer\nkeytool -exportcert -alias nifi02 -keystore nifi02.keystore.p12 -storepass 123456 -file nifi02.cer\n\n# Her iki node'un da ortak kullanaca\u011f\u0131 Truststore dosyas\u0131n\u0131 olu\u015fturup iki sertifikay\u0131 da i\u00e7ine g\u00f6m\u00fcyoruz\nkeytool -importcert -alias nifi01 -keystore truststore.p12 -storepass 123456 -file nifi01.cer -noprompt\nkeytool -importcert -alias nifi02 -keystore truststore.p12 -storepass 123456 -file nifi02.cer -noprompt<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Bu a\u015famada <code>\/opt\/nifi\/certs<\/code> dizininizde <code>nifi01.keystore.p12<\/code>, <code>nifi02.keystore.p12<\/code> ve <code>truststore.p12<\/code> isimli 3 adet kritik anahtar dosyas\u0131 olu\u015fmu\u015f durumdad\u0131r. <code>.cer<\/code> uzant\u0131l\u0131 dosyalar ise ge\u00e7ici ara elemanlar oldu\u011fu i\u00e7in onlarla i\u015fimiz bitmi\u015ftir.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;nifi@nifi01 certs]$ ls\nnifi01.cer  nifi01.keystore.p12  nifi02.cer  nifi02.keystore.p12  truststore.p12<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">H\u00e2l\u00e2 <strong>Node-1 (nifi01.cluster)<\/strong> sunucusundayken, az \u00f6nce \u00fcretti\u011fimiz dosyalardan Node-1&#8217;e ait olanlar\u0131 NiFi&#8217;\u0131n konfig\u00fcrasyon klas\u00f6r\u00fcne (<code>conf<\/code>) ta\u015f\u0131yoruz ve isimlerini sadele\u015ftiriyoruz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Node-1'in kendi keystore dosyas\u0131n\u0131 ta\u015f\u0131y\u0131n ve ad\u0131n\u0131 keystore.p12 yap\u0131n\ncp \/opt\/nifi\/certs\/nifi01.keystore.p12 \/opt\/nifi\/current\/conf\/keystore.p12\n\n# Ortak truststore dosyas\u0131n\u0131 ta\u015f\u0131y\u0131n\ncp \/opt\/nifi\/certs\/truststore.p12 \/opt\/nifi\/current\/conf\/truststore.p12<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Yine <strong>Node-1 (nifi01.cluster)<\/strong> sunucusu \u00fczerindeyken, Node-2&#8217;ye ait olan anahtarlar\u0131 g\u00fcvenli kopyalama protokol\u00fc (SCP) arac\u0131l\u0131\u011f\u0131yla kar\u015f\u0131 sunucuya f\u0131rlat\u0131yoruz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>(Not: Bu komutun \u00e7al\u0131\u015fmas\u0131 i\u00e7in sunucular aras\u0131nda SSH eri\u015fiminin a\u00e7\u0131k olmas\u0131 gerekir. Kar\u015f\u0131 sunucunun \u015fifresi sorulursa nifi kullan\u0131c\u0131s\u0131n\u0131n \u015fifresini girmeniz yeterlidir).<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Node-2'nin keystore dosyas\u0131n\u0131 kar\u015f\u0131ya g\u00f6nderin ve ad\u0131n\u0131 keystore.p12 olarak kaydedin\nscp \/opt\/nifi\/certs\/nifi02.keystore.p12 nifi@nifi02.cluster:\/opt\/nifi\/current\/conf\/keystore.p12\n\n# Ortak truststore dosyas\u0131n\u0131 kar\u015f\u0131 sunucuya kopyalay\u0131n\nscp \/opt\/nifi\/certs\/truststore.p12 nifi@nifi02.cluster:\/opt\/nifi\/current\/conf\/truststore.p12<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Da\u011f\u0131t\u0131m i\u015flemi bitti\u011finde sunucular\u0131n\u0131z\u0131n i\u00e7 mimarisi tam olarak \u015fu net tabloda g\u00f6r\u00fcnd\u00fc\u011f\u00fc gibi olmal\u0131d\u0131r. Devam etmeden \u00f6nce her iki sunucuda da ilgili dizini kontrol ederek do\u011frulu\u011fundan emin olun:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>\u0130\u015flem Yap\u0131lacak Sunucu<\/strong><\/td><td><strong>Dosyan\u0131n Kayna\u011f\u0131<\/strong><\/td><td><strong>At\u0131laca\u011f\u0131 Hedef Dizin ve Yeni Ad\u0131<\/strong><\/td><td><strong>Dosyan\u0131n Amac\u0131<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong>Node-1<\/strong> <em>(nifi01.cluster)<\/em><\/td><td>Lokal dizinden kopyaland\u0131<\/td><td><code>\/opt\/nifi\/current\/conf\/keystore.p12<\/code><\/td><td>Node-1&#8217;in SSL Kimli\u011fi<\/td><\/tr><tr><td><strong>Node-1<\/strong> <em>(nifi01.cluster)<\/em><\/td><td>Lokal dizinden kopyaland\u0131<\/td><td><code>\/opt\/nifi\/current\/conf\/truststore.p12<\/code><\/td><td>Ortak G\u00fcven Havuzu<\/td><\/tr><tr><td><\/td><td><\/td><td><\/td><td><\/td><\/tr><tr><td><strong>Node-2<\/strong> <em>(nifi02.cluster)<\/em><\/td><td>Node-1&#8217;den SCP ile geldi<\/td><td><code>\/opt\/nifi\/current\/conf\/keystore.p12<\/code><\/td><td>Node-2&#8217;nin SSL Kimli\u011fi<\/td><\/tr><tr><td><strong>Node-2<\/strong> <em>(nifi02.cluster)<\/em><\/td><td>Node-1&#8217;den SCP ile geldi<\/td><td><code>\/opt\/nifi\/current\/conf\/truststore.p12<\/code><\/td><td>Ortak G\u00fcven Havuzu<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">nifi.properties \u0130\u00e7erisindeki Security Alanlar\u0131n\u0131n G\u00fcncellenmesi<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Sertifikalar\u0131 yerle\u015ftirdikten sonra, <strong>her iki sunucuda da<\/strong> <code>nifi.properties<\/code> dosyas\u0131n\u0131 a\u00e7\u0131p a\u015fa\u011f\u0131daki alanlar\u0131 bu yeni PKCS12 dosyalar\u0131m\u0131za ve belirledi\u011fimiz ortak parolaya g\u00f6re g\u00fcncelliyoruz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># ====================================================================\n# Security Properties\n# ====================================================================\nnifi.security.keystore=\/opt\/nifi\/current\/conf\/keystore.p12\nnifi.security.keystoreType=PKCS12\nnifi.security.keystorePasswd=123456\nnifi.security.keyPasswd=123456\n\nnifi.security.truststore=\/opt\/nifi\/current\/conf\/truststore.p12\nnifi.security.truststoreType=PKCS12\nnifi.security.truststorePasswd=123456<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">NiFi servislerini start etmeden \u00f6nce, olu\u015fturdu\u011fumuz PKCS12 dosyalar\u0131n\u0131n b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc ve \u015fifrelerin do\u011frulu\u011funu Java&#8217;n\u0131n kendi arac\u0131yla kontrol edebiliriz.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>keytool -list -keystore \/opt\/nifi\/current\/conf\/keystore.p12 -storetype PKCS12 -storepass 123456<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Beklenen \u00c7\u0131kt\u0131:<\/strong> Komut hata vermeden \u00e7al\u0131\u015fmal\u0131 ve i\u00e7erisinde s\u0131ras\u0131yla <code>nifi01<\/code> ve <code>nifi02<\/code> alias (takma ad) i\u00e7eren private key logunu basmal\u0131d\u0131r. E\u011fer <code>Keystore password is incorrect<\/code> veya <code>Not a valid PKCS12 file<\/code> gibi bir hata al\u0131yorsan\u0131z, \u015fifreleri veya kopyalamay\u0131 kontrol etmeniz gerekir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">5. Servislerin Ba\u015flat\u0131lmas\u0131 ve Do\u011frulama<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Konfig\u00fcrasyonlar\u0131m\u0131z\u0131 kurumsal standartlara getirdi\u011fimize ve SSL sertifikalar\u0131m\u0131z\u0131 g\u00fcvene ald\u0131\u011f\u0131m\u0131za g\u00f6re art\u0131k cluster yap\u0131m\u0131z\u0131 ate\u015fleyebiliriz. Apache NiFi 2.9.0 g\u00fcvenli modda a\u00e7\u0131ld\u0131\u011f\u0131nda bir kullan\u0131c\u0131 ad\u0131 ve \u015fifreye ihtiya\u00e7 duyar. Cluster&#8217;\u0131 ba\u015flatmadan \u00f6nce bu kimlik bilgilerini el ile set edece\u011fiz.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5.1. NiFi Servislerinin S\u0131rayla Ba\u015flat\u0131lmas\u0131<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">NiFi 2.x mimarisinde ilk kurulumda aray\u00fcze eri\u015febilmek i\u00e7in her iki node \u00fczerinde de ortak bir admin kullan\u0131c\u0131s\u0131 tan\u0131mlamam\u0131z gerekir. Kurumsal parola politikas\u0131 gere\u011fi \u015fifrenin <strong>en az 12 karakter<\/strong> olmas\u0131 \u015fartt\u0131r.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Her iki sunucuda da<\/strong> (<code>nifi01<\/code> ve <code>nifi02<\/code>) s\u0131ras\u0131yla \u015fu komutu \u00e7al\u0131\u015ft\u0131rarak ilk giri\u015f bilgilerini sisteme enjekte edin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/opt\/nifi\/current\n.\/bin\/nifi.sh set-single-user-credentials admin Password123456<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Hem Node-1 hem de Node-2 sunucular\u0131nda<\/strong> ana konfig\u00fcrasyon dosyas\u0131n\u0131 a\u00e7:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vi \/opt\/nifi\/current\/conf\/nifi.properties<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dosya i\u00e7inde <code>nifi.sensitive.props.key<\/code> sat\u0131r\u0131n\u0131 bul (varsay\u0131lan olarak bo\u015ftur) ve iki sunucuya da <strong>birebir ayn\u0131 olacak \u015fekilde<\/strong> en az 12 karakterli ortak bir anahtar yaz. \u00d6rne\u011fin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nifi.sensitive.props.key=Password123456<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">5.2. K\u00fcme Elemanlar\u0131n\u0131n S\u0131ral\u0131 Ba\u015flat\u0131lmas\u0131<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Bir NiFi cluster yap\u0131s\u0131nda node&#8217;lar\u0131n liderlik se\u00e7imi yapabilmesi ve veri tutarl\u0131l\u0131\u011f\u0131 i\u00e7in harici ZooKeeper servisinin ayakta olmas\u0131 \u015fartt\u0131r. Bu nedenle a\u015fa\u011f\u0131daki ba\u015flatma s\u0131ras\u0131na milimetrik olarak uymam\u0131z gerekir:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>ZooKeeper Kontrol\u00fc:<\/strong> B\u00f6l\u00fcm 3&#8217;te kurdu\u011fumuz harici ZooKeeper cluster&#8217;\u0131n (<code>nifi01:2181<\/code> ve <code>nifi02:2181<\/code>) ayakta ve \u00e7al\u0131\u015f\u0131r durumda oldu\u011fundan emin olun.<\/li>\n\n\n\n<li><strong>Node-1 Ba\u015flatma:<\/strong> \u0130lk olarak ana koordinat\u00f6r aday\u0131m\u0131z olan <code>nifi01.cluster<\/code> sunucusuna gelin ve NiFi servisini arka planda aya\u011fa kald\u0131r\u0131n:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>\/opt\/nifi\/current\/bin\/nifi.sh start<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Node-1 Log Takibi:<\/strong> Node-1&#8217;in tamamen aya\u011fa kalkmas\u0131n\u0131 ve Jetty web sunucusunun SSL portunu dinlemeye ba\u015flad\u0131\u011f\u0131n\u0131 loglardan do\u011frulay\u0131n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tail -f \/opt\/nifi\/current\/logs\/nifi-app.log<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Loglardaki \u015fu sat\u0131r her \u015feyin yolunda oldu\u011funu s\u00f6yl\u00fcyor:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Cluster is still voting on which Flow is the correct flow for the cluster. Election will complete in 284 seconds<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Bu Log Tam Olarak Ne Anlama Geliyor?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">NiFi Cluster mimarisinde ilk kurulumda veya t\u00fcm node&#8217;lar s\u0131f\u0131rdan ba\u015flarken <strong>&#8220;Flow Election&#8221; (Ak\u0131\u015f Se\u00e7imi)<\/strong> ad\u0131nda koruyucu bir mekanizma devreye girer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">NiFi \u015funu der: <em>&#8220;Ben \u015fu an 2 node&#8217;lu bir cluster&#8217;\u0131m. Node&#8217;lardan birinde eski ya da farkl\u0131 bir ak\u0131\u015f tasar\u0131m\u0131 (flow.xml.gz \/ flow.json.gz) kalm\u0131\u015f olabilir. Veri kayb\u0131 veya senkronizasyon hatas\u0131 olmas\u0131n diye bekleyece\u011fim, t\u00fcm node&#8217;lar aya\u011fa kalk\u0131p bana kendi ak\u0131\u015f \u015femalar\u0131n\u0131 raporlayacak, biz de ortakla\u015fa en do\u011fru ak\u0131\u015fa oylama ile karar verece\u011fiz.&#8221;<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u015eimdi Ne Yapman Gerekiyor?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u015eu an her \u015fey t\u0131k\u0131r\u0131nda. 5 dakika (300 saniye) boyunca Node-1&#8217;in oylama s\u00fcresinin bitmesini <strong>beklemene gerek yok<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Hemen \u015fimdi Node-2 (<code>nifi02<\/code>) sunucusuna ge\u00e7 ve orada da NiFi&#8217;\u0131 ba\u015flat:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/opt\/nifi\/current\/bin\/nifi.sh start<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Her iki node da ba\u015flat\u0131ld\u0131ktan sonra sunuculardan herhangi birinde <code>nifi-app.log<\/code> dosyas\u0131n\u0131 izleyerek d\u00fc\u011f\u00fcmlerin birbiriyle el s\u0131k\u0131\u015f\u0131p s\u0131k\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol edin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tail -f \/opt\/nifi\/current\/logs\/nifi-app.log<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>INFO &#91;Heartbeat Monitor Thread-1] o.a.n.c.h.AbstractHeartbeatMonitor Finished processing 2 heartbeats in 17312 nanos<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Loglar Bize Ne Diyor?<\/h3>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><code>from nifi01.cluster:8443<\/code> ve <code>from nifi02.cluster:8443<\/code> adreslerinden gelen kalp at\u0131\u015flar\u0131 (<code>HEARTBEAT<\/code>) ba\u015far\u0131yla al\u0131nm\u0131\u015f.<\/li>\n\n\n\n<li><code>Finished processing 2 heartbeats<\/code> ifadesi, her iki node&#8217;un da \u015fu an el s\u0131k\u0131\u015ft\u0131\u011f\u0131n\u0131, birbirini tan\u0131d\u0131\u011f\u0131n\u0131 ve cluster&#8217;\u0131n <strong>2\/2<\/strong> \u015feklinde aktif olarak kalbinin att\u0131\u011f\u0131n\u0131 s\u00f6yl\u00fcyor.<\/li>\n\n\n\n<li>Aradaki SSL sertifikalar\u0131, anahtarlar, \u015fifreler, ZooKeeper ba\u011flant\u0131lar\u0131 ve firewall kurallar\u0131 milimetrik olarak do\u011fru \u00e7al\u0131\u015fm\u0131\u015f ki en ufak bir el s\u0131k\u0131\u015fma hatas\u0131 (<code>SSLHandshakeException<\/code>) d\u00fc\u015fmemi\u015f.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">\u015eimdi Taray\u0131c\u0131dan Aray\u00fcze Akma Zaman\u0131!<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Hemen taray\u0131c\u0131n\u0131 a\u00e7 ve \u015fu adreslerden birine git:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>URL:<\/strong> <code>[https:\/\/nifi01.cluster:8443\/nifi\/](https:\/\/nifi01.cluster:8443\/nifi\/)<\/code> (Veya <code>nifi02.cluster:8443<\/code>)<\/li>\n\n\n\n<li><strong>Kullan\u0131c\u0131 Ad\u0131:<\/strong> <code>admin<\/code><\/li>\n\n\n\n<li><strong>\u015eifre:<\/strong> B\u00f6l\u00fcm 5.1&#8217;de <code>set-single-user-credentials<\/code> ile girdi\u011fin o en az 12 karakterli g\u00fc\u00e7l\u00fc \u015fifre(Password123456).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Aray\u00fcze girdi\u011finde sa\u011f \u00fcst k\u00f6\u015fedeki men\u00fcden ya da sol \u00fcstteki ikonlardan <strong>Cluster<\/strong> durumuna bak. Orada yan yana yanan ye\u015fil \u0131\u015f\u0131klar\u0131 ve <code>Connected<\/code> durumundaki 2 node&#8217;u g\u00f6rd\u00fc\u011f\u00fcnde bu serinin hakl\u0131 gururunu ya\u015fayabilirsin.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;galleryId&quot;:&quot;6a277dadd2535&quot;}\" data-wp-interactive=\"core\/gallery\" class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a277dadd300b&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a277dadd300b\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"743\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"994\" src=\"https:\/\/oraclius.com.tr\/wp-content\/uploads\/2026\/05\/Ekran-Alintisi-1024x743.png\" alt=\"\" class=\"wp-image-994\" srcset=\"https:\/\/oraclius.com.tr\/wp-content\/uploads\/2026\/05\/Ekran-Alintisi-1024x743.png 1024w, https:\/\/oraclius.com.tr\/wp-content\/uploads\/2026\/05\/Ekran-Alintisi-300x218.png 300w, https:\/\/oraclius.com.tr\/wp-content\/uploads\/2026\/05\/Ekran-Alintisi-768x557.png 768w, https:\/\/oraclius.com.tr\/wp-content\/uploads\/2026\/05\/Ekran-Alintisi-1536x1115.png 1536w, https:\/\/oraclius.com.tr\/wp-content\/uploads\/2026\/05\/Ekran-Alintisi-18x12.png 18w, https:\/\/oraclius.com.tr\/wp-content\/uploads\/2026\/05\/Ekran-Alintisi.png 1604w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Veri ak\u0131\u015f y\u00f6netimi ve entegrasyon s\u00fcre\u00e7lerinde, sistemin kesintisiz \u00e7al\u0131\u015fmas\u0131 (High Availability) ve gelen veri y\u00fck\u00fcn\u00fcn sunucular aras\u0131nda dengeli payla\u015f\u0131lmas\u0131 (Load Balancing) sistem mimarisinin en kritik yap\u0131 ta\u015flar\u0131d\u0131r. Apache NiFi, b\u00fcy\u00fck \u00f6l\u00e7ekli veri \u00fcretim ortamlar\u0131nda bu ihtiyac\u0131 yerel olarak destekledi\u011fi Aktif-Aktif (Active-Active) cluster mimarisiyle \u00e7\u00f6zer. Bu yaz\u0131 dizisinde, kurumsal ortamlarda veri kayb\u0131n\u0131n \u00f6n\u00fcne ge\u00e7mek ve i\u015fleme [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":945,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[43],"tags":[],"class_list":["post-944","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-genel-en"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Apache NiFi 2.9 ile Y\u00fcksek Eri\u015filebilir (HA) Data Ingestion: 2-Node Cluster Kurulumu<\/title>\n<meta name=\"description\" content=\"Veri ak\u0131\u015f y\u00f6netimi ve entegrasyon s\u00fcre\u00e7lerinde, sistemin kesintisiz \u00e7al\u0131\u015fmas\u0131 (High Availability) ve gelen veri y\u00fck\u00fcn\u00fcn sunucular aras\u0131nda dengeli\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/oraclius.com.tr\/en\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Apache NiFi 2.9 ile Y\u00fcksek Eri\u015filebilir (HA) Data Ingestion: 2-Node Cluster Kurulumu\" \/>\n<meta property=\"og:description\" content=\"Veri ak\u0131\u015f y\u00f6netimi ve entegrasyon s\u00fcre\u00e7lerinde, sistemin kesintisiz \u00e7al\u0131\u015fmas\u0131 (High Availability) ve gelen veri y\u00fck\u00fcn\u00fcn sunucular aras\u0131nda dengeli\" \/>\n<meta property=\"og:url\" content=\"https:\/\/oraclius.com.tr\/en\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\/\" \/>\n<meta property=\"og:site_name\" content=\"oraclius\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-21T14:53:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-02T12:48:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/oraclius.com.tr\/wp-content\/uploads\/2026\/05\/img1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"640\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"YUNUS EMRE ATAY\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"YUNUS EMRE ATAY\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/oraclius.com.tr\\\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/oraclius.com.tr\\\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\\\/\"},\"author\":{\"name\":\"YUNUS EMRE ATAY\",\"@id\":\"https:\\\/\\\/oraclius.com.tr\\\/#\\\/schema\\\/person\\\/15e2f7b9dc977c71806301e629135e09\"},\"headline\":\"Apache NiFi 2.9 ile Y\u00fcksek Eri\u015filebilir (HA) Data Ingestion: 2-Node Cluster Kurulumu\",\"datePublished\":\"2026-05-21T14:53:10+00:00\",\"dateModified\":\"2026-06-02T12:48:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/oraclius.com.tr\\\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\\\/\"},\"wordCount\":3236,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/oraclius.com.tr\\\/#\\\/schema\\\/person\\\/15e2f7b9dc977c71806301e629135e09\"},\"image\":{\"@id\":\"https:\\\/\\\/oraclius.com.tr\\\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/oraclius.com.tr\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/img1.jpg\",\"articleSection\":[\"Genel\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/oraclius.com.tr\\\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/oraclius.com.tr\\\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\\\/\",\"url\":\"https:\\\/\\\/oraclius.com.tr\\\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\\\/\",\"name\":\"Apache NiFi 2.9 ile Y\u00fcksek Eri\u015filebilir (HA) Data Ingestion: 2-Node Cluster Kurulumu\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/oraclius.com.tr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/oraclius.com.tr\\\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/oraclius.com.tr\\\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/oraclius.com.tr\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/img1.jpg\",\"datePublished\":\"2026-05-21T14:53:10+00:00\",\"dateModified\":\"2026-06-02T12:48:44+00:00\",\"description\":\"Veri ak\u0131\u015f y\u00f6netimi ve entegrasyon s\u00fcre\u00e7lerinde, sistemin kesintisiz \u00e7al\u0131\u015fmas\u0131 (High Availability) ve gelen veri y\u00fck\u00fcn\u00fcn sunucular aras\u0131nda dengeli\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/oraclius.com.tr\\\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/oraclius.com.tr\\\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/oraclius.com.tr\\\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\\\/#primaryimage\",\"url\":\"https:\\\/\\\/oraclius.com.tr\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/img1.jpg\",\"contentUrl\":\"https:\\\/\\\/oraclius.com.tr\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/img1.jpg\",\"width\":640,\"height\":640,\"caption\":\"nifi_cluster\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/oraclius.com.tr\\\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\\\/\\\/oraclius.com.tr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Apache NiFi 2.9 ile Y\u00fcksek Eri\u015filebilir (HA) Data Ingestion: 2-Node Cluster Kurulumu\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/oraclius.com.tr\\\/#website\",\"url\":\"https:\\\/\\\/oraclius.com.tr\\\/\",\"name\":\"oraclius\",\"description\":\"Linux, SQL, Oracle rehberleri ve daha fazlas\u0131 i\u00e7in oraclius.com.tr\u2019yi ziyaret edin.\",\"publisher\":{\"@id\":\"https:\\\/\\\/oraclius.com.tr\\\/#\\\/schema\\\/person\\\/15e2f7b9dc977c71806301e629135e09\"},\"alternateName\":\"oracle\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/oraclius.com.tr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/oraclius.com.tr\\\/#\\\/schema\\\/person\\\/15e2f7b9dc977c71806301e629135e09\",\"name\":\"YUNUS EMRE ATAY\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/oraclius.com.tr\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/oradb.jpeg\",\"url\":\"https:\\\/\\\/oraclius.com.tr\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/oradb.jpeg\",\"contentUrl\":\"https:\\\/\\\/oraclius.com.tr\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/oradb.jpeg\",\"width\":512,\"height\":512,\"caption\":\"YUNUS EMRE ATAY\"},\"logo\":{\"@id\":\"https:\\\/\\\/oraclius.com.tr\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/oradb.jpeg\"},\"description\":\"oracle\",\"sameAs\":[\"https:\\\/\\\/oraclius.com.tr\",\"https:\\\/\\\/instagram.com\\\/lemratal\",\"https:\\\/\\\/linkedin.com\\\/in\\\/emreatayy\",\"https:\\\/\\\/www.youtube.com\\\/@lemratal\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Apache NiFi 2.9 ile Y\u00fcksek Eri\u015filebilir (HA) Data Ingestion: 2-Node Cluster Kurulumu","description":"Veri ak\u0131\u015f y\u00f6netimi ve entegrasyon s\u00fcre\u00e7lerinde, sistemin kesintisiz \u00e7al\u0131\u015fmas\u0131 (High Availability) ve gelen veri y\u00fck\u00fcn\u00fcn sunucular aras\u0131nda dengeli","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/oraclius.com.tr\/en\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\/","og_locale":"en_US","og_type":"article","og_title":"Apache NiFi 2.9 ile Y\u00fcksek Eri\u015filebilir (HA) Data Ingestion: 2-Node Cluster Kurulumu","og_description":"Veri ak\u0131\u015f y\u00f6netimi ve entegrasyon s\u00fcre\u00e7lerinde, sistemin kesintisiz \u00e7al\u0131\u015fmas\u0131 (High Availability) ve gelen veri y\u00fck\u00fcn\u00fcn sunucular aras\u0131nda dengeli","og_url":"https:\/\/oraclius.com.tr\/en\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\/","og_site_name":"oraclius","article_published_time":"2026-05-21T14:53:10+00:00","article_modified_time":"2026-06-02T12:48:44+00:00","og_image":[{"width":640,"height":640,"url":"https:\/\/oraclius.com.tr\/wp-content\/uploads\/2026\/05\/img1.jpg","type":"image\/jpeg"}],"author":"YUNUS EMRE ATAY","twitter_card":"summary_large_image","twitter_misc":{"Written by":"YUNUS EMRE ATAY","Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/oraclius.com.tr\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\/#article","isPartOf":{"@id":"https:\/\/oraclius.com.tr\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\/"},"author":{"name":"YUNUS EMRE ATAY","@id":"https:\/\/oraclius.com.tr\/#\/schema\/person\/15e2f7b9dc977c71806301e629135e09"},"headline":"Apache NiFi 2.9 ile Y\u00fcksek Eri\u015filebilir (HA) Data Ingestion: 2-Node Cluster Kurulumu","datePublished":"2026-05-21T14:53:10+00:00","dateModified":"2026-06-02T12:48:44+00:00","mainEntityOfPage":{"@id":"https:\/\/oraclius.com.tr\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\/"},"wordCount":3236,"commentCount":0,"publisher":{"@id":"https:\/\/oraclius.com.tr\/#\/schema\/person\/15e2f7b9dc977c71806301e629135e09"},"image":{"@id":"https:\/\/oraclius.com.tr\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\/#primaryimage"},"thumbnailUrl":"https:\/\/oraclius.com.tr\/wp-content\/uploads\/2026\/05\/img1.jpg","articleSection":["Genel"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/oraclius.com.tr\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/oraclius.com.tr\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\/","url":"https:\/\/oraclius.com.tr\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\/","name":"Apache NiFi 2.9 ile Y\u00fcksek Eri\u015filebilir (HA) Data Ingestion: 2-Node Cluster Kurulumu","isPartOf":{"@id":"https:\/\/oraclius.com.tr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/oraclius.com.tr\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\/#primaryimage"},"image":{"@id":"https:\/\/oraclius.com.tr\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\/#primaryimage"},"thumbnailUrl":"https:\/\/oraclius.com.tr\/wp-content\/uploads\/2026\/05\/img1.jpg","datePublished":"2026-05-21T14:53:10+00:00","dateModified":"2026-06-02T12:48:44+00:00","description":"Veri ak\u0131\u015f y\u00f6netimi ve entegrasyon s\u00fcre\u00e7lerinde, sistemin kesintisiz \u00e7al\u0131\u015fmas\u0131 (High Availability) ve gelen veri y\u00fck\u00fcn\u00fcn sunucular aras\u0131nda dengeli","breadcrumb":{"@id":"https:\/\/oraclius.com.tr\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/oraclius.com.tr\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/oraclius.com.tr\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\/#primaryimage","url":"https:\/\/oraclius.com.tr\/wp-content\/uploads\/2026\/05\/img1.jpg","contentUrl":"https:\/\/oraclius.com.tr\/wp-content\/uploads\/2026\/05\/img1.jpg","width":640,"height":640,"caption":"nifi_cluster"},{"@type":"BreadcrumbList","@id":"https:\/\/oraclius.com.tr\/apache-nifi-2-0-ile-yuksek-erisilebilir-ha-data-ingestion-2-node-cluster-kurulumu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/oraclius.com.tr\/"},{"@type":"ListItem","position":2,"name":"Apache NiFi 2.9 ile Y\u00fcksek Eri\u015filebilir (HA) Data Ingestion: 2-Node Cluster Kurulumu"}]},{"@type":"WebSite","@id":"https:\/\/oraclius.com.tr\/#website","url":"https:\/\/oraclius.com.tr\/","name":"oraclius","description":"Linux, SQL, Oracle rehberleri ve daha fazlas\u0131 i\u00e7in oraclius.com.tr\u2019yi ziyaret edin.","publisher":{"@id":"https:\/\/oraclius.com.tr\/#\/schema\/person\/15e2f7b9dc977c71806301e629135e09"},"alternateName":"oracle","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/oraclius.com.tr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/oraclius.com.tr\/#\/schema\/person\/15e2f7b9dc977c71806301e629135e09","name":"YUNUS EMRE ATAY","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/oraclius.com.tr\/wp-content\/uploads\/2024\/12\/oradb.jpeg","url":"https:\/\/oraclius.com.tr\/wp-content\/uploads\/2024\/12\/oradb.jpeg","contentUrl":"https:\/\/oraclius.com.tr\/wp-content\/uploads\/2024\/12\/oradb.jpeg","width":512,"height":512,"caption":"YUNUS EMRE ATAY"},"logo":{"@id":"https:\/\/oraclius.com.tr\/wp-content\/uploads\/2024\/12\/oradb.jpeg"},"description":"oracle","sameAs":["https:\/\/oraclius.com.tr","https:\/\/instagram.com\/lemratal","https:\/\/linkedin.com\/in\/emreatayy","https:\/\/www.youtube.com\/@lemratal"]}]}},"_links":{"self":[{"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/posts\/944","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/comments?post=944"}],"version-history":[{"count":6,"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/posts\/944\/revisions"}],"predecessor-version":[{"id":999,"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/posts\/944\/revisions\/999"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/media\/945"}],"wp:attachment":[{"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/media?parent=944"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/categories?post=944"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/tags?post=944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}