Ana içeriğe geç

Apache Kafka Kurulumu-Ubuntu/Debian Rehberi


Bu Rehberde Ne Öğreneceksiniz

Bu rehberde aşağıdaki konuları adım adım öğreneceksiniz:

  • Apache Kafka’yı ZooKeeper olmadan KRaft modu ile kurma
  • Kafka için Cluster ID oluşturma ve storage yapılandırma
  • Kafka’yı systemd servisi olarak arka planda çalıştırma
  • Topic oluşturma, producer ile mesaj gönderme ve consumer ile mesaj okuma
  • Kafka’nın RabbitMQ ve Pulsar gibi alternatiflerle farkları

Bu rehberin sonunda Kafka'nın temel event streaming mimarisini uçtan uca kullanabilir duruma geleceksiniz.


Apache Kafka Nedir?

Apache Kafka; yüksek hacimli veri akışlarını gerçek zamanlı, güvenilir ve ölçeklenebilir şekilde işlemek için kullanılan dağıtık bir event streaming platformudur.

Kafka 3.x sürümleri ile birlikte gelen KRaft (Kafka Raft) mimarisi sayesinde artık ZooKeeper bağımlılığı ortadan kaldırılmıştır. Kafka 4 sürümü ile birlikte ZooKeeper tamamen kaldırılacaktır.


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

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

sudo adduser kafka

Kafka’nın ayrı bir kullanıcı ile çalıştırılması güvenlik açısından önerilir.

Kullanıcıya geçiş yapın:

su kafka

1.2 Kafka paketini indirme ve çıkarma

Kafka paketini indir:

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

Arşivi çıkar:

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

Bu işlem Kafka dosyalarını doğrudan ~/kafka dizinine çıkarır.

1.3 KRaft yapılandırma dosyasını düzenleme

Konfigürasyon dosyasını aç:

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

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

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

Bu ayar Kafka loglarının kalıcı bir dizinde saklanmasını sağlar.

1.4 Cluster ID oluşturma ve storage formatlama

Kafka cluster kimliği oluştur:

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

Storage alanını formatla:

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

1.5 Kafka’yı ilk kez başlatma

Kafka sunucusunu başlat:

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

Sunucunun çalıştığını gördükten sonra CTRL + C ile durdurabilirsiniz.

2. Kafka’yı Systemd Servisi Olarak Çalıştırma

2.1 Servis dosyasını oluşturma

Yeni bir systemd servis dosyası oluşturun:

sudo nano /etc/systemd/system/kafka.service

Dosya içeriği:

[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 etme

Servisi etkinleştirin ve başlatın:

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

3. Kafka Topic Oluşturma ve Mesaj İşleme

3.1 Topic oluşturma

Yeni bir topic oluştur:

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

Topic listesini görüntülemek için:

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

Topic detaylarını görmek için:

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

3.2 Producer ile mesaj gönderme

Producer başlat:

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

Örnek mesajlar:

ilk mesajım ikinci mesaj

3.3 Consumer ile mesaj okuma

Gerçek zamanlı mesajları dinlemek için:

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

Geçmiş mesajlar 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

Sıkça Sorulan Sorular

Kafka ZooKeeper olmadan çalışır mı?

Evet. KRaft mimarisi sayesinde Kafka artık ZooKeeper bağımlılığı olmadan çalışabilir.

Tek sunucuda Kafka kurulabilir mi?

Geliştirme ve test ortamlarında tek sunucu kullanılabilir. Ancak production ortamlarında en az 3 node önerilir.

Kafka mesajları neden tekrar okunabilir?

Kafka mesajları disk tabanlı log yapısında sakladığı için geçmiş mesajlar tekrar okunabilir.

Partition neden önemlidir?

Partition yapısı paralel veri işleme ve performans artışı sağlar.

KRaft mı ZooKeeper mı daha iyi?

Kafka 4 sürümü ile ZooKeeper tamamen kaldırılacağı için KRaft kullanılması önerilir.

Sonuç

Bu rehberde Apache Kafka’yı KRaft modu ile Ubuntu ve Debian sunucularında kurmayı, systemd servisi oluşturmayı ve topic tabanlı mesaj üretme ile tüketme işlemlerini öğrendiniz.

Kafka'nın güçlü event streaming mimarisini projelerinizde kullanabilir ve veri akışlarını gerçek zamanlı olarak yönetebilirsiniz.

Rabisu Bulut altyapısında güçlü sunucular ile Kafka projelerinizi hemen hayata geçirebilirsiniz.