+2

Hướng dẫn cài đặt Kafka trên Ubuntu

Mayfest2023

1. Cài đặt JAVA

Để kiểm tra máy của bạn đã cài Java chưa bạn sử dụng câu lệnh sau:

java --version

image.png

Nếu mà có dòng Command 'java' not found như ảnh trên thì bạn cần cài Java trước khi cài Kafka (nếu ai có rồi, thì có thể bỏ qua bước này làm tiếp bước thứ 2 luôn)

sudo apt update
sudo apt install default-jdk

Sau khi cài xong bạn sử dụng lại lệnh java --version sẽ thấy như sau:

image.png

Bước này phần cài đặt Java đã xong tiếp đến chúng ta sẽ cài đặt Kafka

2. Download Kafka

Đầu tiên chúng ta sẽ tạo thư mục để lưu file cài đặt kafka

sudo mkdir /home/kafka

Tiếp theo chúng ta vào thư mục kafka vừa tạo bằng lệnh:

cd /home/kafka

Tiếp đến chúng ta dùng lệnh dưới đây để download Kafka và lưu file vào folder /home/kafka.tgz

curl "https://downloads.apache.org/kafka/2.8.2/kafka_2.13-2.8.2.tgz" -o /home/kafka.tgz

Chu ý: Nếu ai chưa cài đặt curl chạy lệnh sau để cài đặt: sudo apt install curl

image.png

Bây giờ chúng ta sẽ giải nén file vừa tải về

sudo tar -xvzf /home/kafka.tgz --strip 1

image.png

3. Cấu hình Kafka

Bây giờ chúng ta sẽ tạo 1 file cấu hình server của kafka ở đường dẫn /etc/systemd/system/kafka.service bằng câu lệnh sau:

sudo nano /etc/systemd/system/kafka.service

Sau đó copy đoạn config dưới đây vào file kafka.service:

[Unit]

Description=Apache Kafka Server

Documentation=http://kafka.apache.org/documentation.html

Requires=zookeeper.service

[Service]

Type=simple

Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"

ExecStart=/home/kafka/bin/kafka-server-start.sh /home/kafka/config/server.properties

ExecStop=/home/kafka/bin/kafka-server-stop.sh

Restart=on-abnormal

[Install]

WantedBy=multi-user.target

image.png

Sau đó lưu file lại

4. Cấu hình Zookeeper

Kafka sử dụng Zookeeper để quản lý cluster state

Bây giờ chúng ta sẽ tạo 1 file cấu hình server của Zookeeper ở đường dẫn /etc/systemd/system/zookeeper.service bằng câu lệnh sau:

sudo nano /etc/systemd/system/zookeeper.service

Sau đó copy đoạn config dưới đây vào file zookeeper.service:

[Unit]

Description=Apache Zookeeper server

Documentation=http://zookeeper.apache.org

Requires=network.target remote-fs.target

After=network.target remote-fs.target

[Service]

Type=simple

ExecStart=/home/kafka/bin/zookeeper-server-start.sh /home/kafka/config/zookeeper.properties

ExecStop=/home/kafka/bin/zookeeper-server-stop.sh

Restart=on-abnormal

[Install]

WantedBy=multi-user.target

image.png

Sau đó lưu file lại

5. Start Kafka

Chúng ta chạy câu lệnh sau để apply mọi thay đổi của hệ thống do chúng ta vừa chính sửa ở bước trước

sudo systemctl daemon-reload

Khởi động zookeeper

Tiếp đến sử dụng 2 câu lệnh sau để khởi động zookeeper

sudo systemctl enable zookeeper
sudo systemctl start zookeeper

image.png

Sử dụng sudo systemctl status zookeeper kiểm tra trạng thái zookeeper

image.png

Khởi động kafka

Sử dụng 2 câu lệnh sau để khởi động kafka

sudo systemctl enable kafka
sudo systemctl start kafka

image.png

Sử dụng sudo systemctl status kafka kiểm tra trạng thái kafka

image.png

5. Tạo 1 topic

Chúng ta sẽ sử dụng câu lệnh sau để tạo 1 topic có tên là topic-kafka

sudo -u root /home/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic topic-kafka

image.png

Tiếp đến chúng ta sẽ sử dụng producer để gửi 1 message trong topic topic-kafka bằng câu lệnh sau:

sudo -u root /home/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic topic-kafka

Bây giờ các bạn bật thêm 1 cửa số terminal nữa sử dụng consumer để lắng nghe sự kiện mà producer gửi đi, các bạn sử dụng câu lệnh sau:

sudo -u root /home/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic-kafka --from-beginning

image.png

Cuối cùng cũng đã hoàn thành các bạn có thể thấy trong ảnh cửa sổ terminal ở trên là producer ở dưới là consumerconsumer cũng đã nhận được message xin chao minh la kafka của producer

6.Kết luận

Ở bài sau mình sẽ hướng dẫn các bạn tích hợp kafka vào Nodejs để triên khai 1 dự án microservice, mong mọi người theo dõi và ủng hộ mình, mình cảm ơn 🥰🥰🥰🥰


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.