Bagaimana Mensetup Dan Menjalankan Kafka di Kubernetes

Bagaimana Mensetup Dan Menjalankan Kafka di Kubernetes
February 22, 2023 No Comments Kubernetes G6k1JiPxqm

Apa itu Apache Kafka?

Kafka adalah sistem perpesanan yang mengumpulkan dan memproses data dalam jumlah besar secara real-time, menjadikannya komponen integrasi penting untuk aplikasi yang berjalan di kluster Kubernetes. Efisiensi aplikasi yang diterapkan dalam klaster dapat ditingkatkan lebih lanjut dengan platform streaming acara seperti Apache Kafka .

Tutorial mendalam ini menunjukkan cara mengonfigurasi server Kafka di kluster Kubernetes.

Bagaimana Cara Kerja Apache Kafka?

Apache Kafka didasarkan pada model terbitkan-berlangganan:

  1. Produser menghasilkan pesan dan menerbitkannya ke topik .
  2. Kafka mengkategorikan pesan ke dalam topik dan menyimpannya sehingga tidak dapat diubah.
  3. Konsumen berlangganan topik tertentu dan menyerap pesan yang diberikan oleh produsen .

Produsen dan Konsumen dalam konteks ini mewakili aplikasi yang menghasilkan pesan yang digerakkan oleh peristiwa dan aplikasi yang menggunakan pesan tersebut. Pesan disimpan di broker Kafka, diurutkan berdasarkan topik yang ditentukan pengguna .

Arsitektur kluster Kafka dasar.

Zookeeper adalah komponen yang sangat diperlukan dari konfigurasi Kafka. Ini mengoordinasikan produsen Kafka, broker, konsumen, dan keanggotaan klaster.

Menyebarkan Zookeeper

Kafka tidak dapat berfungsi tanpa Zookeeper. Layanan Kafka terus dimulai ulang hingga penerapan Zookeeper yang berfungsi terdeteksi.

Terapkan Zookeeper sebelumnya, dengan membuat file YAML zookeeper.yml . File ini memulai layanan dan penerapan yang menjadwalkan pod Zookeeper di kluster Kubernetes.

Catatan: Anda dapat menggunakan Yet Another Markup Language (YAML) untuk membuat file yang cocok untuk pengguna manusia dan alat perangkat lunak. File seperti yang disajikan dalam tutorial ini tersedia dengan mudah dan bebas di repositori online seperti GitHub. File, dalam bentuknya saat ini, tidak dimaksudkan untuk digunakan dalam lingkungan produksi. Alih-alih, Anda harus mengedit file ini secara memadai agar sesuai dengan kebutuhan sistem Anda .

Gunakan editor teks pilihan Anda untuk menambahkan bidang berikut ke zookeeper.yml :

apiVersion: v1
kind: Service
metadata:
  name: zk-s
  labels:
    app: zk-1
spec:
  ports:
  - name: client
    port: 2181
    protocol: TCP
  - name: follower
    port: 2888
    protocol: TCP
  - name: leader
    port: 3888
    protocol: TCP
  selector:
    app: zk-1
    ---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: zk-deployment-1
spec:
  template:
    metadata:
      labels:
        app: zk-1
    spec:
      containers:
      - name: zk1
        image: bitnami/zookeeper
        ports:
        - containerPort: 2181
        env:
        - name: ZOOKEEPER_ID
          value: "1"
        - name: ZOOKEEPER_SERVER_1
          value: zk1

Jalankan perintah berikut di kluster Kubernetes Anda untuk membuat file definisi:

kubectl create -f zookeeper.yml

Buat Layanan Kafka

Kita sekarang perlu membuat file definisi Layanan Kafka. File ini mengelola penyebaran Kafka Broker dengan menyeimbangkan muatan pod Kafka baru. File kafka-service.yml dasar berisi elemen-elemen berikut:

 apiVersion: v1 
 kind: Service 
 metadata:  
   labels:  
     app: kafkaApp 
   name: kafka
 spec:  
   ports:  
     -  
       port: 9092 
       targetPort: 9092
      protocol: TCP
     -  
       port: 2181 
       targetPort: 2181 
   selector:  
     app: kafkaApp 
   type: LoadBalancer

Setelah Anda menyimpan file, buat layanan dengan memasukkan perintah berikut:

kubectl create -f kafka-service.yml

Catatan: Dalam file definisi Layanan Kafka yang disebutkan di atas, Jenis diatur ke LoadBalancer. Jika Anda menerapkan Kubernetes pada bare metal , gunakan MetalLB, implementasi penyeimbang beban untuk Kubernetes bare metal.

Tentukan Pengontrol Replikasi Kafka

Buat file .yml tambahan untuk berfungsi sebagai pengontrol replikasi untuk Kafka. File pengontrol replikasi, dalam contoh kami kafka-repcon.yml, berisi bidang-bidang berikut:

---  
 apiVersion: v1 
 kind: ReplicationController 
 metadata:  
   labels:  
     app: kafkaApp 
   name: kafka-repcon 
 spec:  
   replicas: 1
   selector:  
     app: kafkaApp 
   template:  
     metadata:  
       labels:  
         app: kafkaApp 
     spec:  
       containers:  
-
           command:  
             - zookeeper-server-start.sh 
             - /config/zookeeper.properties 
           image: "wurstmeister/kafka" 
           name: zk1 
           ports:  
             -  
               containerPort: 2181

Simpan file definisi pengontrol replikasi dan buat dengan menggunakan perintah berikut:

kubectl create -f kafka-repcon.yml

Mulai Server Kafka

Properti konfigurasi untuk server Kafka ditentukan dalam file config/server.properties . Karena kami telah mengonfigurasi server Zookeeper, mulai server Kafka dengan:

kafka-server-start.sh config/server.properties

Cara Membuat Topik Kafka

Kafka memiliki utilitas baris perintah yang disebut kafka-topics.sh . Gunakan utilitas ini untuk membuat topik di server. Buka jendela terminal baru dan ketik:

kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic Topic-Name

Kami membuat topik bernama Topic-Name dengan satu partisi dan satu instance replika.

Cara Memulai Produser Kafka

File config/server.properties berisi id port broker. Pialang dalam contoh mendengarkan pada port 9092. Dimungkinkan untuk menentukan port mendengarkan secara langsung menggunakan baris perintah:

kafka-console-producer.sh --topic kafka-on-kubernetes --broker-list localhost:9092 --topic Topic-Name 

Sekarang gunakan terminal untuk menambahkan beberapa baris pesan.

Bagaimana Memulai Konsumen Kafka

Seperti properti Produsen, pengaturan Konsumen default ditentukan dalam file config/consumer.properties . Buka jendela terminal baru dan ketik perintah untuk mengkonsumsi pesan:

kafka-console-consumer.sh --topic Topic-Name --from-beginning --zookeeper localhost:2181 

Perintah --from-beginningmencantumkan pesan secara kronologis. Anda sekarang dapat memasukkan pesan dari terminal produsen dan melihatnya muncul di terminal konsumen.

Cara Menskalakan Cluster Kafka

Gunakan terminal perintah dan kelola langsung Kafka Cluster menggunakan  kubectl . Masukkan perintah berikut dan skala klaster Kafka Anda dengan cepat dengan menambah jumlah pod dari satu (1) menjadi enam (6):

kubectl scale rc kafka-rc --replicas=6

Kesimpulan

Dengan mengikuti instruksi dalam tutorial ini, Anda telah berhasil menginstal Kafka di Kubernetes. Broker Kafka tunggal dapat memproses jumlah pembacaan dan penulisan yang mengesankan dari banyak klien secara bersamaan.

Jika Anda menerapkan aplikasi dalam kluster Kubernetes, gunakan Kafka untuk meningkatkan kapasitas aplikasi Anda untuk bertukar informasi secara real-time.

Untuk broker pesan alternatif, lihat artikel kami tentang penerapan RabbitMQ di Kubernetes .

About The Author

Leave a reply

Your email address will not be published. Required fields are marked *