INDO GLOBAL PRATAMA
The world in your hands
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.
Apache Kafka didasarkan pada model terbitkan-berlangganan:
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 yang sangat diperlukan dari konfigurasi Kafka. Ini mengoordinasikan produsen Kafka, broker, konsumen, dan keanggotaan klaster.
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
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.
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
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
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.
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.
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-beginning
mencantumkan pesan secara kronologis. Anda sekarang dapat memasukkan pesan dari terminal produsen dan melihatnya muncul di terminal konsumen.
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 .