Google Cloud’da Docker üzerinde nifi kapsayıcı kurulumu ve Cloud Storage’a dosya gönderme
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
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
Üçü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
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
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
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
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
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