Google Cloud’da Docker üzerinde nifi kapsayıcı kurulumu ve Cloud Storage’a dosya gönderme

Muhammed Celik
İstanbul Data Science Academy
6 min readAug 22, 2022

Uygulanacak Adımlar

  • Google Compute Engine VM kurulumu
  • Güvenlik duvarı Kurulumu
  • Cloud Storage Kurulumu
  • Compute Engine üzerinde docker kurlumu
  • Docker üzerinde Nifi kurulumu
  • Nifi üzerinden Cloud Storage’a veri aktarımı

İlk adım cloud üzerinde sanal makine oluşturulması. Sol menüden ya da arama çubuğuna Compute Engine yazarak servisin içine gidin ve yeni bir makine oluşturun

Sanal Makineyi Ayarlayın

İsim verin ve bölge ayarlayın. Maliyeti düşürmek için us-central1'i seçebilirsiniz.

Dilediğimiz zaman makineyi kapatarak işlemci tipi ve ailesini değiştirebileceğimiz için düşük kapasiteli E2 jenerasyon işlemci tercih ettim. Dilerseniz farklı jenerasyonlar seçebilirsiniz. (Sağ tarafta bulunan fatura alanında seçim ücreti anlık olarak yansıdığı için seçmiş olduğunuz ürünlerin fiyatını aylık bazda kontrol ederek kurmanızı öneririm)

Tüm işlemci tipleri ve işlemcilerin ne kadar hızlara sahip olduklarını Google Cloud’un yardım sayfasında inceleyebilirsiniz. Kaynak:https://cloud.google.com/compute/docs/machine-types

Disk tipini Debian GNU/Linux 11 (bullseye) olan varsayılan olarak bırakın

Debian GNU/Linux 11 (bullseye) olan varsayılan olarak bırakın

Makineye özel izinler vermemize gerek olmadığı için hizmet hesabını “No service account” olarak seçin.

Daha sonra Nifi’ye browser üzerinden bağlantı sağlayacağımızdan dolayı güvenlik duvarı ayarlarında HTTP trafiğine izin vermemiz gerekiyor.

Geriye kalan tüm seçenekleri boş bırakıp makineyi oluşturabilirsiniz.

İkinci adımda bağlantı noktalarına izin vermek için güvenlik duvarında port kuralı oluşturmamız gerekiyor. Bunun için Firewall aracına gidip Create Firewall Rule butonuna tıklamalıyız. Burada Nifi default portu olan :9090' a erişim verdikten sonra web tarayıcımız üzerinden engele takılmadan ara yüze erişim sağlamış olacağız

Target ve Source ranges’a seçim yapmadan manuel olarak yazıp boşluk tuşuna basmanız yeterli
firewall kural tablosunda gözükecektir

Üçüncü adımımızda verilerimizi göndereceğimiz Cloud Storage alanı oluşturacağız. Sol tarafta bulunan menüden ya da arama çubuğuna Cloud Storage yazıp servis alanına gidin

Sadece işaretli alana deponuzun ismini verin ve farklı bir ayar yapmadan Create butonuna tıklayın (Bölgeyi Multiple yerine Region olarak seçebilirsiniz)

Dördüncü adımımızda oluşturduğumuz sanal makineye bağlantı yaparak Docker kurulumu gerçekleştireceğiz. Bunun için Compute Engine bölümünde makinelerimizin listelendiği alana geçip SSH bağlantısı gerçekleştiriyoruz

VM üzerine Docker kurulumu Kaynak: https://docs.docker.com/engine/install/debian/

Kodları sırasıyla çalıştırın

Docker kurulumunu sanal makinamızda tamamladık ve şimdi nifi kurulumuna geçebiliriz

:https://paulojeronimo.com/apache-nifi-tutorial/

Kurulum bittikten sonra işaretli olan kısımdaki container id’sini yazarak günlük dosyasında başarılı olduğunu kontrol edin

Kurulumları tamamlamış bulunuyoruz. Şimdi sanal makinemizin harici ip sini kullanarak açmış olduğumuz :9090 portuna bağlantı kurup nifi’nin ara yüzüne geçiş yapabiliriz

Tarayıcınızın arama çubuğuna makinenin harici ip ve nifi portunu girin

Artık her şey bittiğine göre herhangi bir kod yazmadan nifi’de sanal veriler oluşturup Google Cloud Storage’ e yazabiliriz.

Nifi ile Google Cloud bağlantısı kurmak için proje kimliği oluşturmamız gerekiyor. Bunun için hesaplar bölümüne giderek yeni kimlik oluşturacağız

1.kısımda oluşturma alanına bilgileri girin

2. kısımda oluşturacağımız anahtara erişim izni kuralını tanımlayın. Şimdilik kısıtlı bir kural bizim için yeterli.

Pub/sub kuralı ekleyin

Bir sonraki adımları boş bırakıp oluştur butonuna basın.

Hizmet hesapları oluşturma ve yönetme: https://cloud.google.com/iam/docs/creating-managing-service-accounts

GCP üzerinde Kuralların ne işe yaradığı: hakkında:https://cloud.google.com/storage/docs/access-control/iam-roles

Pub/Sub Nedir?:https://cloud.google.com/pubsub/docs/overview

Oluşturma işlemi bittikten sonra listelenen anahtarımızın sağında bulunan 3 noktaya tıklayarak anahtar yönetim kısmından yeni benzersiz anahtar oluşturun

Bu işlemden sonra yerel makinemize içerisinde cloud bilgilerimizi içeren bir json dosyası otomatik olarak inecek. Json dosyasının içerisindeki bilgileri nifi’ye tanıtacağımızdan dolayı dosyayı herhangi bir görüntüleyici kullanarak içeriğini açın

Tarayıcınızda nifi ekranına boş bir alana sağ tık -configure bölümüne gidin

Gelen ekranda “controller services” bölümüne geçip sağ kısımda bulunan “+” butonuna tıkladıktan sonra açılan pencerenin arama kısmına “gcp” yazın ve çıkan “GCP Credentials Provider Service” aracını seçip “ADD” butonuna tıklayın

Oluşturduğumuz servisin sağında bulunan ayar simgesine tıklayın

properties segmesindeki Service Account JSON bloğuna indirdiğimiz json anahtarını yapıştırın. Tamam dedikten sonra textbox’ın içeriği sensetive value olarak kapalı görünümde kalacaktır. Apply diyip pencereyi kapatın

State alanı Validating olarak kalmaya devam ediyorsa sayfayı kapatıp tekrar configure penceresini açın

Pencereyi kapatıp açtığınızda servisinizin Disabled durumunda olduğunu görebilirsiniz

Şimşek şeklindeki Enabled butonuna tıklayıp servisinizi aktif duruma getirin ve pencereyi kapatıp ana ekrana geçin

Nifi ekranında processore basılı tutup boş alana doğru sürükleyin

açılan ekranda arama kısmına 2.görseldeki işlemcilerin isimlerini yazıp tek tek ekleyin

İşlemcileri oluşturduktan sonra üzerlerine gelindiğinde oluşan ok işaretini bir sonraki işlemciye doğru sürükleyip üzerine bırakın. Birbirine bağladıktan sonra açılan ekranda en altta bulunan 2 adet LogAttirubute işlemcilerinin birini “Success” diğerini “Failure” olarak işaretleyin

GenerateFlowFile zamanlayıcı ayarını düzenleyin. Sağ tık Configure seçeneğini açın

Her 5 saniyede bir dosya üretiyor olacağız

Nifi zamanlama nedir: https://benyaakobi.medium.com/nifi-scheduling-a522a1c9e740

Properties segmesine geçin ve Cloud’a göndereceğimiz dosyanın içeriğini text olarak girin

İstediğiniz mesajı yazabilirsiniz (sonuna eklenen kod mesajı gönderdiği tarih saati otomatik oluşturur)

PutGCSObject işlemcisini ayarlayın

Project ID Google Cloud hesabınızın dashboard kısmında yazmaktadır

Provider Service daha önce oluşturduğumuz için açılır pencerede çıkacaktır

İşaretli kısımların doldurulması yeterli

Artık Çalışabilir

Nifi’de boş alana sağ tıklayıp start seçeneğini seçip tüm işlemcileri çalıştırın

Daha sonra Cloud Storage servisini açıp vermiş olduğunuz isimlerde dosya oluşturulduğunu ve dosya içerisine mesajınızın yazıldığını görün

URL alanına tıklayın

Yazdığınız mesajın ve tarih saatin doğru bir şekilde aktarıldığını görebilirsiniz

--

--