Bu adım, yüksek hacimli, gerçek zamanlı veri akışı (stream processing) mimarilerinin bel kemiğini oluşturan Apache Kafka mesajlaşma platformunun kurulumunu detaylıca ele almaktadır. Bu rehberde, tek bir sunucuda hem Kafka Broker’ı hem de onun yönetimini üstlenen Zookeeper sürecini Standart Modda kurmayı öğreneceksiniz.
Platformun Rolleri: Kafka ve Zookeeper
Dağıtık sistemlerin temelini oluşturan bu iki platformun görevlerini netleştirelim:
- Kafka (Mesaj Kuyruğu): Yüksek hacimli veri üretim ve tüketimini yöneten, dayanıklı, bölümlendirilmiş bir log sistemi. Veriyi saklar ve üreticiler ile tüketiciler arasında asenkron iletişimi sağlar.
- Zookeeper (Koordinasyon Servisi): Standart Kafka kurulumunda, kümenin yönetimini üstlenen merkezi bir koordinasyon servisidir. Broker’ların durumunu, lider seçimlerini, küme genelindeki konfigürasyonları ve Topic tanımlarını izler ve yönetir.
Kurulum Dosyalarının Hazırlanması
Apache Kafka’nın en son stabil sürümünü (Scala 2.13 ile paketlenmiş) indiriyoruz:
Kurulum dizinini oluşturma ve açma:
mkdir /opt/kafka
cd /opt/kafka
tar -xzf /tmp/kafka_2.13-3.9.1.tgz --strip 1
Veri ve Log dizinlerini oluşturma (Kafka, Zookeeper verileri ve Loglar için)
mkdir /opt/kafka/data
mkdir /opt/kafka/zookeeper_data
sudo chown -R ogg:ogg /opt/kafka
Kafka ve Zookeeper Yapılandırma Ayarları
java versiyonunu güncelleyelim:
java -version
java version "11.0.28" 2025-07-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.28+12-LTS-279)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.28+12-LTS-279, mixed mode)
Java 11 var. Daha yeni versiyonu kuralım:
yum install java-17-openjdk -y
sudo update-alternatives --config java
There are 3 programs which provide 'java'.
Selection Command
-----------------------------------------------
+ 1 /usr/lib/jvm/jdk-11.0.28-oracle-x64/bin/java
* 2 /usr/lib/jvm/jdk-17.0.17-oracle-x64/bin/java
3 java-17-openjdk.x86_64 (/usr/lib/jvm/java-17-openjdk-17.0.17.0.10-1.0.1.el8.x86_64/bin/java)
Enter to keep the current selection[+], or type selection number: 2
java -version
java version "17.0.17" 2025-10-21 LTS
Java(TM) SE Runtime Environment (build 17.0.17+8-LTS-360)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.17+8-LTS-360, mixed mode, sharing)
config dizini altındaki varsayılan dosyaları tek sunuculu kurulumumuz için özelleştireceğiz.
vi /opt/kafka/config/zookeeper.properties
Kritik Değişiklik (Veri Yolu):
# Zookeeper'ın durum verilerini saklayacağı dizin
dataDir=/opt/kafka/zookeeper_data
# clientPort varsayılan olarak 2181'dir.
vi /opt/kafka/config/server.properties
Kritik Ayarlar (Single-Node Broker):
# 1. Broker ID (Kümede benzersiz olmalı, bu ilk broker'ımız)
broker.id=1
# 2. Dinleme Adresi ve Portu
# Sunucunuzun IP adresi (10.10.10.12) ve varsayılan port (9092)
listeners=PLAINTEXT://10.10.10.12:9092
# 3. Log Dizinleri (Mesaj verilerinin fiziksel olarak saklanacağı yer)
log.dirs=/opt/kafka/data
# 4. Zookeeper Bağlantısı (Aynı sunucudaki Zookeeper'a bağlan)
zookeeper.connect=localhost:2181
Zookeeper ve Kafka Süreçlerini Başlatma
Kurulum dosyaları ve konfigürasyonlar hazır. Süreçleri başlatırken önce Zookeeper’ın başlaması gerektiğini unutmayın.
Zookeeper’ı yönetmek için bir servis dosyası (.service) oluşturalım.
vi /etc/systemd/system/zookeeper.service
[Unit]
Description=Apache Zookeeper Service
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple # Değiştirildi
User=ogg
Group=ogg
Environment="JAVA_HOME=/usr/lib/jvm/jdk-17.0.17-oracle-x64"
# -daemon argümanı kaldırıldı
ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start zookeeper
systemctl enable zookeeper
Kafka’ı yönetmek için bir servis dosyası (.service) oluşturalım.
vi /etc/systemd/system/kafka.service
[Unit]
Description=Apache Kafka Service
Requires=zookeeper.service
After=zookeeper.service
[Service]
Type=simple # Değiştirildi
User=ogg
Group=ogg
Environment="JAVA_HOME=/usr/lib/jvm/jdk-17.0.17-oracle-x64"
# -daemon argümanı kaldırıldı
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start kafka
systemctl enable kafka
Kafka ve Zookeeper Testleri
u testler, hem Zookeeper’ın durumunu hem de Kafka’nın mesajları doğru bir şekilde işlediğini gösterecektir.
Zookeeper’ın standart portunda dinleme yapıp yapmadığını kontrol edelim.
netstat -tulnp | grep 2181
Beklenen Çıktı: Çıktıda 2181 portunu dinleyen bir Java süreci (Zookeeper) görmelisiniz.
Aşağıdaki komutu root veya Kafka’yı çalıştıran ogg kullanıcısı ile çalıştırın:
/opt/kafka/bin/kafka-topics.sh --create --topic test_topic --bootstrap-server 10.10.10.12:9092 --partitions 1 --replication-factor 1
Yeni topic’in listelendiğinden emin olalım:
/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server 10.10.10.12:9092
test_topic
Yeni bir terminal açın ve test_topic‘i dinlemeye başlayın:
/opt/kafka/bin/kafka-console-consumer.sh --topic test_topic --bootstrap-server 10.10.10.12:9092
deneme
Başka bir terminal açın ve test_topic‘e mesaj göndermeye başlayın:
/opt/kafka/bin/kafka-console-producer.sh --topic test_topic --broker-list 10.10.10.12:9092
>deneme







Leave a Reply to %s