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:
- Produser buat pesan dan publikasikan ke topik .
- Kafka mengelompokkan pesan ke dalam topik dan menyimpannya sehingga tidak dapat diubah.
- 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