Apache Kafka, yüksek hacimli gerçek zamanlı veri akışlarını işlemek için kullanılan dağıtık bir mesajlaşma sistemidir. Büyük veri, mikroservis mimarisi, log yönetimi ve gerçek zamanlı analiz gibi alanlarda yaygın şekilde tercih edilir. Bu rehberde, Linux tabanlı bir sistem üzerinde Apache Kafka kurulumunu tüm detaylarıyla anlatıyorum.
Neden Apache Kafka?
MKafka, yüksek performansı, yatayda ölçeklenebilir yapısı ve dayanıklılığı sayesinde modern veri mimarilerinin temel bileşenlerinden biridir. Özellikle aşağıdaki ihtiyaçlar için idealdir:
- Streaming uygulamaları
- Gerçek zamanlı veri işleme
- Event-driven mimariler
- Mikroservisler arası iletişim
- Log toplama
Kafka Kurulumu – Gereksinimler
Kurulum adımlarına geçmeden önce sistem gereksinimlerine göz atalım.
Minimum Sistem Gereksinimleri
- 2 GB RAM (Geliştirme ortamı için)
- 10 GB boş disk alanı
- Linux, macOS veya Windows işletim sistemi
Gerekli Bağımlılıklar
Kafka, Zookeeper’a ihtiyaç duyuyordu ancak Kafka 2.8+ sürümleri ile birlikte KRaft (Kafka Raft) modunu destekler hale geldi. Bu rehberde en güncel yöntem olan KRaft modunda Kafka kurulumu anlatılmaktadır.
✔ Java
Kafka’nın çalışması için bir Java Runtime Environment gereklidir.
Java sürümünü kontrol edin:
java -version
openjdk version "11.0.25" 2024-10-15 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.25.0.9-1.0.1.el7_9) (build 11.0.25+9-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.25.0.9-1.0.1.el7_9) (build 11.0.25+9-LTS, mixed mode, sharing)
Java yoksa OpenJDK kurarak devam edebilirsiniz:
rpm -ivh jdk-11.0.29_linux-x64_bin.rpm
Apache Kafka
Kafka paketini indirmek ve kurmak istediğiniz dizine indirin, taşıyın ve çıkarın:
İndirilen Kafka paketini çıkarın:
tar -xvzf kafka_2.13-3.9.1.tgz
mv kafka_2.13-3.9.1 /opt/kafka
Kafka Dizini ve İzinler
Servisi root olarak çalıştırabilirsin (User=root) ama genellikle Kafka için ayrı bir kullanıcı oluşturmak daha güvenli:
sudo useradd -r -m -s /bin/false kafka
sudo chown -R kafka:kafka /opt/kafka
KRaft Konfigürasyonunu Hazırla
Quickstart’da Kafka normalde Zookeeper kullanır, fakat güncel Kafka sürümleri KRaft modu ile Zookeeper olmadan çalışabilir. Biz KRaft mod kullanıyoruz çünkü daha yeni, daha basit ve tavsiye edilir.
Konfigürasyon dosyasını oluştur:
sudo mkdir -p /opt/kafka/config/kraft
sudo tee /opt/kafka/config/kraft/server.properties > /dev/null <<'EOF'
process.roles=broker,controller
node.id=1
controller.quorum.voters=1@10.10.10.23:19093
listeners=PLAINTEXT://10.10.10.23:9092,CONTROLLER://10.10.10.23:19093
advertised.listeners=PLAINTEXT://10.10.10.23:9092
controller.listener.names=CONTROLLER
inter.broker.listener.name=PLAINTEXT
log.dirs=/opt/kafka/data
num.partitions=1
auto.create.topics.enable=true
EOF
sudo chown kafka:kafka /opt/kafka/config/kraft/server.properties
Log ve Data Dizini Oluşturma
Kafka’nın veri ve log dosyalarını saklayacağı dizinleri ayarlayalım:
mkdir -p /var/lib/kafka/data
mkdir -p /var/log/kafka
chown -R kafka:kafka /var/lib/kafka /var/log/kafka
KRaft Modu için UUID Oluşturma ve Formatlama
UUID oluştur:
sudo -u kafka /opt/kafka/bin/kafka-storage.sh random-uuid
5Ra-ItRiRie0PR6TBBLPwg
Çıkan UUID ile veri dizinini formatla:
sudo -u kafka /opt/kafka/bin/kafka-storage.sh format \
--config /opt/kafka/config/kraft/server.properties \
--cluster-id 5Ra-ItRiRie0PR6TBBLPwg
Kafka 3.9.1’i Systemd Servisi Olarak Çalıştırma
Servis dosyasını /etc/systemd/system/ dizinine ekleyelim:
touch /etc/systemd/system/kafka.service
Sistemdeki tüm Java yollarını listeleyin ve seçim yapın:
alternatives --config java
There are 4 programs which provide 'java'.
Selection Command
-----------------------------------------------
1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-1.el7.x86_64/jre/bin/java)
* 2 /usr/lib/jvm/jdk-25.0.1-oracle-x64/bin/java
3 /usr/lib/jvm/jdk-17.0.12-oracle-x64/bin/java
+ 4 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.25.0.9-1.0.1.el7_9.x86_64/bin/java)
Enter to keep the current selection[+], or type selection number: 4
İçerik olarak aşağıyı ekleyin (Kafka dizinini sisteminizdeki kurulum yoluna göre güncelleyin):
sudo tee /etc/systemd/system/kafka.service > /dev/null <<'EOF'
[Unit]
Description=Apache Kafka (KRaft) - 3.9.1
After=network.target
[Service]
User=kafka
Group=kafka
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk"
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-failure
RestartSec=10
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
Notlar:
ExecStart: Kafka başlatma komutuExecStop: Kafka’yı düzgün şekilde durdurmak için komutRestart=on-failure: Servis hata alırsa yeniden başlatılırRestartSec=10: Yeniden başlatmadan önce 10 saniye bekler
Servisi Etkinleştirme ve Başlatma:
sudo systemctl daemon-reload
sudo systemctl enable kafka
sudo systemctl start kafka
sudo systemctl status kafka
Kafka Topic Oluşturma ve Test Mesajları
Topic Oluşturma:
sudo -u kafka /opt/kafka/bin/kafka-topics.sh --create \
--topic test-topic \
--partitions 1 \
--replication-factor 1 \
--bootstrap-server localhost:9092
Producer ile Mesaj Gönderme:
sudo -u kafka /opt/kafka/bin/kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092
>Merhaba Kafka!
>İlk test mesajım
>Bugün veri akışı denemesi
Consumer ile Mesaj Okuma:
sudo -u kafka /opt/kafka/bin/kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server localhost:9092
Merhaba Kafka!
İlk test mesajım
Bugün veri akışı denemes







%s için bir yanıt yazın