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:
- Một vài thông tin yêu cầu
- Setup mở port trên các máy broker
- Cấu hình Zookeeper Cluster.
- Cấu hình Kafka Cluster
- Cài đặt Kafdrop
- 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:
Mình thêm 2 tham số: dataDir
và dataLogDir
đ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ả .
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 !