Apache Kafka adalah platform streaming terdistribusi. Dengan set API (Application Programming Interface) yang kaya, kami dapat menghubungkan sebagian besar apa saja ke Kafka sebagai sumber data, dan di sisi lain, kami dapat menyiapkan sejumlah besar konsumen yang akan menerima sejumlah besar catatan untuk diproses. Kafka sangat skalabel, dan menyimpan aliran data dengan cara yang andal dan toleran terhadap kesalahan. Dari perspektif konektivitas, Kafka dapat berfungsi sebagai jembatan antara banyak sistem heterogen, yang pada gilirannya dapat mengandalkan kemampuannya untuk mentransfer dan mempertahankan data yang disediakan.
Dalam tutorial ini kita akan menginstal Apache Kafka pada Red Hat Enterprise Linux 8, buat systemd
file unit untuk kemudahan pengelolaan, dan uji fungsionalitas dengan alat baris perintah yang dikirimkan.
Dalam tutorial ini Anda akan mempelajari:
- Cara menginstal Apache Kafka
- Cara membuat layanan systemd untuk Kafka dan Zookeeper
- Cara menguji Kafka dengan klien baris perintah
Mengkonsumsi pesan tentang topik Kafka dari baris perintah.
Persyaratan dan Konvensi Perangkat Lunak yang Digunakan
Kategori | Persyaratan, Konvensi, atau Versi Perangkat Lunak yang Digunakan |
---|---|
Sistem | Red Hat Enterprise Linux 8 |
Perangkat Lunak | Apache Kafka 2.11 |
Lainnya | Akses istimewa ke sistem Linux Anda sebagai root atau melalui sudo perintah. |
Konvensi | # – membutuhkan perintah linux yang diberikan untuk dieksekusi dengan hak akses root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah$ – membutuhkan perintah linux yang diberikan untuk dieksekusi sebagai pengguna biasa yang tidak memiliki hak istimewa |
Cara menginstal kafka di Redhat 8 petunjuk langkah demi langkah
Apache Kafka ditulis dalam Java, jadi kita hanya perlu menginstal OpenJDK 8 untuk melanjutkan instalasi. Kafka mengandalkan Apache Zookeeper, layanan koordinasi terdistribusi, yang juga ditulis dalam Java, dan dikirimkan bersama paket yang akan kita unduh. Saat menginstal layanan HA (Ketersediaan Tinggi) ke satu node tidak akan menghentikan tujuannya, kami akan menginstal dan menjalankan Zookeeper demi Kafka.
- Untuk mengunduh Kafka dari mirror terdekat, kita perlu berkonsultasi dengan situs unduhan resmi. Kami dapat menyalin URL
.tar.gz
berkas dari sana. Kami akan menggunakanwget
, dan URL yang ditempel untuk mengunduh paket ke mesin target:# wget https://www-eu.apache.org/dist/kafka/2.1.0/kafka_2.11-2.1.0.tgz -O /opt/kafka_2.11-2.1.0.tgz
- Kita masukkan
/opt
direktori, dan ekstrak arsip:# cd /opt # tar -xvf kafka_2.11-2.1.0.tgz
Dan buat symlink bernama
/opt/kafka
yang menunjuk ke/opt/kafka_2_11-2.1.0
. yang sekarang dibuat direktori untuk membuat hidup kita lebih mudah.ln -s /opt/kafka_2.11-2.1.0 /opt/kafka
- Kami membuat pengguna yang tidak memiliki hak istimewa yang akan menjalankan
zookeeper
dankafka
service.# useradd kafka
- Dan tetapkan pengguna baru sebagai pemilik seluruh direktori yang kami ekstrak, secara rekursif:
# chown -R kafka:kafka /opt/kafka*
- Kami membuat file unit
/etc/systemd/system/zookeeper.service
dengan konten berikut:[Unit] Description=zookeeper After=syslog.target network.target [Service] Type=simple User=kafka Group=kafka ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh [Install] WantedBy=multi-user.target
Perhatikan bahwa kita tidak perlu menulis nomor versi tiga kali karena symlink yang kita buat. Hal yang sama berlaku untuk file unit berikutnya untuk Kafka,
/etc/systemd/system/kafka.service
, yang berisi baris konfigurasi berikut:[Unit] Description=Apache Kafka Requires=zookeeper.service After=zookeeper.service [Service] Type=simple User=kafka Group=kafka ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties ExecStop=/opt/kafka/bin/kafka-server-stop.sh [Install] WantedBy=multi-user.target
- Kita perlu memuat ulang
systemd
untuk mendapatkannya baca file unit baru:# systemctl daemon-reload
- Sekarang kita dapat memulai layanan baru (dalam urutan ini):
# systemctl start zookeeper # systemctl start kafka
Jika semuanya berjalan dengan baik,
systemd
harus melaporkan status berjalan pada status kedua layanan, mirip dengan output di bawah ini:# systemctl status zookeeper.service zookeeper.service - zookeeper Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2019-01-10 20:44:37 CET; 6s ago Main PID: 11628 (java) Tasks: 23 (limit: 12544) Memory: 57.0M CGroup: /system.slice/zookeeper.service 11628 java -Xmx512M -Xms512M -server [...] # systemctl status kafka.service kafka.service - Apache Kafka Loaded: loaded (/etc/systemd/system/kafka.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2019-01-10 20:45:11 CET; 11s ago Main PID: 11949 (java) Tasks: 64 (limit: 12544) Memory: 322.2M CGroup: /system.slice/kafka.service 11949 java -Xmx1G -Xms1G -server [...]
- Secara opsional, kami dapat mengaktifkan mulai otomatis saat boot untuk kedua layanan:
# systemctl enable zookeeper.service # systemctl enable kafka.service
- Untuk menguji fungsionalitas, kami akan terhubung ke Kafka dengan satu produsen dan satu klien konsumen. Pesan yang diberikan oleh produsen harus muncul di konsol konsumen. Tapi sebelum ini kita membutuhkan sebuah media untuk bertukar pesan. Kami membuat saluran data baru yang disebut
topic
dalam istilah Kafka, di mana penyedia akan menerbitkan, dan di mana konsumen akan berlangganan. Kami akan menyebut topiknyaFirstKafkaTopic
. Kami akan menggunakankafka
pengguna untuk membuat topik:$ /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic FirstKafkaTopic
- Kami memulai klien konsumen dari baris perintah yang akan berlangganan topik (pada titik ini kosong) yang dibuat pada langkah sebelumnya:
$ /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic FirstKafkaTopic --from-beginning
Kami membiarkan konsol dan klien berjalan di dalamnya terbuka. Konsol ini adalah tempat kami akan menerima pesan yang kami publikasikan dengan klien produser.
- Di terminal lain, kami memulai klien produser, dan memublikasikan beberapa pesan ke topik yang kami buat. Kami dapat meminta Kafka untuk topik yang tersedia:
$ /opt/kafka/bin/kafka-topics.sh --list --zookeeper localhost:2181 FirstKafkaTopic
Dan sambungkan ke salah satu langganan konsumen, lalu kirim pesan:
$ /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic FirstKafkaTopic > new message published by producer from console #2
Di terminal konsumen, pesan akan segera muncul:
$ /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic FirstKafkaTopic --from-beginning new message published by producer from console #2
Jika pesan muncul, pengujian kami berhasil, dan instalasi Kafka kami berfungsi sebagaimana mestinya. Banyak klien dapat menyediakan dan menggunakan satu atau beberapa catatan topik dengan cara yang sama, bahkan dengan penyiapan node tunggal yang kami buat dalam tutorial ini.