Press ESC to close

APACHE KAFKA INSTALLATIN ON RHEL8

Apache Kafka, dağıtık bir mesajlaşma sistemidir ve veri akışı işlemlerinde yaygın olarak kullanılır. ZooKeeper, Kafka’nın node’ları arasında senkronizasyon sağlayan ve Kafka’nın doğru çalışması için gereken koordinasyon hizmetini sunan bir bileşendir. Bu rehberde, RHEL 8 üzerinde Apache Kafka ve ZooKeeper’ın kurulumu detaylarıyla anlatılmıştır.

Ön Gereksinimler

•RHEL 8 üzerinde root veya sudo yetkisine sahip bir kullanıcı.

•OpenJDK 11 veya üstü kurulu olmalıdır. (Kafka, Java ortamına ihtiyaç duyar)

1. Java Kurulumu

Kafka, Java ortamına ihtiyaç duyduğundan, öncelikle Java kurulumunu yapalım.

# dnf install java-11-openjdk

# java -version
openjdk version "11.0.25" 2024-10-15 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.25.0.9-1) (build 11.0.25+9-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.25.0.9-1) (build 11.0.25+9-LTS, mixed mode, sharing)

2. ZooKeeper Kurulumu

Kafka’nın çalışması için ZooKeeper gereklidir, bu yüzden öncelikle ZooKeeper’ı kurmamız gerekiyor.

Adım 1: ZooKeeper’ı İndirin

Apache’nin resmi web sitesinden en güncel ZooKeeper sürümünü indirebilirsiniz veya aşağıdaki komutla direkt indirebilirsiniz: zookeper için versiyonlar ve download sayfası; https://zookeeper.apache.org/releases.html

# wget https://dlcdn.apache.org/zookeeper/zookeeper-3.7.2/apache-zookeeper-3.7.2-bin.tar.gz
--2024-10-30 14:59:10--  https://dlcdn.apache.org/zookeeper/zookeeper-3.7.2/apache-zookeeper-3.7.2-bin.tar.gz
Resolving dlcdn.apache.org (dlcdn.apache.org)... 151.101.2.132, 2a04:4e42::644
Connecting to dlcdn.apache.org (dlcdn.apache.org)|151.101.2.132|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14198607 (14M) [application/x-gzip]
Saving to: ‘apache-zookeeper-3.7.2-bin.tar.gz’

apache-zookeeper-3.7.2-bin.tar. 100%[======================================================>]  13.54M  --.-KB/s    in 0.03s

2024-10-30 14:59:11 (471 MB/s) - ‘apache-zookeeper-3.7.2-bin.tar.gz’ saved [14198607/14198607]

Adım 2: ZooKeeper’ı Çıkartın ve Taşıyın

ZooKeeper arşivini çıkartın ve uygun bir dizine taşıyın (örneğin, /opt dizinine):

# tar -xvf apache-zookeeper-3.7.2-bin.tar.gz
# mv apache-zookeeper-3.7.2-bin /opt/zookeeper

Adım 3: ZooKeeper Config Dosyasını Oluşturun

ZooKeeper için konfigürasyon dosyasını oluşturun:

# mkdir /opt/zookeeper/data

# vi /opt/zookeeper/conf/zoo.cfg

zoo.cfg içeriği

tickTime=2000
dataDir=/opt/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2

tickTime: ZooKeeper’ın durumları kontrol etme sıklığını belirler.

dataDir: ZooKeeper’ın veri saklama dizinidir.

clientPort: ZooKeeper’ın istemci bağlantıları için kullandığı porttur (varsayılan olarak 2181).

Adım 4: ZooKeeper’ı Başlatın

Aşağıdaki komutla ZooKeeper’ı başlatabilirsiniz: Servis olarak zookeper tanımlanabilir veya doğrudan çalıştırıılabilir

# /opt/zookeeper/bin/zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

/opt/zookeeper/bin altında zkServer.sh ile zookper çalıştırılı stop ile durdurulur ve status ile durumu kontrol edilir. Durumunu kontrol edelim;

# /opt/zookeeper/bin/zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: standalone


# /opt/zookeeper/bin/zkServer.sh stop
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED

Zookper ı servis olarak tanımlayalım servis olarak tanımlamak için aşağıdaki dosyayı oluşturmalıyız

/usr/lib/systemd/system/zookeeper.service

[Unit]
Description=Apache ZooKeeper Centralized Service
Requires=network.target
After=network.target

[Service]
Type=forking
Restart=always
RestartSec=0s
ExecStart=/opt/zookeeper/bin/zkServer.sh start
ExecStop=/opt/zookeeper/bin/zkServer.sh stop
ExecReload=/opt/zookeeper/bin/zkServer.sh restart

[Install]
WantedBy=multi-user.target

Şimdi servisi tanımlayıp start edelim

# systemctl daemon-reload

# systemctl enable zookeeper.service
Created symlink /etc/systemd/system/multi-user.target.wants/zookeeper.service → /usr/lib/systemd/system/zookeeper.service.

# systemctl start zookeeper.service

# systemctl status zookeeper.service
● zookeeper.service - Apache ZooKeeper Centralized Service
   Loaded: loaded (/usr/lib/systemd/system/zookeeper.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2024-10-30 15:39:24 UTC; 6s ago
  Process: 16302 ExecStart=/opt/zookeeper/bin/zkServer.sh start (code=exited, status=0/SUCCESS)
 Main PID: 16318 (java)
    Tasks: 37 (limit: 22988)
   Memory: 51.1M
   CGroup: /system.slice/zookeeper.service
           └─16318 java -Dzookeeper.log.dir=/opt/zookeeper/bin/../logs -Dzookeeper.log.file=zookeeper--server-kafka01.log -Dzo>

Oct 30 15:39:23 kafka01 systemd[1]: Starting Apache ZooKeeper Centralized Service...
Oct 30 15:39:23 kafka01 zkServer.sh[16302]: /usr/bin/java
Oct 30 15:39:23 kafka01 zkServer.sh[16302]: ZooKeeper JMX enabled by default
Oct 30 15:39:23 kafka01 zkServer.sh[16302]: Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Oct 30 15:39:24 kafka01 zkServer.sh[16302]: Starting zookeeper ... STARTED
Oct 30 15:39:24 kafka01 systemd[1]: Started Apache ZooKeeper Centralized Service.

zookeeper servis olarak açıldı çalışıyor. Artık kafka kurulumuna geçebiliriz.

3. Apache Kafka Kurulumu

ZooKeeper kurulduktan sonra Kafka’yı kurabiliriz.

Adım 1: Kafka’yı İndirin

Kafka’nın son sürümünü Apache web sitesinden indirebilir veya aşağıdaki komutu kullanabilirsiniz: https://kafka.apache.org/downloads

wget https://downloads.apache.org/kafka/3.8.1/kafka_2.12-3.8.1.tgz

Adım 2: Kafka’yı Çıkartın ve Taşıyın

Arşivi çıkartın ve Kafka’yı uygun bir dizine taşıyın (örneğin, /opt dizinine):

# tar -xvf kafka_2.12-3.8.1.tgz
# mv kafka_2.12-3.8.1 /opt/kafka

Adım 3: Kafka Config Dosyasını Düzenleyin

Kafka’nın ayarlarını server.properties dosyasından yapabilirsiniz: /opt/kafka/config/server.properties bu dosyadan aşağıdakileri düzenlemeliyiz;

broker.id: Her Kafka sunucusuna benzersiz bir kimlik verin (örneğin, broker.id=0).

listeners: Kafka’nın hangi IP adresi ve porttan dinleyeceğini belirler (varsayılan olarak listeners=PLAINTEXT://:9092).

zookeeper.connect: Kafka’nın ZooKeeper ile bağlantı kurmasını sağlar. ZooKeeper’ı aynı sunucuda çalıştırıyorsanız localhost:2181 olarak ayarlayabilirsiniz.

broker.id=0
listeners=PLAINTEXT://:9092
log.dirs=/opt/kafka/logs
zookeeper.connect=localhost:2181

Kafkayı başlatmak ve durdurmak için

# /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties

# /opt/kafka/bin/kafka-server-stop.sh

zookeeper ın çalıştığını doğrulamak için aşağıdaki komuttan imok mesajı almalıyız

# echo "ruok" | nc localhost 2181
imok

Kafka Konusu Oluşturma ve Mesaj Gönderme

Kafka’nın çalıştığını doğrulamak için bir topic oluşturup bir mesaj gönderelim.

1. Konu Oluşturma

# /opt/kafka/bin/kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
Created topic test-topic.

2. Mesaj Gönderme

Bir üretici (producer) başlatarak mesaj gönderin:

# /opt/kafka/bin/kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092
>selam

Kafka içinde aynen zookeper da olduğu gibi bir servis olarak tanımlayarak çalıştıralım;

# vi /etc/systemd/system/kafka.service

[Unit]
Description=Apache Kafka
After=zookeeper.service

[Service]
Type=simple
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Servisi yükleyip enable edip çalıştıralım

# systemctl daemon-reload

# systemctl enable kafka.service
Created symlink /etc/systemd/system/multi-user.target.wants/kafka.service → /etc/systemd/system/kafka.service.

# systemctl start kafka.service

KAFDROP

Kafka cluster’ını görselleştirmek ve yönetmek için kullanılan bir web tabanlı araçtır. Kafka konularını, partition durumlarını, mesajları ve tüketici gruplarını izlemeye yarar. Özellikle Kafka cluster’larını daha iyi izlemek ve yönetmek isteyenler için pratik bir araçtır. Kafdrop, geliştiricilere ve yöneticilere Kafka üzerindeki işlemleri daha kullanıcı dostu bir arayüz üzerinden kontrol etme imkânı sağlar.

Kafdrop GitHub sayfasından indirebiliriz aşağıda hızlıca jar dosyasını çalıştırıp kafka topic ve mesajlarını arayüz üzerinden görelim;

 

# wget https://github.com/obsidiandynamics/kafdrop/releases/download/3.28.0/kafdrop-3.28.0.jar

# nohup java -jar kafdrop-3.28.0.jar --kafka.brokerCOnnect=localhost:9092 &

Çalıştıktan sonra arayüze bağlanıp duruma bakalım 900o posrtundan servis veriyor kafka sunucusunun 9000 portuna http ile bağlandığımızda

test topic içerisine mesajlar yazmıştık ona bakalım

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir