Docker Compose ile Apache Kafka, Zookeeper, Redis ve AKHQ Kurulumu

Docker Compose, birden fazla servisi aynı anda kolayca yönetmenizi sağlayan bir araçtır. Bu yazıda, Apache Kafka, Zookeeper, Redis ve Kafka için güçlü bir yönetim aracı olan AKHQ’yi Docker Compose kullanarak nasıl yapılandıracağınızı anlatacağım.

Ön Gereksinimler

Docker ve Docker Compose sisteminizde yüklü olmalıdır. Kurulumlar tamamlandıktan sonra aşağıdaki adımları takip edebilirsiniz.

1. Docker Compose Dosyasının Oluşturulması

Proje dizininizde bir docker-compose.yml dosyası oluşturun ve aşağıdaki yapılandırmayı ekleyin:

version: "3"

services:
  ## Zookeeper Service ##
  urfet_zookeeper:
    container_name: urfet_zookeeper
    image: bitnami/zookeeper:latest
    restart: unless-stopped
    ports:
      - '2181:2181'
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes

  ## Kafka Service ##
  urfet_kafka:
    container_name: urfet_kafka
    image: bitnami/kafka:latest
    restart: unless-stopped
    environment:
      - KAFKA_BROKER_ID=1
      - KAFKA_LISTENERS=PLAINTEXT://:9092
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://urfet_kafka:9092
      - KAFKA_ZOOKEEPER_CONNECT=urfet_zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
    ports:
      - '9092:9092'
    depends_on:
      - urfet_zookeeper

  ## Redis Service ##
  urfet_redis:
    container_name: urfet_redis
    image: redis:latest
    restart: unless-stopped
    ports:
      - "6379:6379"
    volumes:
      - "./../../DockerDataFiles/redis_data:/data"

  ## AKHQ (Kafka HQ) Service ##
  urfet_akhq:
    image: tchiotludo/akhq
    container_name: urfet_akhq
    ports:
      - "8080:8080"
    environment:
      AKHQ_CONFIGURATION: |
        akhq:
          server:
            access-log: true
          connections:
            kafka:
              properties:
                bootstrap.servers: "urfet_kafka:9092"
    depends_on:
      - urfet_kafka

2. Yapılandırma Açıklamaları

  • Zookeeper Servisi
    • Zookeeper, Kafka gibi dağıtık sistemlerde koordinasyon ve durum yönetimi için kullanılan bir hizmettir. Bu yapılandırmada, Bitnami'nin Zookeeper imajı kullanılarak 2181 portu üzerinden çalıştırılıyor.
  • Kafka Servisi
    • Apache Kafka, dağıtık mesajlaşma ve akış platformu olarak yaygın bir şekilde kullanılır. Zookeeper ile entegre bir şekilde çalışır ve 9092 portu üzerinden dış dünyaya açılır. Konfigürasyonlar arasında otomatik konu oluşturma ve plaintext bağlantılarının izin verilmesi gibi ayarlar bulunmaktadır.
  • Redis Servisi
    • Redis, hafif ve hızlı bir veri depolama çözümüdür. Kalıcı veri depolama için bir yerel dizin Redis'e bağlanmıştır. Redis, önbellekleme veya mesajlaşma sistemi olarak kullanılabilir.
  • AKHQ Servisi
    • AKHQ (Kafka HQ), Kafka’yı yönetmek için kullanıcı dostu bir web arayüzüdür. Kafka kümelerini, topic’leri ve tüketici gruplarını görselleştirir. Bu yapılandırma ile Kafka’ya 9092 portu üzerinden bağlanır ve 8080 portu ile dış dünyaya açılır.

3. Servislerin Çalıştırılması

Docker Compose dosyasını hazırladıktan sonra, terminal veya komut istemcisinde aşağıdaki komutu çalıştırarak tüm servisleri başlatabilirsiniz: 

docker-compose up

Bu komut, Zookeeper, Kafka, Redis ve AKHQ hizmetlerini arka planda çalıştırmaya başlayacaktır. AKHQ ile Kafka kümelerinizi kolayca yönetebilir, mesajları takip edebilir ve kümelerinizin genel durumunu izleyebilirsiniz.

Sonuç

Bu yapılandırma, Kafka, Zookeeper ve Redis gibi dağıtık sistemlerde kritik öneme sahip hizmetleri aynı anda yönetmeyi mümkün kılar. AKHQ ise Kafka'nın yönetimini büyük ölçüde kolaylaştırarak operasyonel yükünüzü azaltır. Mikroservis veya büyük ölçekli sistemlerde mesajlaşma altyapınızı bu servislerle kurarak güvenilir ve performanslı bir yapı elde edebilirsiniz.

Apache Kafka Nedir? Kim Tarafından Geliştirilmiştir ve Amacı Nedir?