0
0
Lập trình
Admin Team
Admin Teamtechmely

Hướng Dẫn Cài Đặt Cụm Apache Kafka Sử Dụng KRAFT Một Cách Chi Tiết

Đăng vào 1 tuần trước

• 3 phút đọc

Giới Thiệu

Trong việc triển khai Apache Kafka, một trong những thách thức lớn nhất là quản lý cụm ZooKeeper. ZooKeeper đóng vai trò quan trọng trong việc lưu trữ metadata, quản lý các broker, kiểm soát các topic và đảm bảo cấu hình cho cụm. Tuy nhiên, việc duy trì ZooKeeper song song với Kafka gây ra nhiều phức tạp và có thể tạo ra độ trễ đáng kể, đặc biệt trong các cụm lớn hoặc khi có nhiều cập nhật metadata.

Đặc biệt, nếu ZooKeeper gặp sự cố, toàn bộ cụm Kafka có thể bị ảnh hưởng. Để khắc phục những vấn đề này, Apache Kafka đã giới thiệu KRAFT - một phương pháp mới giúp quản lý metadata bằng giao thức Raft, cho phép Kafka tự quản lý metadata mà không cần đến ZooKeeper.

Metadata hiện được lưu trữ trực tiếp trong thư mục “cluster_metadata” của Kafka. Bạn có thể kiểm tra metadata tại địa chỉ mà bạn đã lưu trữ dữ liệu Kafka. Dưới đây là một ví dụ về cấu trúc thư mục này:

bash Copy
root@dbb-u22:/opt/data-kafka/__cluster_metadata-0# ls -la 
total 54916
drwxr-xr-x 2 root root     8192 Nov 30 22:42 .
drwxr-xr-x 6 root root      285 Nov 30 23:11 ..
-rw-r--r-- 1 root root 10485760 Nov 30 23:11 00000000000000000000.index
-rw-r--r-- 1 root root 38984994 Nov 30 23:11 00000000000000000000.log
-rw-r--r-- 1 root root 10485756 Nov 30 23:11 00000000000000000000.timeindex
-rw-r--r-- 1 root root       10 Nov 27 20:41 00000000000000005109.snapshot
...```

## Cài Đặt Cụm Kafka

Để đảm bảo an toàn, trước tiên cần tạo một người dùng mới để chạy dịch vụ Kafka:

```bash
sudo adduser kafka
sudo adduser kafka sudo

Tiếp theo, tải Apache Kafka từ liên kết sau: Apache Kafka Downloads.

bash Copy
wget https://archive.apache.org/dist/kafka/3.9.0/kafka_2.13-3.9.0.tgz

Giải nén tệp vừa tải về:

bash Copy
tar xzf kafka_2.13-3.9.0.tgz
mv kafka_2.13-3.9.0 /opt/kafka/

Bây giờ, hãy cấu hình các node bằng cách di chuyển đến thư mục vừa giải nén:

bash Copy
nano /opt/kafka/config/kraft/server.properties

Tìm và chỉnh sửa các dòng sau:

properties Copy
process.roles=broker,controller
node.id=1
controller.quorum.voters=1@localhost:9092

Trong đó:

  • process.roles xác định vai trò của server.
  • node.id là ID của nút trong cụm (cần đảm bảo mỗi nút có ID duy nhất).
  • controller.quorum.voters là danh sách các địa chỉ của tất cả các nút trong cụm.

Thay đổi thành:

properties Copy
controller.quorum.voters=1@kafka1.your_domain:9093,2@kafka2.your_domain:9093,3@kafka3.your_domain:9093

Tiếp theo, cấu hình địa chỉ lắng nghe và địa chỉ quảng cáo:

properties Copy
listeners=PLAINTEXT://kafka1.your_domain:9092,CONTROLLER://kafka1.your_domain:9093
inter.broker.listener.name=PLAINTEXT
advertised.listeners=PLAINTEXT://kafka1.your_domain:9092

Thiết lập đường dẫn lưu trữ dữ liệu của Kafka dưới đây, bạn nên sử dụng một ổ đĩa mới tách biệt với hệ điều hành:

properties Copy
log.dirs=/opt/data-kafka

Chỉnh sửa các thông số đảm bảo tính sẵn sàng của cụm:

properties Copy
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
transaction.state.log.min.isr=3

Tiếp theo, tạo một ID cho cụm mới:

bash Copy
cd /opt/kafka
bin/kafka-storage.sh random-uuid

Lưu lại giá trị này để khởi tạo cho node 2 và 3. Sau đó, format cho cụm:

bash Copy
cd /opt/kafka
bin/kafka-storage.sh format -t $ID_vừa_tạo -c config/kraft/server.properties

Lặp lại cấu hình cho các node 2 và 3, nhớ thay đổi node.id cho mỗi node.

Tiếp theo, tạo file dịch vụ để chạy Kafka:

bash Copy
nano /etc/systemd/system/kafka.service

Nội dung file kafka.service như sau:

ini Copy
[Unit]
Description=Apache Kafka Server
Documentation=http://kafka.apache.org/documentation.html
[Service]
Type=simple
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal
StandardOutput=append:/var/log/kafka/kafka.log
StandardError=append:/var/log/kafka/kafka.log
User=kafka
Group=kafka
LimitNOFILE=128000
LimitMEMLOCK=infinity
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target

Khởi động dịch vụ Kafka trên các node:

bash Copy
sudo systemctl start kafka

Để kiểm tra trạng thái cụm, sử dụng lệnh CLI:

bash Copy
cd /opt/kafka
bin/kafka-metadata-quorum.sh --bootstrap-controller kafka1.your_domain:9093 describe --status

Kết quả sẽ có dạng như sau:

Copy
ClusterId:              9HfEqOkqTe-gu_TjSlOiUw
LeaderId:               65
LeaderEpoch:            216
HighWatermark:          554531
...

Từ kết quả này, bạn có thể thấy rằng node có ID là 65 đang giữ vai trò leader và cả ba node trong cụm đã kết nối thành công.

Vậy là bạn đã hoàn thành việc cài đặt cụm Kafka sử dụng KRAFT. Nếu có bất kỳ câu hỏi nào liên quan đến quá trình cài đặt, hãy để lại bình luận. Trong bài tiếp theo, mình sẽ giới thiệu cách sử dụng Kafka-UI để quản lý các topic và sử dụng Grafana, Prometheus để giám sát Kafka.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào