Ana içeriğe geç

🚀 Apache Kafka Kurulumu: Ubuntu/Debian Üzerinde KRaft Modunda Kafka’ya Giriş

Meta Açıklaması: Apache Kafka’yı Ubuntu/Debian sunucunuza KRaft moduyla kurun, systemd servisi oluşturun ve topic bazlı mesaj akışı üretmeyi öğrenin.


📌 Bu Rehberde Ne Öğreneceksiniz?

Bu doküman sana şunları öğretir:

  • Kafka’yı ZooKeeper’sız KRaft modu ile kurmak
  • Kafka Cluster ID oluşturmak ve log depolamasını ayarlamak
  • Kafka’yı systemd servisi olarak arka planda çalıştırmak
  • Topic oluşturma, mesaj gönderme (producer) ve okuma (consumer)
  • Kafka’nın RabbitMQ ve Pulsar gibi rakipleriyle farkları

Bu rehber sonunda Kafka’nın temel streaming mimarisini uçtan uca kullanabilir olacaksın.


🧠 Teknik Özet

Kafka; yüksek hacimli veri akışlarını gerçek zamanlı, güvenilir ve ölçeklenebilir şekilde işlemeyi sağlayan bir event streaming platformudur. Bu rehberde Kafka 3.x sürümleriyle gelen KRaft mimarisini kullanıyoruz; çünkü Kafka 4 ile ZooKeeper tamamen kaldırılacak.


1. Kafka'nın Kurulumu ve KRaft Yapılandırması

➤ 1.1 Kafka için özel kullanıcı oluştur

sudo adduser kafka

Kafka’yı izole kullanıcıyla çalıştırmak güvenliği artırır.


su kafka

Kafka kullanıcısına geçiş yapılır.

➤ 1.2 Kafka paketini indir ve çıkar


curl -o /tmp/kafka.tgz https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz

mkdir ~/kafka
tar -xzf /tmp/kafka.tgz -C ~/kafka --strip-components=1

Arşivi direkt Kafka dizinine açar.

➤ 1.3 KRaft konfigürasyon dosyasını düzenle


nano ~/kafka/config/kraft/server.properties

Aşağıdaki satırı düzenle:


log.dirs=/home/kafka/kafka-logs

Günlüklerin kalıcı dizinde saklanmasını sağlar.

➤ 1.4 Cluster ID oluştur ve storage formatla


KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"

bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties

➤ 1.5 Kafka’yı ilk kez başlat


bin/kafka-server-start.sh config/kraft/server.properties

Çalıştığını gördükten sonra CTRL+C ile durdur.

2. Kafka’yı Servis (systemd) Olarak Çalıştırma

➤ 2.1 Servis dosyasını oluştur


sudo nano /etc/systemd/system/kafka.service
  • İçeriği ekle:

[Unit]
Description=Kafka Server
Requires=network.target

[Service]
Type=simple
User=kafka
ExecStart=/bin/sh -c '/home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/kraft/server.properties > /home/kafka/kafka/kafka.log 2>&1'
ExecStop=/home/kafka/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

➤ 2.2 Servisi aktif et


sudo systemctl daemon-reload
sudo systemctl start kafka
sudo systemctl status kafka
sudo systemctl enable kafka

3. Topic Oluşturma, Mesaj Üretme ve Tüketme

➤ 3.1 Topic oluştur


bin/kafka-topics.sh --create --topic first-topic --bootstrap-server localhost:9092
  • Listelemek için:

bin/kafka-topics.sh --list --bootstrap-server localhost:9092
  • Detay:

bin/kafka-topics.sh --describe --topic first-topic --bootstrap-server localhost:9092

➤ 3.2 Producer ile mesaj gönder


bin/kafka-console-producer.sh --topic first-topic --bootstrap-server localhost:9092
  • Örnek giriş:

ilk mesajım
ikinci mesaj

➤ 3.3 Consumer ile mesajları oku

1. Gerçek zamanlı dinlemek için:


bin/kafka-console-consumer.sh --topic first-topic --bootstrap-server localhost:9092

2. Geçmiş dahil okumak için:


bin/kafka-console-consumer.sh --topic first-topic --from-beginning --bootstrap-server localhost:9092

➤ 3.4 Topic silme


bin/kafka-topics.sh --delete --topic first-topic --bootstrap-server localhost:9092

4. Kafka – RabbitMQ – Pulsar Karşılaştırması

1. Sistem Tür Odak Açıklama

  • Kafka Event Streaming Süreklilik + sıralı veri Log, telemetry, büyük veri için ideal

  • RabbitMQ Message Queue Hız + routing Mikroservis mesajlaşması için güçlü

  • Pulsar Hibrit MQ + Streaming Tek platformda iki yaklaşımı birleştirir

❓ Sıkça Sorulan Sorular (SSS)

1. Kafka ZooKeeper’sız çalışır mı? Evet, KRaft sayesinde tamamen bağımsız çalışır.

2. Tek makinede Kafka kullanılır mı? Geliştirme için evet, prod ortam için en az 3 node önerilir.

3. Mesajlar neden geçmişten tekrar okunabilir? Kafka tüm mesajları disk tabanlı loglarda saklar.

4. Partition neden önemlidir? Performans ve paralel işlemeyi artırır.

5. KRaft mı ZooKeeper mı daha iyi? Kafka 4 itibarıyla KRaft zorunlu olacak, bu yüzden şimdiden geçiş önerilir.

🏁 Sonuç

Bu rehber sayesinde Kafka’yı KRaft moduyla kurdun, service olarak arka planda çalıştırdın, topic oluşturup mesaj üretme/tüketme işlemlerini öğrendin. Kafka’nın streaming gücünü projelerine kolayca entegre edebilirsin.

Bu mimariyi Rabisu Bulut altyapısında hemen test edebilirsin. 🚀