- vừa được xem lúc

Cài đặt Kafka Cluster cho môi trường Production, Sử dụng Kafdrop UI để View và thao tác

0 0 19

Người đăng: dohv

Theo Viblo Asia

Hello mọi người tiếp tục Series vén màn sự thật về Kafka của mình Link 👉️👉️👉️ tại đây dành cho ace mới đọc bài viết của mình lần đầu.

Và tiếp tục cho bài trước và phần 2 của Kafka connect thì như tiêu đề mình hôm nay mình sẽ viết bài chi tiết các bước để cấu hình lên 1 cụm Kafka Cluster chạy cho môi trường Production .

Bài này cần ae phải đã cài đặt được một Single Node của Kafka thì sẽ dễ hiểu và cấu hình hơn. Tham khảo bài viết cài đặt của mình tại đây hoặc Kênh Youtube của mình tại 👉️👉️👉️👉️ Link full HD 😀😀😀 Cảm ơn anh em!!!

Ae chuẩn bị cho mình một ly trà không trà thì nước mát lạnh cho tỉnh táo và ngồi ngay ngắn hoặc chuẩn bị sẵn máy để vào việc nhé ae 😆😆😆😆 .

**Let's go **

Cũng giống như bài cài đặt hôm trước mình sẽ có danh sách như sau:

  1. Một vài thông tin yêu cầu
  2. Setup mở port trên các máy broker
  3. Cấu hình Zookeeper Cluster.
  4. Cấu hình Kafka Cluster
  5. Cài đặt Kafdrop
  6. View và thao tác với cụm Kafka Cluster trên Kafdrop UI

Đã xong phần giới thiệu ta đi bắt tay vào công việc nhé.

Trong bài viết này mình dùng 3 máy cùng 1 dải mạng

NAME IP
vm-01 192.168.1.121
vm-02 192.168.1.120
vm-03 192.168.1.122

1. Một vài thông tin yêu cầu

  • Thứ nhất là về máy để cài thì cần tối thiểu là 3 máy với cấu hình tối thiểu 4GB RAM
  • Các máy có thể cùng hoặc không cùng trong cùng 1 dải mạng được setup mở port
  • Và đương nhiên là ae đã setup đủ tối thiểu 3 máy để cấu hình join lại thành 1 cụm Cluster 😆😆😆

**** Lưu ý: Khi setup Kafka Cluster sử dụng Zookeeper thì số máy Broker tham gia vào 1 cụm cluster sẽ là số lẻ và tối thiểu là 3 máy .

2. Cấu hình mở Port giữa các máy

Mình sử dụng ufw để mở port

Kiểm tra ufw có đang Active hay không

sudo ufw status

Nếu đang ở trang thái: inactive thì dùng lệnh sau để active nó lên.

sudo ufw enable

Tiếp tục mình sẽ dùng lệnh để mở 2 port 2181 của Zookeeper và 9092 cho các máy trong cùng 1 dải mạng có thể connect được tới 2 port này.

Mở port 2181

sudo ufw allow from 192.168.1.0/24 to any port 2181 proto tcp

Mở Port 9092

sudo ufw allow from 192.168.1.0/24 to any port 9092 proto tcp

Hoặc có thể dùng lệnh để chi rõ IP nguồn IP đích, Port và Protocol tương ứng như sau:

sudo ufw allow from 192.168.1.121 to any port 9092 proto tcp

👉️👉️👉️👉️ Ae thực hiện lần lượt trên từng máy còn lại nhé, bước này cũng khá quan trọng vì các máy bắt buộc phải kết nối được tới các port của nhau nhé!!!!

3. Cấu hình Zookeeper Cluster

Trên file zookeeper.properties trong thư mục config ở mỗi máy sau khi ae đã tải giải nén bản Relase và cài Kafka single Note.

Ở đây của mình sẽ là được dẫn /home/kafka/download/kafka/config

Bước 1 : Mình sẽ tạo 2 thư mục chứa data và log của thằng Zookeeper tại :

/home/kafka/zookeeper/logs

/home/kafka/zookeeper/data-logs

*** Lưu ý: việc Kafka có bị mất data hay không nó cũng phụ thuộc vào 2 đường dẫn này nhé nên ae lưu ý khi tạo thư mục này

Bước 2: Trong thư mục /home/kafka/zookeeper/logs mình sẽ tạo 1 file myid và sửa nội dung file sẽ chứa 1 số nguyên tùy chọn và nó sẽ là id của zookeeper trong cụm cluster.

Bước 3: Mình dùng lệnh vi và chỉnh sửa nội dung của file zookeeper.properties như sau:

image.png

Mình thêm 2 tham số: dataDirdataLogDir điền giá trị là 2 đường dẫn tương ứng mình đã tạo ở Bước 1

dataDir=/home/kafka/zookeeper/logs dataLogDir=/home/kafka/zookeeper/data-logs

các tham số Port mình để mặc định và

 maxClientCnxns=60 admin.enableServer=false

Các tham số bắt buộc phải có bao gồm: (Về các tham số này mình sẽ giải thích ở một bài sớm nhất nhé ae 😆😆😆)

tickTime=2000
initLimit=10
syncLimit=5 4lw.commands.whitelist=*

Tiếp theo tham số này quan trọng.

server.1=192.168.1.121:2888:3888
server.2=192.168.1.120:2888:3888
server.3=192.168.1.122:2888:3888

cấu trúc của tham số trên như sau:

server.<myid>=<hostname>:<leaderport>:<electionport>

myid nó chính là id trong file myid mình đã tạo ở Bước 2

leaderport : trong 1 thời điểm chỉ có 1 Zookeeper làm leader nên đây sẽ là Port để các máy follower connect tới

electionport: Sử dụng cho việc bình bầu follower lên làm leader

ở đây mình có 3 máy và có 3 nên sẽ có 3 id là 1, 2 và 3 tương ứng với 3 máy mình đã tạo ở Bước 2 .

AE tiếp tục thực hiện 3 bước này trên các máy còn lại.

Sau Khi chỉnh sửa file cấu hình xong ae thực hiện restart lại zookeeper

 sudo systemctl restart zookeeper.service

(TH ae chưa setup service systemd thì ae có thể dùng lệnh zookeeper-server-stop.sh zookeeper-server-start.sh và trong thư mục bin nhé 😄)

4. Cấu hình Join Kafka Cluster.

Vẫn trong thư mục config trên mỗi máy

Mình sẽ vi file server.properties lên và chỉnh sửa như sau:

Các tham số quan trọng trong file cần phải cấu hình ngoài ra các tham số khác ae có thể tìm hiểu và trong khi vận hành và chỉnh sửa sao cho phù hợp.

Trên máy 192.168.1.121 của mình sửa cấu hình 1 số các tham số như sau:

 broker.id=1 listeners=PLAINTEXT://0.0.0.0:9092 advertised.listeners=PLAINTEXT://192.168.1.121:9092 log.dirs=/home/kafka/logs zookeeper.connect=localhost:2181,192.168.1.120:2181,192.168.1.122:2181

Lý do

Khi join cluster thì các kafka node phải có id khác nhau

log.dirs chỗ này chứa 1 số thông tin quan trọng như meta.properties để có thể start 1 cụm cluster nên cũng cần phải cẩn thận

và 2 tha số khi để cấu hình cho các service trong cùng 1 dải mạng có thể connect tới kafka

Và Tham số quan trọng tiếp theo

 zookeeper.connect=localhost:2181,192.168.1.120:2181,192.168.1.122:2181

Chính là tham số để connect tới cụm Cluster Zookeeper đã cấu hình ở bên trên.

AE thực hiện cấu hình các tham số bên trên với các máy còn lại

Sau khi cấu hình trên các máy xong nhớ thực hiện restart lại các máy Kafka nhé.

systemctl restart kafka.service

Hoặc có thể dùng lệnh sh start, stop trong thư mục bin

Oke Tới đây là quá trình đã gần hoàn thiện cho 1 cụm Cluster

5. Cài Kafdrop UI

Yêu cầu: máy đã cài Java JDK

Bước 1: Tạo 1 thư mục

mkdir ~/kafdrop && cd kafdrop

Bước 2: Tải file jar Kafdrop

wget https://github.com/obsidiandynamics/kafdrop/releases/download/3.28.0/kafdrop-3.28.0.jar

Bước 3: tạo service systemd cho kafdrop

vi /etc/systemd/system/kafdrop.service

Bước 4: điền thông tin file với tham số IP của các máy Kafka tương ứng

 [Unit]
Description=Kafdrop server
Documentation=https://github.com/obsidiandynamics/kafdrop
Requires=network.target remote-fs.target
After=network.target remote-fs.target [Service]
Type=simple
ExecStart=/bin/java --add-opens=java.base/sun.nio.ch=ALL-UNNAMED \ -jar /home/kafka/kafdrop/kafdrop-3.28.0.jar \ --kafka.brokerConnect=localhost:9092,192.168.1.121:9092,192.168.1.120:9092 --server.port=9010 --management.server.port=9010 \ Restart=on-abnormal [Install]
WantedBy=multi-user.target

Bước 5: Start Kafdrop và mở Port 9010 của Kafdrop

systemctl start kafdrop.service systemctl enable kafdrop.service sudo ufw allow from 192.168.1.0/24 to any port 9010 proto tcp

6. Kiểm tra thành quả .

image.png

Bài viết hôm nay cũng khá dài, cảm ơn all ace đã đọc bài viết của mình nhé, Ae cho mình xin 1 Vote và chờ bài viết tiếp theo nhé

Trân thành cảm ơn anh em !

Bình luận

Bài viết tương tự

- vừa được xem lúc

001: Message-driven programming với Message broker và Apache Kafka

Bài viết nằm trong series Apache Kafka từ zero đến one. . . Asynchronous programming.

0 0 164

- vừa được xem lúc

002: Apache Kafka topic, partition, offset và broker

Bài viết nằm trong series Apache Kafka từ zero đến one. Nói qua về lịch sử, Kafka được phát triển bởi LinkedIn (các anh em dev chắc chẳng xa lạ gì) và viết bằng ngôn ngữ JVM, cụ thể là Java và Scala.

0 0 153

- vừa được xem lúc

003: Gửi và nhận message trong Apache Kafka

Bài viết nằm trong series Apache Kafka từ zero đến one. . . Nếu muốn các message được lưu trên cùng một partition để đảm bảo thứ tự thì làm cách nào.

0 0 222

- vừa được xem lúc

004: Apache Kafka consumer offset, Broker discovery và Zookeeper

Bài viết nằm trong series Apache Kafka từ zero đến one. 1) Consumer offset.

0 0 130

- vừa được xem lúc

Change account

Tài khoản cũ của mình có chút vấn đề nên mình chuyển sang dùng tài khoản mới để viết bài. Xin cảm ơn mọi người.

0 0 26

- vừa được xem lúc

[MSDP] - Event Carried State Transfer

Trong hướng dẫn này, chúng ta cùng tìm hiểu về Microservice Desin Pattern - Event Carried State Transfer (chuyển trạng thái theo sự kiện) để đạt được sự nhất quán về dữ liệu giữa các microservice. Tro

0 0 34