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.