Apache Kafka Kurulumu – Ubuntu 20.04 Üzerinde Kafka Sunucusu Kurulum Rehberi
Bu rehberde Apache Kafka 2.8.2’yi Ubuntu 20.04 üzerinde kurmayı, ZooKeeper ile yapılandırmayı ve Producer–Consumer testleriyle kurulum doğrulamayı öğreneceksiniz. Ayrıca Kafka'yı systemd servisi olarak arka planda çalıştıracak ve güvenlik ayarlarını yapılandıracaksınız.
Bu Rehberde Ne Öğreneceksiniz
Bu dokümanda aşağıdaki işlemleri adım adım gerçekleştireceksiniz:
- Kafka için özel bir kullanıcı hesabı oluşturma
- Apache Kafka 2.8.2 sürümünü indirip kurma
- ZooKeeper ve Kafka systemd servislerini oluşturma
- Topic oluşturma, mesaj gönderme ve mesaj okuma
- Kafka kullanıcı hesabını daha güvenli hale getirme
Apache Kafka Nedir?
Apache Kafka, yüksek hacimli veri akışlarını gerçek zamanlı olarak işlemek için kullanılan dağıtık bir event streaming platformudur.
Kafka genellikle aşağıdaki senaryolarda kullanılır:
- Gerçek zamanlı veri akışı
- Mikroservisler arası mesajlaşma
- Log toplama ve analiz
- Event tabanlı mimariler
Kafka 2.x sürümleri metadata yönetimi için ZooKeeper bağımlılığına sahiptir. Bu nedenle bu rehberde Kafka ile birlikte ZooKeeper kurulumu da yapılacaktır.
1. Kafka Kullanıcısı Oluşturma
Kafka’yı ayrı bir kullanıcı ile çalıştırmak güvenlik açısından önerilir.
sudo adduser kafka
Kafka kullanıcısına sudo yetkisi verin:
sudo adduser kafka sudo
Kafka kullanıcısına geçiş yapın:
su -l kafka
2. Kafka 2.8.2 Sürümünü İndirme
Öncelikle indirme dizini oluşturun:
mkdir ~/Downloads
Kafka paketini indirin:
curl "https://downloads.apache.org/kafka/2.8.2/kafka_2.13-2.8.2.tgz" -o ~/Downloads/kafka.tgz
Kafka için ana dizin oluşturun:
mkdir ~/kafka && cd ~/kafka
Arşivi çıkarın:
tar -xvzf ~/Downloads/kafka.tgz --strip 1
Bu işlem Kafka dosyalarını doğrudan ~/kafka dizinine çıkarır.
3. Kafka Yapılandırması (server.properties)
Kafka yapılandırma dosyasını açın:
nano ~/kafka/config/server.properties
Topic silme özelliğini aktif edin:
delete.topic.enable=true
Log dizinini düzenleyin:
log.dirs=/home/kafka/logs
Bu ayar Kafka loglarının kalıcı bir dizinde saklanmasını sağlar.
4. ZooKeeper ve Kafka systemd Servisleri
Kafka 2.8.2 sürümü ZooKeeper bağımlı çalışır. Bu nedenle iki servis oluşturacağız.
Kafka kullanıcısından çıkın:
exit
4.1 ZooKeeper Servisi Oluşturma
sudo nano /etc/systemd/system/zookeeper.service
Servis dosyası içeriği:
[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
User=kafka
ExecStart=/home/kafka/kafka/bin/zookeeper-server-start.sh /home/kafka/kafka/config/zookeeper.properties
ExecStop=/home/kafka/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
4.2 Kafka Servisi Oluşturma
sudo nano /etc/systemd/system/kafka.service
Servis içeriği:
[Unit]
Requires=zookeeper.service
After=zookeeper.service
[Service]
Type=simple
User=kafka
ExecStart=/bin/sh -c '/home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/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
4.3 Servisleri Başlatma
Systemd yapılandırmasını yenileyin:
sudo systemctl daemon-reload
Servisleri başlatın:
sudo systemctl start zookeeper
sudo systemctl start kafka
Kafka servis durumunu kontrol edin:
sudo systemctl status kafka
Sunucu açılışında otomatik başlatmak için:
sudo systemctl enable zookeeper
sudo systemctl enable kafka
5. Kafka Kurulumunu Test Etme (Producer – Consumer)
Kafka kullanıcısına tekrar geçin:
su -l kafka
5.1 Topic Oluşturma
~/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic TutorialTopic
5.2 Producer ile Mesaj Gönderme
echo "Merhaba, Dünya" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TutorialTopic > /dev/null
5.3 Consumer ile Mesaj Okuma
~/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic TutorialTopic --from-beginning
Terminalde aşağıdaki çıktıyı görmelisiniz:
Merhaba, Dünya
6. Kafka Kullanıcısını Güvenli Hale Getirme
Kafka kullanıcısından çıkın:
exit
Kafka kullanıcısının sudo yetkisini kaldırın:
sudo deluser kafka sudo
Kullanıcıyı kilitleyin:
sudo passwd kafka -l
Bu işlem doğrudan kullanıcı girişini engeller ve güvenliği artırır.
Sıkça Sorulan Sorular
Kafka 2.8.2 neden ZooKeeper kullanır?
Kafka 2.x sürümlerinde metadata yönetimi ZooKeeper tarafından yapılır.
Topic silme neden varsayılan olarak kapalıdır?
Kafka veri güvenliğini korumak için topic silme özelliğini manuel etkinleştirmenizi ister.
Kafka hangi portu kullanır?
Kafka broker varsayılan olarak 9092 portunu kullanır.
Consumer geçmiş mesajları nasıl okuyabilir?
--from-beginning parametresi kullanılarak tüm geçmiş mesajlar okunabilir.
Kafka kullanıcı hesabı neden kilitlenir?
Doğrudan giriş engellenerek olası saldırı yüzeyi azaltılır.
Sonuç
Bu rehberde Apache Kafka 2.8.2’yi Ubuntu 20.04 üzerinde kurmayı, ZooKeeper ile yapılandırmayı ve systemd servisleri ile yönetmeyi öğrendiniz. Ayrıca producer–consumer testi yaparak kurulumun doğru çalıştığını doğruladınız.
Apache Kafka’yı yüksek hacimli veri akışlarını yönetmek için Rabisu Bulut sunucularında güvenle kullanabilirsiniz.