GCP’de Kafka Kurulumu
GCP’de Kafka Kurulumu
Yakın zamanda bir proje için Google Cloud Platform’da koşan bir Kafka’ya ihtiyacımız oldu. Bu sebeple kurumlar için izleyebileceğimiz yolları araştırmaya başladık. Yaptığımız araştırmalar sonucunda, kurulum için bir kaç farklı yöntem olduğunu gördük. Bize en uygun olan yöntem ise, en hızlı olan olduğu için kurulum tercihimizi birazdan anlatacağım üçüncü yöntemden yana kullandık.
Bugün hem diğer yollardan hem de kendi seçtiğimiz yoldan bahsederek, adım adım GCP üzerinde Kafka’yı kurup, nasıl erişebileceğimizi anlatacağım.
Hangi yollar mevcut?
Kafka kurmanın bir çok yolu olması rağmen en efektif olan yolları aşağıda listeledim. İhtiyacınıza göre diğer yolları da tercih edebilirsiniz.
1. Kubernetes Engine
Kubernetes Engine üzerine wurstmeister/kafka imajını deploy ederek Kafka kullanabiliriz. İlgili imaja ve kurulum dokümanlarına ulaşmak için bu linki kullanabilirsiniz.
2. Confluent: Managed Apache Kafka for Google Cloud Platform.
Bu yolla kolay kullanım arayüzlerine ve bir çok ekstra işleve çok hızlı bir şekilde ulaşılabilse de, kendisi ücretli bir servistir. Detaylı bilgi ve ücretlendirme için Confluent websitesini ziyaret edebilirsiniz.
3. GCP Click to Deploy
Bizim de tercih ettiğimiz bu yol GCP Marketplace’de yer almakta ve bu sayede Compute Engine üzerindeki bir VM’e çok hızlı bir şekilde Kafka kurabiliriz.
Üstelik Click to Deploy kullanımı için herhangi bir ücret ödemeyeceksiniz.
Apache Kafka Kurulumu
- Öncelikle GCP console’a kullanıcımız ile giriş yapıyoruz.
- Buradaki linki kullanarak Kafka Click to Deploy’a ulaşıyoruz.
- Launch butonuna tıklıyoruz. (bugün itibari ile yaklaşık en düşük vm ücreti: $24.75/ay)
- Eğer karşımıza “Required APIs” sayfası gelirse, “Enable” butonuna tıklayabilirsiniz.
- Karşımıza VM’in ayarları çıkacak, burada dilediğiniz ayarı yapabilirsiniz. (default olarak da bırakabilirsiniz)
- Ardından Deploy butonuna tıklıyoruz ve bekliyoruz.
Ve Kafka kurulumunu başarıyla tamamlamış olduk.
External ve Internal IP’leri Bulalım
GCP console üzerinden “Compute Engine > VM Instances” akışını kullanarak mevcut VM’lerin listesine ulaşıyoruz. Biraz önce One Click Deploy ile uygulamayı oluştururken VM’e verdiğimiz ismi bu sayfadaki tabloda buluyoruz ve en sağ tarafta bulunan “Internal IP” ve “External IP” sütunundaki IP’leri kopyalıyoruz ve bir yere not ediyoruz.
- External IP: Bu bizim makinemizin Public IP’si, ileride uzak bağlantı için kullanacağız.
- Internal IP: Aynı network’de bu makineye ulaşmak istediğimizde kullanacağımız IP. İlerleyen aşamalarda “$BROKER_IP” olarak kullanacağız.
Hızlı Bir Test
Aşağıdaki adımalara geçmeden önce isterseniz kurduğumuz VM’e SSH ile bağlanarak minik bir test yapabiliriz. Bunun için;
- Öncelikle az önce deploy ettiğimiz Kafka VM Instance’ına tekrar ulaşalım.
- Ardından tablonun en sağında bulunan “SSH” butonuna tıklayıp, makineye bağlanalım.
- Sonrasında aşağıdaki komut satırlarını sırasıyla çalıştıralım ve mesajımızın topic’e yazıldığını görelim.
batuhan@kafka-vm:~$ export BROKER_IP=10.164.0.2
batuhan@kafka-vm:~$ sudo apt install -y kafkacat
batuhan@kafka-vm:~$ echo 'Heyyo!' | kafkacat -b $BROKER_IP:9092 -t dt_topic
batuhan@kafka-vm:~$ kafkacat -b $BROKER_IP:9092 -t dt_topic -eHeyyo!
Not: Buradaki “BROKER_IP” biraz önceli “Internal IP”’dir.
Firewall Rule (Kuralları)
- “VPC network > Firewall” menüsü altından önce firewall’a erişelim.
- 2. Ardından “Create Firewall Rule” butonuna tıklayarak aşağıdaki rule’ları tanımlayabilirsiniz.
- TCP:22 portuna izin vermemizin sebebi, VM’e ssh bağlantısı yapabilmemizi sağlamak.
- TCP:9092 ise Kafka’nın default port’u. Eğer bir producer uygulamamız varsa ve GCP üzerinde aynı VPC içerisindeyse aslında 9092 portunu açmanıza gerek yok. Ancak özellikle development ortamı için açılabilir ki local’den bir client aracılığı ile topic’leri ya da gelen message’ları görebilelim.
- 80 ve 443 portları ise bidiğiniz gibi HTTP ve HTTPS erişim için.
Kafka Ayarları
Kafka’ya uzak bağlantı yapabilmek için öncelikle bir kaç ayar yapmamız gerekiyor. Bu sebeple, yine “Compute Engine > VM Instances” akışını takip ediyoruz, kurduğumuz Kafka VM Instance’ının yanında bulunan “SSH” butonuna tıklayarak VM’e ssh bağlantısı yapıyoruz. Daha sonra aşağıdaki komutu çalıştırıyoruz.
batuhan@kafka-vm:~$ sudo nano /opt/kafka/config/server.properties
Açılan server.properties dosyasındaki “advertised.listeners” satırını bulup, başındaki “#” sembolünü siliyoruz ve aşağıdaki şekilde düzenledikten sonra kaydedip çıkıyoruz.
advertised.listeners=PLAINTEXT://123.45.67.89:9092
Buradaki 123.45.67.89 IP’si biraz önce “External IP” olarak bahsettiğim IP olmalıdır.
Ardından Kafka’yı restart etmek için aşağıdaki komutu çalıştırıyoruz.
batuhan@kafka-vm:~$ sudo systemctl restart kafka
Artık Kafka ayarlarımız da bittiğine göre her şey tamam. “123.45.67.89:9092" üzerinden kurduğumuz Kafka’ya erişebilirsiniz.
Kafka Client
macOS kullanıcılarına Conduktor uygulamasını rahatlıkla tavsiye ederim. Bir süre önce keşfettim ve oldukça memnunum. Zaten çok fazla seçeneğimiz olduğu da söylenemez 😊
Windows için de Kafka Tool adında bir uygulamaya denk geldim fakat Windows cihazım olmadığı için henüz test edemedim.
Kolay gelsin 👋