🚀 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. 🚀