Bu yazımda sizlerle Apache Nifi Cluster kurulumunu beraber yapacağız. Oracle Virtual Box ayarlarından Zookeeper kurulumuna kadar detaylı bir yazı olacak.
APACHE NIFI NEDIR?
Apache NiFi, sistemler arasındaki veri akışını otomatikleştirmek ve yönetmek için açık kaynaklı bir yazılımdır. Verileri işlemek ve dağıtmak için güçlü ve güvenilir bir sistemdir. Veri akışlarını oluşturmak, izlemek ve kontrol etmek için web tabanlı Kullanıcı Arayüzü sağlar. Çalışma zamanında verileri değiştirmek için son derece yapılandırılabilir ve değiştirilebilir bir veri akışı sürecine sahiptir.
a) Oracle VM VirtualBox Makine Kurulumu
Burada oluşturacağınız makinenin kaynaklarını kendiniz belirleyebilirsiniz fakat network tarafında yapılacak bazı ayarlamalar var.
Adapter 1 default olarak böyle geliyor. Burada bir değişiklik yapmıyoruz.
Adapter2 kısmında "Enable Network Adapter" seçeneğini girip ayarları bu şekilde değiştiriyoruz.
Bu ayarları tek bir sunucuda yapıp diğer sunucuları clone seçeneği ile oluşturabilirsiniz veya sunucularınız varsa her sunucuda bu ayarları yapmanız gerekmektedir.
b) Sunucunun Network Ayarları
Aşağıdaki ayarları Hostname ve Ip'leri kendinize özgü ayarlayabilirsiniz. Bunun dışındaki parametrelerde genel olarak bu ayarları girmenizi öneririm. Bu ayarları her sunucuda yapın hostname ve IPADDR kolonu her sunucu farklı olmalıdır.
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=nifi01 (her sunucu için farklı)
vi /etc/sysconfig/network-scripts/ifcfg-enp0s8
TYPE=Ethernet
DEVICE=enp0s8
BOOTPROTO=static
ONBOOT=yes
NETMASK=255.255.255.0
GATEWAY=192.168.56.1
IPADDR=192.168.56.101 (her sunucu için farklı)
NM_CONTROLLED=no
Sunucuların birbirleriyle haberleşmesi için her sunucuda bu ayarı kullanın.
vi /etc/hosts
192.168.56.101 nifi01
192.168.56.102 nifi02
192.168.56.103 nifi03
vi /etc/hostname
nifi01 (her sunucu için farklı)
service network restart
c) JAVA Kurulumu
Java'yı aşağıdaki şekilde kurarak kontrolünü sağlayınız.
yum install java-1.8.0-openjdk
java -version
c) Zookeeper Kurulumu
NiFi kendi içinde gömülü bir Zookeeper ile birlikte geliyor fakat çok fazla önerilen bir metod olmadığı için Zookeeper'ı ayrıca kurmanızı kesinlikle öneririm. Zookeeper'ı indirmek için buraya tıklayınız.
Zookeeper için bir kullanıcı oluşturup şifre tanımlayalım.
useradd -m zookeeper
passwd zookeeper
Daha sonrasında indirilen dosyayı zipten çıkararak ilgili dizine içeriğini gönderelim. Ardından yetki tanımlaması yapalım.
tar zxf apache-zookeeper-3.7.1-bin.tar.gz
cp -rf apache-zookeeper-3.7.1-bin/* /home/zookeeper
chown -R zookeeper:zookeeper /home/zookeeper
Kullanıcımıza geçiş yaparak içerisindeki ayarlamaları yapalım. Oluşturduğumuz data klasörünü aynı dizinde her sunucuda oluşturun. Daha sonra echo ile yaptığımız komutu her sunucuda (sunucu 1 için 1, sunucu 2 için 2, sunucu 3 için 3) gerekli değerleri girin. Konfigürasyon dosyasını cp komutu ile oluşturup zoo.cfg içinde gerekli ayarlamaları yapacağız.
su - zookeeper
mkdir data
echo 1 > data/myid (2,3 for other nodes)
cp ./conf/zoo_sample.cfg ./conf/zoo.cfg
zoo.cfg dosyasına girerek aşağıdaki ayarları güncelleyiniz.
vi zoo.cfg
tickTime=2000
dataDir=/home/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2
server.1=nifi01:2888:3888
server.2=nifi02:2888:3888
server.3=nifi03:2888:3888
Şimdi ise zookeeper'ı başlatalım. Bunun için bir servis oluşturarak bu işi kolaylaştıralım.
vi /etc/systemd/system/zookeeper.service
[Unit]
Description=Zookeeper Daemon
Documentation=http://zookeeper.apache.org
Requires=network.target
After=network.target
[Service]
Type=forking
WorkingDirectory=/home/zookeeper
User=zookeeper
ExecStart=/home/zookeeper/bin/zkServer.sh start /home/zookeeper/conf/zoo.cfg
ExecStop=/home/zookeeper/bin/zkServer.sh stop /home/zookeeper/conf/zoo.cfg
ExecReload=/home/zookeeper/bin/zkServer.sh restart /home/zookeeper/conf/zoo.cfg
TimeoutSec=30
Restart=on-failure
[Install]
WantedBy=default.target
Servis dosyamızı hazırladıktan sonra şimdi servisimizi başlatabiliriz.
systemctl daemon-reload
systemctl start zookeeper.service
systemctl enable zookeeper.service
Servisin durumunu kontrol edebilirsiniz.
systemctl status zookeeper.service
d) NiFi kurulumu
NiFi user'ı ve şifresi oluşturarak başlayalım.
useradd -m nifi
passwd nifi
Şimdi gerekli dosyayı buradan indirebilirsiniz. Daha sonrasında dosyayı zipten çıkararak gerekli dizine gönderip izinlerimizi veriyoruz.
tar zxf nifi-1.16.3-bin.tar.gz
cp -rf nifi-1.16.3/* /home/nifi
chown -R nifi:nifi /home/nifi
NiFi kullanıcımıza geçerek nifi ayarlarımıza bakalım. nifi.properties içinde birçok ayar var fakat bizim için gerekli parametreleri aşağıda sizler için hazırladım. Bu ayarları her sunucuda yapınız.
su - nifi
vi /home/nifi/conf/nifi.properties
nifi.cluster.is.node=true
nifi.cluster.node.address=nifi01 (nifi02,nifi03 for other nodes)
nifi.cluster.node.protocol.port=11443
nifi.cluster.node.load.balance.port=6342
nifi.remote.input.host=nifi01 (nifi02,nifi03 for other nodes)
nifi.remote.input.secure=false
nifi.remote.input.socket.port=10000
nifi.web.http.host=nifi01 (nifi02,nifi03 for other nodes)
nifi.web.http.port=9999
nifi.zookeeper.connect.string=nifi01:2181,nifi02:2181,nifi03:2181
Zookeeper için state-management.xml dosyasında aşağıdaki ayarı giriniz. Bu ayarı her sunucuda yapınız.
vi /home/nifi/conf/state-management.xml
<property name="Connect String">nifi01:2181,nifi02:2181,nifi03:2181</property>
Yukarıda gösterdiğim tüm ayarları her sunucu yaptığınıza emin olun. Bütün ayarlarımız bittiğine göre şimdi NiFi'ı başlatabiliriz. Her sunucuda NiFi'ı aşağıdaki komutla başlatın. Daha sonrasında log dosyasını takip ederek kurduğumuz cluster'ın worker ve master seçimi için 300 saniyelik bir bekleme süresi var. Bu süreyi log dosyasında anlık takip edebilirsiniz.
/home/nifi/bin/nifi.sh start
/home/nifi/logs/nifi-app.log
Election(seçim) bittiğinde ise aşağıdaki ekranlar ile karşılaşacağız. Verdiğiniz url ile NiFi web ui'na ulaşabilirsiniz.
Sol üst tarafta gördüğünüz 3/3 (Toplam 3 node ver her biri bağlı) size cluster nodelarınız ile ilgili bilgiyi verir. İsterseniz sağ üstteki ayarlardan cluster seçeneği ile daha detaylı ayarlara ulaşabilirsiniz.
Bu yazımızda sizlerle beraber Apache NiFi'yı ele aldık. Eğer yazıyı beğendiyseniz paylaşım yaparak bizlere destek olabilirsiniz.
Gelecek yazılarımızda görüşmek üzere, sağlıcakla kalın...
Great article!