Geliştirme ortamı için basitçe Kafka kurulumu

Ali Orhun Akkirman - Jul 7 '22 - - Dev Community

Apache Kafka, belirli verilerin bir sistemden toplanıp diğer sistemlere kararlı bir şekilde transferini sağlayan dağıtık bir veri akış uygulamasıdır. Özellikle büyük veri sistemlerinde verilerin düzenlileşmesi ve transflerinin yönetilmesi için sıklıkla kullanıldığını görmekteyiz.

Mimari

Bu dökümanda basitçe bir Kafka kurulumu yapacağız. Kafka kurulumunun yanında çeşitli sistemlerle birlikte kullanılan ve dağıtık yapılar için koordinasyon hizmetini sağlayan ZooKeeper'ı da kuracağız.

Bu iki sistem için 2181 portunda yayın yapan ZooKeeper ve 9092 portundan yayın yapan Kafka isimli iki docker imajını ayağa kaldıracağız. Bunlar için docker ve docker-compose kurulu olduğunu varsayarak ilerleyeceğiz.

Docker imajlarını aşağıdaki iki adresten alacak şekilde kullanacağız.

Servislerin ayağa kaldırılması

Docker üzerinde sistemin ayağa kaldırılması için bir klasöre geçip aşağıdaki dosyayı docker-compose.yml olarak kaydetmeniz gerekmektedir.

version: '3'

services:
  zookeeper:
    image: wurstmeister/zookeeper
    container_name: zookeeper
    ports:
      - "2181:2181"
  kafka:
    image: wurstmeister/kafka
    container_name: kafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: localhost
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
Enter fullscreen mode Exit fullscreen mode

Daha sonrasında kaydettiğiniz dosyanın bulunduğu klasörde aşağıdaki komutu kullanabilirsiniz.

docker-compose -f docker-compose.yml up -d
Enter fullscreen mode Exit fullscreen mode

Çıktı olarak aşağıdaki gibi bir çıktı görmeniz gerekmektedir:

Creating network "kafka01_default" with the default driver
Pulling zookeeper (wurstmeister/zookeeper:)...
latest: Pulling from wurstmeister/zookeeper
a3ed95caeb02: Pull complete
...
f0dd38204b6f: Pull complete
Digest: sha256:7a7fd44a72104bfbd24a77844bad5fabc86485b036f988ea927d1780782a6680
Status: Downloaded newer image for wurstmeister/zookeeper:latest
Pulling kafka (wurstmeister/kafka:)...
latest: Pulling from wurstmeister/kafka
42c077c10790: Pull complete
...
539ec416bc55: Pull complete
Digest: sha256:2d4bbf9cc83d9854d36582987da5f939fb9255fb128d18e3cf2c6ad825a32751
Status: Downloaded newer image for wurstmeister/kafka:latest
Creating kafka     ... done
Creating zookeeper ... done
Enter fullscreen mode Exit fullscreen mode

Bu adımların sonunda docker ps komutu ile aşağıdaki gibi ayakta olan iki konteynır görmeniz gerekmektedir.

CONTAINER ID   IMAGE                    COMMAND                  CREATED          STATUS          PORTS                                                NAMES
fee8bfc6cebb   wurstmeister/zookeeper   "/bin/sh -c '/usr/sb…"   45 minutes ago   Up 45 minutes   22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp   zookeeper
f8c2ab063d6c   wurstmeister/kafka       "start-kafka.sh"         45 minutes ago   Up 45 minutes   0.0.0.0:9092->9092/tcp                               kafka
Enter fullscreen mode Exit fullscreen mode

Kafka üzerinde topic oluşturma

Kafka üzerindeki yapıyı bu dokümanda anlatmayacağım. Bir çok kaynakta bununla ilgili Türkçe ve İngilizce bir çok içerik bulunuyor.

Docker compose ile kafka isminde oluşan docker container'ına giriş için aşağıdaki komutu kullanabilirsiniz:

docker exec -it kafka /bin/sh
Enter fullscreen mode Exit fullscreen mode

Bu adımdan sonra aşağıdaki komut ile kafka'nın "binary" dizinine girip çalıştırılabilecek komutları görebilirsiniz. Tabi ki sürüme göre klasörün ismi de değişeceğini varsayabilirsiniz:

cd /opt/kafka_<sürümbilgisi>/bin
Enter fullscreen mode Exit fullscreen mode

Bu adımdan sonra topic oluşturmak için aşağıdaki komutu uygulamak yeterli olacaktır.

kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic ornek_topic
Enter fullscreen mode Exit fullscreen mode

Bu adımda aşağıdaki gibi ornek_topic'in oluşturulduğu bilgisi alınmalıdır.

Created topic ornek_topic.
Enter fullscreen mode Exit fullscreen mode

Topic'in kontrol edilmesi

Aynı klasörde iken kafka üzerindeki topiclerin listesini öğrenebilirsiniz.

kafka-topics.sh --list --zookeeper zookeeper:2181
Enter fullscreen mode Exit fullscreen mode

Bu adımda çıktı olarak ornek_topic çıktısını görmeniz yeterli olacaktır.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .