GNU/Linux >> Belajar Linux >  >> Cent OS

Cara Mengatur dan Menjalankan Kafka di Kubernetes

Apa itu Apache Kafka?

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

Tutorial mendalam ini menunjukkan kepada Anda cara mengonfigurasi server Kafka di cluster Kubernetes.

Bagaimana Apache Kafka Bekerja?

Apache Kafka didasarkan pada model publish-subscribe:

  1. Produser buat pesan dan publikasikan ke topik .
  2. Kafka mengelompokkan pesan ke dalam topik dan menyimpannya sehingga tidak dapat diubah.
  3. Konsumen berlangganan topik tertentu dan menyerap pesan yang diberikan oleh produser.

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 .

Zookeeper adalah komponen tak terpisahkan dari konfigurasi Kafka. Ini mengoordinasikan produsen, pialang, konsumen, dan keanggotaan klaster Kafka.

Menerapkan Zookeeper

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

Deploy Zookeeper terlebih dahulu, dengan membuat file YAML zookeeper.yml . File ini memulai layanan dan penerapan yang menjadwalkan pod Zookeeper di cluster Kubernetes.

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 cluster 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 penerapan Kafka Broker dengan load-balancing pod Kafka baru. kafka-service.yml basic dasar file 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

Tentukan Pengontrol Replikasi Kafka

Buat .yml additional tambahan file 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 di config/server.properties mengajukan. Karena kita 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 Nama-Topik dengan satu partisi dan satu instance replika.

Cara Memulai Produser Kafka

config/server.properties file berisi id port broker. Broker dalam contoh mendengarkan pada port 9092. Anda dapat 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.

Cara Memulai Konsumen Kafka

Seperti properti Producer, setelan Konsumen default ditentukan di config/consumer.properties mengajukan. Buka jendela terminal baru dan ketik perintah untuk menggunakan pesan:

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

--from-beginning perintah daftar 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 cluster Kafka Anda dengan cepat dengan meningkatkan jumlah pod dari satu (1) menjadi enam (6):

kubectl scale rc kafka-rc --replicas=6

Cent OS
  1. Cara Menginstal dan Menjalankan Python di CentOS 8

  2. Cara Mengkompilasi dan Menjalankan Program C di Ubuntu

  3. Cara Menginstal dan Mengatur mysql 8 di Ubuntu 20.04

  1. Cara Menyebarkan dan Menjalankan Redis di Docker

  2. Cara Mengatur Cluster Kubernetes dengan Rancher

  3. Cara Mengatur atau Mengubah Zona Waktu di Ubuntu 20.04 dan 21.04

  1. Apa Itu Nama Inang Cantik dan Cara Mengaturnya

  2. Cara Menjalankan MongoDB di Kubernetes

  3. Apa itu Kubernetes DaemonSet dan Bagaimana Cara Menggunakannya?