Merhabalar,
https://asiyeyigit.com/kafka-serisi-genel-kavramlar/
https://asiyeyigit.com/kafka-cluster/
Yukarda adreslerini yazdığım iki makale sonrası artık Kafka kurulumuna başlayabiliriz. Bu amaç ile ben Oracle Cloud üzerinde üç adet “node” oluşturdum. Test ortamı olduğu için, Kafka Broker ve Controller “node”larını ayırmadım. Malum Oracle Cloud üzerinde çalıştığım için her bir kaynak için para ödüyorum. Test çalışması yaptığım için kaynakları minimum düzeyde tuttum. Her bir “node” 8GB Memory ve bir adet OCPU’ye sahip.
Her bir “node”u “Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1012-oracle x86_64)” olarak yapılandırdım.
Üç sisteme’de MobaXterm ile bağlandım.

Node’larımızın “private” IP’leri de aşağıdaki gibi.
ubuntu@instance-20250309-1117:~$ ip a | grep “inet 10”
inet 10.0.0.25/24 metric 100 brd 10.0.0.255 scope global ens3
ubuntu@instance-20250309-1117:~$
ubuntu@instance-20250309-1132:~$ ip a | grep “inet 10”
inet 10.0.0.239/24 metric 100 brd 10.0.0.255 scope global ens3
ubuntu@instance-20250309-1132:~$
ubuntu@instance-20250309-1137:~$ ip a | grep “inet 10”
inet 10.0.0.33/24 metric 100 brd 10.0.0.255 scope global ens3
ubuntu@instance-20250309-1137:~$
Kafka Broker ve Controller’ı içerecek şekilde üç “node” yapılandırmamız aşağıdaki gibidir.

Kafka’nın KRaft modunda çalışabilmesi için “node”ların birbirlerini görebiliyor olması gerekiyor.
Şimdi Private IP’ler üzerinden iletişimi test edelim. Ubuntu’yu minimal yüklediğim için, “ping” komutu yok. Her üç “node” üzerine, “ping” komutunu yükledim.
ubuntu@instance-20250309-1132:~$ sudo apt update
Get:1 http://eu-frankfurt-1-ad-2.clouds.archive.ubuntu.com/ubuntu jammy InRelease [270 kB]
Get:2 http://eu-frankfurt-1-ad-2.clouds.archive.ubuntu.com/ubuntu jammy-updates InRelease [128 kB]
Get:3 http://eu-frankfurt-1-ad-2.clouds.archive.ubuntu.com/ubuntu jammy-backports InRelease [127 kB]
Hit:4 http://security.ubuntu.com/ubuntu jammy-security InRelease
Get:5 http://eu-frankfurt-1-ad-2.clouds.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [2378 kB]
Get:6 http://eu-frankfurt-1-ad-2.clouds.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [1193 kB]
Fetched 4096 kB in 1s (4590 kB/s)
Reading package lists… Done
Building dependency tree… Done
Reading state information… Done
75 packages can be upgraded. Run ‘apt list –upgradable’ to see them.
ubuntu@instance-20250309-1132:~$ sudo apt install -y iputils-ping
Reading package lists… Done
Building dependency tree… Done
Reading state information… Done
The following NEW packages will be installed:
iputils-ping
0 upgraded, 1 newly installed, 0 to remove and 75 not upgraded.
Need to get 42.9 kB of archives.
After this operation, 116 kB of additional disk space will be used.
Get:1 http://eu-frankfurt-1-ad-2.clouds.archive.ubuntu.com/ubuntu jammy/main amd64 iputils-ping amd64 3:20211215-1 [42.9 kB]
Fetched 42.9 kB in 0s (117 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package iputils-ping.
(Reading database … 82926 files and directories currently installed.)
Preparing to unpack …/iputils-ping_3%3a20211215-1_amd64.deb …
Unpacking iputils-ping (3:20211215-1) …
Setting up iputils-ping (3:20211215-1) …
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 78.)
debconf: falling back to frontend: Readline
Scanning processes…
Scanning linux images…
Running kernel seems to be up-to-date.
No services need to be restarted.
No containers need to be restarted.
No user sessions are running outdated binaries.
No VM guests are running outdated hypervisor (qemu) binaries on this host.
ubuntu@instance-20250309-1132:~$
Testimiz şu olacak:
Node 1 (10.0.0.25) → Node 2 ve Node 3’e ping atabilecek mi?
Node 2 (10.0.0.239) → Node 1 ve Node 3’e ping atabilecek mi?
Node 3 (10.0.0.33) → Node 1 ve Node 2’ye ping atabilecek mi?
“Node 1”:
ubuntu@instance-20250309-1117:~$ ip a | grep “inet 10”
inet 10.0.0.25/24 metric 100 brd 10.0.0.255 scope global ens3
ubuntu@instance-20250309-1117:~$ ping -c 4 10.0.0.239
ping -c 4 10.0.0.33
PING 10.0.0.239 (10.0.0.239) 56(84) bytes of data.
64 bytes from 10.0.0.239: icmp_seq=1 ttl=64 time=0.460 ms
64 bytes from 10.0.0.239: icmp_seq=2 ttl=64 time=0.328 ms
64 bytes from 10.0.0.239: icmp_seq=3 ttl=64 time=0.311 ms
64 bytes from 10.0.0.239: icmp_seq=4 ttl=64 time=0.321 ms
— 10.0.0.239 ping statistics —
4 packets transmitted, 4 received, 0% packet loss, time 3076ms
rtt min/avg/max/mdev = 0.311/0.355/0.460/0.060 ms
PING 10.0.0.33 (10.0.0.33) 56(84) bytes of data.
64 bytes from 10.0.0.33: icmp_seq=1 ttl=64 time=0.451 ms
64 bytes from 10.0.0.33: icmp_seq=2 ttl=64 time=0.308 ms
64 bytes from 10.0.0.33: icmp_seq=3 ttl=64 time=0.340 ms
64 bytes from 10.0.0.33: icmp_seq=4 ttl=64 time=0.325 ms
— 10.0.0.33 ping statistics —
4 packets transmitted, 4 received, 0% packet loss, time 3070ms
rtt min/avg/max/mdev = 0.308/0.356/0.451/0.056 ms
ubuntu@instance-20250309-1117:~$
“Node 2”:
ubuntu@instance-20250309-1132:~$ ip a | grep “inet 10”
inet 10.0.0.239/24 metric 100 brd 10.0.0.255 scope global ens3
ubuntu@instance-20250309-1132:~$ ping -c 4 10.0.0.25
ping -c 4 10.0.0.33
PING 10.0.0.25 (10.0.0.25) 56(84) bytes of data.
64 bytes from 10.0.0.25: icmp_seq=1 ttl=64 time=0.345 ms
64 bytes from 10.0.0.25: icmp_seq=2 ttl=64 time=0.411 ms
64 bytes from 10.0.0.25: icmp_seq=3 ttl=64 time=0.381 ms
64 bytes from 10.0.0.25: icmp_seq=4 ttl=64 time=0.322 ms
— 10.0.0.25 ping statistics —
4 packets transmitted, 4 received, 0% packet loss, time 3059ms
rtt min/avg/max/mdev = 0.322/0.364/0.411/0.034 ms
PING 10.0.0.33 (10.0.0.33) 56(84) bytes of data.
64 bytes from 10.0.0.33: icmp_seq=1 ttl=64 time=0.494 ms
64 bytes from 10.0.0.33: icmp_seq=2 ttl=64 time=0.254 ms
64 bytes from 10.0.0.33: icmp_seq=3 ttl=64 time=0.226 ms
64 bytes from 10.0.0.33: icmp_seq=4 ttl=64 time=0.256 ms
— 10.0.0.33 ping statistics —
4 packets transmitted, 4 received, 0% packet loss, time 3070ms
rtt min/avg/max/mdev = 0.226/0.307/0.494/0.108 ms
ubuntu@instance-20250309-1132:~$
“Node 3”:
ubuntu@instance-20250309-1137:~$ ip a | grep “inet 10”
inet 10.0.0.33/24 metric 100 brd 10.0.0.255 scope global ens3
ubuntu@instance-20250309-1137:~$ ping -c 4 10.0.0.25
ping -c 4 10.0.0.239
PING 10.0.0.25 (10.0.0.25) 56(84) bytes of data.
64 bytes from 10.0.0.25: icmp_seq=1 ttl=64 time=0.546 ms
64 bytes from 10.0.0.25: icmp_seq=2 ttl=64 time=0.345 ms
64 bytes from 10.0.0.25: icmp_seq=3 ttl=64 time=0.329 ms
64 bytes from 10.0.0.25: icmp_seq=4 ttl=64 time=0.342 ms
— 10.0.0.25 ping statistics —
4 packets transmitted, 4 received, 0% packet loss, time 3051ms
rtt min/avg/max/mdev = 0.329/0.390/0.546/0.089 ms
PING 10.0.0.239 (10.0.0.239) 56(84) bytes of data.
64 bytes from 10.0.0.239: icmp_seq=1 ttl=64 time=0.317 ms
64 bytes from 10.0.0.239: icmp_seq=2 ttl=64 time=0.404 ms
64 bytes from 10.0.0.239: icmp_seq=3 ttl=64 time=0.471 ms
64 bytes from 10.0.0.239: icmp_seq=4 ttl=64 time=0.499 ms
— 10.0.0.239 ping statistics —
4 packets transmitted, 4 received, 0% packet loss, time 3070ms
rtt min/avg/max/mdev = 0.317/0.422/0.499/0.070 ms
ubuntu@instance-20250309-1137:~$
Özet olarak neler yaptık?
Kafka’nın KRaft modunda sağlıklı çalışabilmesi için tüm node’ların birbirleriyle Private IP üzerinden iletişim kurabilmesi gereklidir. Bu nedenle, her node’dan diğer iki “node”a “ping” testi yaparak ağ bağlantısını doğruladım.
Ubuntu minimal yükleme ile geldiği için ping komutu yoktu. Öncelikle tüm node’lara ping komutunu yükledim:
sudo apt update
sudo apt install -y iputils-ping
Ardından, her bir node’un diğerlerine ulaşabildiğini doğruladım:
Node 1 (10.0.0.25) → Node 2 (10.0.0.239) ve Node 3 (10.0.0.33) başarılı
Node 2 (10.0.0.239) → Node 1 (10.0.0.25) ve Node 3 (10.0.0.33) başarılı
Node 3 (10.0.0.33) → Node 1 (10.0.0.25) ve Node 2 (10.0.0.239) başarılı
Tüm node’lar birbirine Private IP üzerinden ulaşabiliyor. Ağ (Network) bağlantısı doğrulandı, Kafka’yı indirip kurmaya geçebiliriz.
Her üç “node” üzerinde,
“cd /opt
sudo wget https://downloads.apache.org/kafka/3.9.0/kafka_2.13-3.9.0.tgz” çalıştıracağız.
“Node 1”
ubuntu@instance-20250309-1117:/opt$ cd /opt
sudo wget https://downloads.apache.org/kafka/3.9.0/kafka_2.13-3.9.0.tgz
–2025-03-09 09:13:42– https://downloads.apache.org/kafka/3.9.0/kafka_2.13-3.9.0.tgz
Resolving downloads.apache.org (downloads.apache.org)… 135.181.214.104, 88.99.208.237, 2a01:4f9:3a:2c57::2, …
Connecting to downloads.apache.org (downloads.apache.org)|135.181.214.104|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 122037770 (116M) [application/x-gzip]
Saving to: ‘kafka_2.13-3.9.0.tgz’
kafka_2.13-3.9.0.tgz 100%[=============================================================================>] 116.38M 83.4MB/s in 1.4s
2025-03-09 09:13:43 (83.4 MB/s) – ‘kafka_2.13-3.9.0.tgz’ saved [122037770/122037770]
ubuntu@instance-20250309-1117:/opt$
“Node 2”
ubuntu@instance-20250309-1132:~$ cd /opt
sudo wget https://downloads.apache.org/kafka/3.9.0/kafka_2.13-3.9.0.tgz
–2025-03-09 09:16:34– https://downloads.apache.org/kafka/3.9.0/kafka_2.13-3.9.0.tgz
Resolving downloads.apache.org (downloads.apache.org)… 135.181.214.104, 88.99.208.237, 2a01:4f8:10a:39da::2, …
Connecting to downloads.apache.org (downloads.apache.org)|135.181.214.104|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 122037770 (116M) [application/x-gzip]
Saving to: ‘kafka_2.13-3.9.0.tgz’
kafka_2.13-3.9.0.tgz 100%[=============================================================================>] 116.38M 82.0MB/s in 1.4s
2025-03-09 09:16:36 (82.0 MB/s) – ‘kafka_2.13-3.9.0.tgz’ saved [122037770/122037770]
ubuntu@instance-20250309-1132:/opt$
“Node 3”
ubuntu@instance-20250309-1137:~$ cd /opt
sudo wget https://downloads.apache.org/kafka/3.9.0/kafka_2.13-3.9.0.tgz
–2025-03-09 09:17:05– https://downloads.apache.org/kafka/3.9.0/kafka_2.13-3.9.0.tgz
Resolving downloads.apache.org (downloads.apache.org)… 88.99.208.237, 135.181.214.104, 2a01:4f9:3a:2c57::2, …
Connecting to downloads.apache.org (downloads.apache.org)|88.99.208.237|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 122037770 (116M) [application/x-gzip]
Saving to: ‘kafka_2.13-3.9.0.tgz’
kafka_2.13-3.9.0.tgz 100%[=============================================================================>] 116.38M 91.9MB/s in 1.3s
2025-03-09 09:17:06 (91.9 MB/s) – ‘kafka_2.13-3.9.0.tgz’ saved [122037770/122037770]
ubuntu@instance-20250309-1137:/opt$
Şimdi her üç node üzerinde, “sudo tar -xvzf kafka_2.13-3.9.0.tgz
sudo mv kafka_2.13-3.9.0 kafka” komutlarını çalıştıracağız. Bu komutlarla Kafka arşivini açıyoruz ve ilgili dizine taşıyoruz. Bu komutlar sonrası her bir “node” üzerinde, aşağıdaki gibi doğrulama yaptık. Arşiv açılışının çıktısı uzun olduğu için, tek bir “node” üzerinde sadece doğrulama komutlarını ekledim.
“Node 1”
ubuntu@instance-20250309-1117:/opt$ cd /opt/kafka
ubuntu@instance-20250309-1117:/opt/kafka$ ls -lh
total 72K
-rw-r–r– 1 root root 15K Oct 26 03:30 LICENSE
-rw-r–r– 1 root root 28K Oct 26 03:30 NOTICE
drwxr-xr-x 3 root root 4.0K Oct 26 03:32 bin
drwxr-xr-x 3 root root 4.0K Oct 26 03:32 config
drwxr-xr-x 2 root root 12K Mar 9 09:18 libs
drwxr-xr-x 2 root root 4.0K Oct 26 03:32 licenses
drwxr-xr-x 2 root root 4.0K Oct 26 03:32 site-docs
ubuntu@instance-20250309-1117:/opt/kafka$
Şimdi ise, her bir node üzerinde Kafka için gerekli dizinleri oluşturduk.
ubuntu@instance-20250309-1117:/opt/kafka$ sudo mkdir -p /var/lib/kafka
sudo chown -R ubuntu:ubuntu /var/lib/kafka
ubuntu@instance-20250309-1117:/opt/kafka$
Her üç “node”un konfigürasyon dosyalarını düzenleyerek Kafka’nın KRaft modunda çalışmasını sağlayacağız. Kafka’nın konfigürasyon dosyası, /opt/kafka/config/kraft/server.properties.
Her bir node için farklı bir broker.id ve controller.id atamalıyız.
Bunu yapmak için her “node”un server.properties dosyasını düzenleyelim. Aşağıdaki komutları ve konfigürasyon satırlarını kullanmamız gerekiyor.
sudo nano /opt/kafka/config/kraft/server.properties
Node 1 (10.0.0.25)
node.id=1
controller.quorum.voters=1@10.0.0.25:9093,2@10.0.0.239:9093,3@10.0.0.33:9093
log.dirs=/var/lib/kafka
advertised.listeners=PLAINTEXT://10.0.0.25:9092
Node 2 (10.0.0.239)
node.id=2
controller.quorum.voters=1@10.0.0.25:9093,2@10.0.0.239:9093,3@10.0.0.33:9093
log.dirs=/var/lib/kafka
advertised.listeners=PLAINTEXT://10.0.0.239:9092
Node 3 (10.0.0.33)
node.id=3
controller.quorum.voters=1@10.0.0.25:9093,2@10.0.0.239:9093,3@10.0.0.33:9093
log.dirs=/var/lib/kafka
advertised.listeners=PLAINTEXT://10.0.0.33:9092
Ubuntu 22.04.5 LTS’i minimal kurduğum için “nano” editörü yoktu. Aşağıdaki komutlarla yükledim.
sudo apt update
sudo apt install -y nano

Şimdiye kadar neler yaptık, özetleyelim.
1. Oracle Cloud Üzerinde Üç Node Kurduk
Her biri Ubuntu 22.04.5 LTS işletim sistemine sahip.
Node’lar minimal kurulumla geldiği için bazı eksik paketleri yükledik.
2. Node’ların Private IP Adreslerini Belirledik
3. Node’ların Birbirlerini Görüp Görmediğini Test Ettik
Ubuntu minimal geldiği için ping komutu eksikti, yükledik.
Her node’un diğer node’lara ping atabildiğini doğruladık.
4. Apache Kafka’yı İndirdik ve Kurduk
Kafka 3.9.0 sürümünü her üç node’a da yükledik.
Arşivi açtık ve Kafka için gerekli dizinleri (/var/lib/kafka) oluşturduk.
5. server.properties Konfigürasyonlarını Yaptık
Her node için node.id ve controller.quorum.voters değerlerini düzenledik. Private IP’leri kullanarak advertised.listeners değerlerini güncelledik. Kafka loglarının /var/lib/kafka dizinine yazılmasını sağladık.
Kafka’yı KRaft modunda çalıştırmak için Cluster ID oluşturmamız gerekiyor.
Bunun için şu adımları takip edeceğiz:
Node 1’de Cluster ID oluşturacağız. Oluşturduğumuz Cluster ID’yi tüm node’lara atayacağız.
Kafka’yı KRaft modunda başlatacağız. Cluster’ın çalıştığını test edeceğiz.
Ama önce sistemde yüklü bir java yok. Üç “node”umuza da Java yükleyeceğiz.
sudo apt update
sudo apt install -y openjdk-17-jdk
Bu komutlar sonrasında tüm “node”larda aşağıdaki java versiyonunu görüyoruz.
ubuntu@instance-20250309-1117:~$
ubuntu@instance-20250309-1117:~$ java -version
openjdk version “17.0.14” 2025-01-21
OpenJDK Runtime Environment (build 17.0.14+7-Ubuntu-122.04.1)
OpenJDK 64-Bit Server VM (build 17.0.14+7-Ubuntu-122.04.1, mixed mode, sharing)
ubuntu@instance-20250309-1117:~$
Node 1’de Cluster ID oluşturacağız.
ubuntu@instance-20250309-1117:~$ /opt/kafka/bin/kafka-storage.sh random-uuid
iicEDD1jS2izO8KSSynYAg
ubuntu@instance-20250309-1117:~$
Oluşturduğumuz Cluster ID’yi tüm node’lara atayacağız.
ubuntu@instance-20250309-1117:~$ /opt/kafka/bin/kafka-storage.sh format -t iicEDD1jS2izO8KSSynYAg -c /opt/kafka/config/kraft/server.properties
Formatting metadata directory /tmp/kraft-combined-logs with metadata.version 3.9-IV0.
ubuntu@instance-20250309-1117:~$
ubuntu@instance-20250309-1132:~$ /opt/kafka/bin/kafka-storage.sh format -t iicEDD1jS2izO8KSSynYAg -c /opt/kafka/config/kraft/server.properties
Formatting metadata directory /var/lib/kafka with metadata.version 3.9-IV0.
ubuntu@instance-20250309-1132:~$
ubuntu@instance-20250309-1137:~$ /opt/kafka/bin/kafka-storage.sh format -t iicEDD1jS2izO8KSSynYAg -c /opt/kafka/config/kraft/server.properties
Formatting metadata directory /var/lib/kafka with metadata.version 3.9-IV0.
ubuntu@instance-20250309-1137:~$
Şimdi her üç node’da Kafka’yı KRaft modunda başlatacağız. Başlatırken “log” dizinle ilgili bir hata aldım. Önce onu düzelteceğim. Her üç node üzerinde aşağıda olan komutları çalıştırdım.
sudo mkdir -p /opt/kafka/logs
sudo chown -R ubuntu:ubuntu /opt/kafka/logs
/opt/kafka/config/kraft/server.properties dosyasına, kafka.logs.dir=/var/lib/kafka/logs ekleyeceğim.
Konfigürasyon değişikliklerini yaptıktan sonra, her “node” üzerinde Kafka’yı başlattım.
“Node 1”
ubuntu@instance-20250309-1117:~$ /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/kraft/server.properties
ubuntu@instance-20250309-1117:~$
“Node 2”
ubuntu@instance-20250309-1132:~$ /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/kraft/server.properties
ubuntu@instance-20250309-1132:~$
“Node 3”
ubuntu@instance-20250309-1137:~$ /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/kraft/server.properties
ubuntu@instance-20250309-1137:~$
Kafka gerçekten çalışıyor mu? Kontrol edelim.
“Node 1”
ubuntu@instance-20250309-1117:~$ ss -tulnp | grep java
tcp LISTEN 0 50 *:46493 *:* users:((“java”,pid=2056,fd=127))
tcp LISTEN 0 50 *:9093 *:* users:((“java”,pid=2056,fd=146))
tcp LISTEN 0 50 *:9092 *:* users:((“java”,pid=2056,fd=174))
ubuntu@instance-20250309-1117:~$
ubuntu@instance-20250309-1117:~$ nc -zv 10.0.0.239 9093
nc -zv 10.0.0.33 9093
Connection to 10.0.0.239 9093 port [tcp/*] succeeded!
Connection to 10.0.0.33 9093 port [tcp/*] succeeded!
ubuntu@instance-20250309-1117:~$
“Node 2”
ubuntu@instance-20250309-1132:~$ ss -tulnp | grep java
tcp LISTEN 0 50 *:38697 *:* users:((“java”,pid=2068,fd=127))
tcp LISTEN 0 50 *:9092 *:* users:((“java”,pid=2068,fd=178))
tcp LISTEN 0 50 *:9093 *:* users:((“java”,pid=2068,fd=146))
ubuntu@instance-20250309-1132:~$
ubuntu@instance-20250309-1132:~$ nc -zv 10.0.0.25 9093
nc -zv 10.0.0.33 9093
Connection to 10.0.0.25 9093 port [tcp/*] succeeded!
Connection to 10.0.0.33 9093 port [tcp/*] succeeded!
ubuntu@instance-20250309-1132:~$
“Node 3”
ubuntu@instance-20250309-1137:~$ ss -tulnp | grep java
tcp LISTEN 0 50 *:36443 *:* users:((“java”,pid=2043,fd=127))
tcp LISTEN 0 50 *:9093 *:* users:((“java”,pid=2043,fd=148))
tcp LISTEN 0 50 *:9092 *:* users:((“java”,pid=2043,fd=175))
ubuntu@instance-20250309-1137:~$
ubuntu@instance-20250309-1137:~$ nc -zv 10.0.0.25 9093
nc -zv 10.0.0.239 9093
Connection to 10.0.0.25 9093 port [tcp/*] succeeded!
Connection to 10.0.0.239 9093 port [tcp/*] succeeded!
ubuntu@instance-20250309-1137:~$
Yukardaki komut çıktılarına göre Kafka Cluster’ı başarıyla çalışıyor. Üç node’da da Kafka düzgün çalışıyor ve node’lar birbirini görebiliyor. Node’lar birbirleriyle TCP bağlantısını başarılı şekilde kurabiliyor. Yani Kafka Broker’lar ve Controller’lar birbirleriyle haberleşebiliyor. KRaft mode’da quorum (çoğunluk) oluşturabiliyorlar.
Oracle Cloud üzerinden kullandığım Virtual Cloud Network üzerinde, Security List’i seçerek 9092 ve 9093 port’ları için ingress rule tanımladım. Ubuntu üzerinde varsayılan olarak Iptables’ın port bağlantılarını engellediğini gördüm. Onları da düzeltmem gerekti. Bunları belirtiyorum ki, benim gibi kafayı yemeyesiniz.
Aşağıda olan komutları çalıştırdım.
sudo iptables -L -n -v
sudo iptables -I INPUT -p tcp –dport 9092 -j ACCEPT
sudo iptables -I INPUT -p tcp –dport 9093 -j ACCEPT
sudo apt update && sudo apt install -y iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload
Bu yazıda, Apache Kafka’yı KRaft modunda çalıştırmak için üç node’luk bir cluster ortamı oluşturduk, gerekli konfigürasyonları yaptık ve karşılaştığımız ağ, güvenlik ve dosya izinleri problemlerini çözerek Kafka’nın başarılı bir şekilde çalışmasını sağladık. Oracle Cloud üzerinde gerçekleştirdiğimiz bu kurulum sürecinde, “node”ların birbirini görmesini sağlamak, cluster ID oluşturmak ve Kafka’nın başlatılmasını test etmek gibi kritik adımları tamamladık. Böylece Kafka’nın KRaft modunda nasıl çalıştığını ve olası hatalarla nasıl başa çıkabileceğimizi öğrenmiş olduk. Bir sonraki bölümde, Kafka’nın gerçekten çalıştığını doğrulamak adına “cluster” üzerinde ilk mesajlarımızı gönderecek, “topic”ler oluşturacak ve tüketicilerle mesaj alışverişi yaparak Kafka’nın nasıl işlediğini detaylıca inceleyeceğiz.
Sarav Asiye Yiğit – 9 Mart 2025






Yorumunuzu Bırakın