Cách cài đặt Apache Kafka trên Rocky Linux

theanh

Administrator
Nhân viên
Apache Kafka là kho dữ liệu phân tán để xử lý dữ liệu phát trực tuyến theo thời gian thực. Apache Kafka được phát triển bởi Apache Software Foundation và được viết bằng Java và Scala. Apache Kafka được sử dụng để xây dựng các đường ống dữ liệu phát trực tuyến theo thời gian thực và các ứng dụng thích ứng với luồng dữ liệu, đặc biệt là đối với các ứng dụng cấp doanh nghiệp và các ứng dụng quan trọng. Đây là một trong những nền tảng luồng dữ liệu phổ biến nhất được hàng nghìn công ty sử dụng cho các đường ống dữ liệu hiệu suất cao, phân tích phát trực tuyến và tích hợp dữ liệu.

Apache Kafka kết hợp nhắn tin, lưu trữ và xử lý luồng tại một nơi. Cho phép người dùng thiết lập luồng dữ liệu mạnh mẽ và hiệu suất cao để thu thập, xử lý và phát trực tuyến dữ liệu theo thời gian thực. Nó được sử dụng trong các ứng dụng phân tán hiện đại với khả năng mở rộng để xử lý hàng tỷ sự kiện được truyền phát.

Trong hướng dẫn này, chúng ta sẽ cài đặt Apache Kafka trên máy chủ Rocky Linux và tìm hiểu cách sử dụng cơ bản của Kafka như một nhà môi giới tin nhắn để truyền phát dữ liệu thông qua plugin Kafka.

Điều kiện tiên quyết​

Để làm theo hướng dẫn này, bạn sẽ cần các yêu cầu sau:
  • Máy chủ Rocky Linux - Bạn có thể sử dụng Rocky Linux v8 hoặc v9.
  • Người dùng không phải root có quyền sudo root.

Cài đặt Java OpenJDK​

Apache Kafka là một ứng dụng dựa trên Java. Để cài đặt Kafka, trước tiên bạn sẽ cài đặt Java trên hệ thống của mình. Tại thời điểm viết bài này, phiên bản Apache Kafka mới nhất yêu cầu ít nhất Java OpenJDK v11.

Trong bước đầu tiên, bạn sẽ cài đặt Java OpenJDK 11 từ kho lưu trữ Rocky Linux chính thức.

Chạy lệnh dnf bên dưới để cài đặt Java OpenJDK 11 vào hệ thống Rocky Linux của bạn.
Mã:
sudo dnf install java-11-openjdk
Khi được nhắc xác nhận cài đặt, hãy nhập y và nhấn ENTER để tiếp tục.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22236%22%3E%3C/svg%3E


Sau khi Java được cài đặt, hãy xác minh phiên bản Java bằng lệnh sau. Bạn sẽ thấy Java OpenJDK 11 đã được cài đặt trên hệ thống Rocky Linux của bạn.
Mã:
java version

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22113%22%3E%3C/svg%3E


Bây giờ Java đã được cài đặt, tiếp theo bạn sẽ bắt đầu cài đặt Apache Kafka.

Tải xuống Apache Kafka​

Apache Kafka cung cấp nhiều gói nhị phân cho nhiều hệ điều hành, bao gồm Linux/Unix. Trong bước này, bạn sẽ tạo một người dùng hệ thống chuyên dụng mới cho Kafka, tải xuống gói nhị phân Kafka và cấu hình cài đặt Apache Kafka.

Chạy lệnh sau để tạo một người dùng hệ thống mới có tên là 'kafka'. Lệnh này sẽ tạo một người dùng hệ thống mới cho Kafka với thư mục gốc mặc định là '/opt/kafka', thư mục này sẽ được sử dụng làm thư mục cài đặt Kafka.
Mã:
sudo useradd -r -d /opt/kafka -s /usr/sbin/nologin kafka
Bây giờ hãy di chuyển thư mục làm việc của bạn đến '/opt'. Sau đó, tải xuống gói nhị phân Apache Kafka thông qua lệnh curl bên dưới. Bây giờ bạn sẽ thấy tệp 'kafka.tar.gz'.
Mã:
cd /opt
sudo curl -fsSLo kafka.tgz https://downloads.apache.org/kafka/3.3.1/kafka_2.12-3.3.1.tgz

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22124%22%3E%3C/svg%3E


Giải nén tệp 'kafka.tar.gz' thông qua lệnh tar và đổi tên thư mục đã giải nén '/opt/kafka'.
Mã:
tar -xzf kafka.tgz
sudo mv kafka_2.12-3.3.1 /opt/kafka
Tiếp theo, hãy thay đổi quyền sở hữu thư mục '/opt/kafka' thành người dùng 'kafka' thông qua lệnh chmod bên dưới.
Mã:
sudo chown -R kafka:kafka /opt/kafka
Sau đó, hãy tạo một thư mục nhật ký mới cho Apache Kafka. Sau đó, chỉnh sửa cấu hình mặc định 'server.properties' thông qua trình chỉnh sửa nano.
Mã:
sudo -u kafka mkdir -p /opt/kafka/logs
sudo -u kafka nano /opt/kafka/config/server.properties
Thư mục nhật ký Kafka sẽ được sử dụng để lưu trữ nhật ký Apache Kafka và bạn phải xác định thư mục nhật ký trên sertver.properties cấu hình Kakfka.

Bỏ chú thích tùy chọn 'log.dirs' và thay đổi giá trị thành '/opt/kafka/logs'.
Mã:
# logs configuration for Apache Kafka
log.dirs=/opt/kafka/logs
Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22220%22%3E%3C/svg%3E


Bây giờ bạn đã hoàn tất cài đặt và cấu hình cơ bản của Apache Kafka. Tiếp theo, bạn sẽ thiết lập và chạy Apache Kafka dưới dạng dịch vụ systemd.

Chạy Kafka dưới dạng dịch vụ Systemd​

Gói Apache Kafka bao gồm một ứng dụng khác là Zookeeper được sử dụng để tập trung các dịch vụ và duy trì bầu cử bộ điều khiển Kafka, cấu hình chủ đề và ACL (Danh sách kiểm soát truy cập) cho cụm Apache Kafka.

Để chạy Apache Kafka, trước tiên bạn phải chạy Zookeeper trên hệ thống của mình. Và trong bước này, bạn sẽ tạo một tệp dịch vụ systemd mới cho cả Zookeeper và Apache Kafka. Cả hai dịch vụ cũng sẽ chạy dưới cùng một người dùng 'kafka'.

Tạo một tệp dịch vụ mới cho Zookeeper '/etc/systemd/system/zookeeper.service' bằng lệnh sau.
Mã:
sudo nano /etc/systemd/system/zookeeper.service
Thêm cấu hình vào tệp.
Mã:
[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target

[Service]
Type=simple
User=kafka
ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target
Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.

Tiếp theo, tạo tệp dịch vụ mới cho Apache Kafka '/etc/systemd/system/kafka.service' bằng lệnh bên dưới.
Mã:
sudo nano /etc/systemd/system/kafka.service
Thêm cấu hình sau vào tệp. Bạn có thể thấy trong phần '[Unit]' rằng dịch vụ Kafka yêu cầu 'zookeeper.service' phải chạy trước và luôn chạy sau 'zookeeper.service'.
Mã:
[Unit]
Requires=zookeeper.service
After=zookeeper.service

[Service]
Type=simple
User=kafka
ExecStart=/bin/sh -c '/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties > /opt/kafka/logs/start-kafka.log 2>&1'
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target
Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22231%22%3E%3C/svg%3E


Tiếp theo, chạy lệnh systemctl sau để tải lại trình quản lý systemd và áp dụng các dịch vụ mới.
Mã:
sudo systemctl daemon-reload
Bây giờ hãy khởi động các dịch vụ zookeeper và kafka bằng cách sử dụng lệnh sau lệnh.
Mã:
sudo systemctl start zookeeper
sudo systemctl start kafka
Cho phép cả dịch vụ kafka và zookeeper chạy tự động khi khởi động hệ thống thông qua lệnh systemctl bên dưới.
Mã:
sudo systemctl enable zookeeper
sudo systemctl enable kafka
Cuối cùng, hãy xác minh cả dịch vụ zookeeper và kafka bằng lệnh bên dưới lệnh.
Mã:
sudo systemctl status zookeeper
sudo systemctl status kafka
Trong đầu ra bên dưới, bạn có thể thấy trạng thái hiện tại của dịch vụ zookeeper đang chạy và cũng được bật.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22188%22%3E%3C/svg%3E


Và bên dưới là trạng thái dịch vụ kafka, đang chạy và cũng được bật.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22212%22%3E%3C/svg%3E


Bây giờ bạn đã hoàn tất cài đặt Apache Kafka và nó đã hoạt động. tiếp theo, bạn sẽ tìm hiểu cách sử dụng cơ bản của Apache Kafka như một trình môi giới tin nhắn để tạo tin nhắn và bạn cũng sẽ tìm hiểu cách sử dụng plugin Kafka để truyền phát dữ liệu theo thời gian thực.

Hoạt động cơ bản sử dụng Kafka Console Producer và Consumer​

Trước khi bắt đầu, tất cả các lệnh sẽ được sử dụng cho ví dụ này đều được cung cấp bởi gói Kafka có sẵn trong thư mục '/opt/kafka/bin'.

Trong bước này, bạn sẽ tìm hiểu cách tạo và liệt kê các chủ đề Kafka, khởi động producer và chèn dữ liệu, truyền phát dữ liệu qua tập lệnh consumer và cuối cùng, bạn sẽ dọn dẹp môi trường của mình bằng cách xóa chủ đề Kafka.

Chạy lệnh sau để tạo một chủ đề Kafka mới. Bạn sẽ sử dụng tập lệnh 'kafka-topics.sh' để tạo một chủ đề mới với tên 'TestTopic' với một bản sao và phân vùng.
Mã:
sudo -u kafka /opt/kafka/bin/kafka-topics.sh \
--create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic TestTopic
Bây giờ hãy chạy lệnh sau để xác minh danh sách các chủ đề trên Kafka của bạn. Bạn sẽ thấy 'TestTopic' được tạo trên máy chủ Kafka của bạn.
Mã:
sudo -u kafka /opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22133%22%3E%3C/svg%3E


Tiếp theo, để tạo tin nhắn, bạn có thể sử dụng tập lệnh 'kafka-console-producser.sh' rồi chèn dữ liệu sẽ được xử lý vào đó.

Chạy lệnh sau để khởi động Kafka Console Producer và chỉ định chủ đề cho 'TestTopic'.
Mã:
sudo -u kafka /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TestTopic
Sau khi bạn có Kafka Console Producer, hãy nhập bất kỳ thông báo nào sẽ được xử lý.

Tiếp theo, mở phiên thiết bị đầu cuối mới và đăng nhập vào máy chủ. Sau đó, mở Kafka Console Consumer thông qua tập lệnh 'kafka-conosle-consumer.sh'.

Chạy lệnh bên dưới để khởi động kafka Console Consumer và chỉ định chủ đề là 'TestTopic'.
Mã:
sudo -u kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic TestTopic --from-beginning
Trong ảnh chụp màn hình bên dưới, bạn có thể thấy tất cả các tin nhắn từ Kafka Console Producer được xử lý đến Consumer Console. Bạn cũng có thể nhập các tin nhắn khác trên Console Producer và tin nhắn sẽ tự động được tiếp tục và hiển thị trên màn hình Console Consumer.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22239%22%3E%3C/svg%3E


Bây giờ hãy nhấn Ctrl+c để thoát khỏi cả Kafka Console Producer và Kafka Console Consumer.

Để dọn dẹp môi trường Kafka của bạn, bạn có thể xóa và gỡ bỏ 'TestTopic' thông qua lệnh sau lệnh.
Mã:
sudo -u kafka /opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic TestTopic

Truyền dữ liệu bằng Plugin Kafka Connect​

Apache Kafka cung cấp nhiều plugin có thể được sử dụng để truyền dữ liệu từ nhiều nguồn. Các plugin thư viện Kafka bổ sung có sẵn theo mặc định trong thư mục '/opt/kafka/libs', bạn phải bật plugin kafka thông qua tệp cấu hình '/opt/kafka/config/connect-standalone.properties'. Trong trường hợp này, đối với chế độ độc lập Kafka.

Chạy lệnh sau để chỉnh sửa tệp cấu hình Kafka '/opt/kafka/config/connect-standalone.properties'.
Mã:
sudo -u kafka nano /opt/kafka/config/connect-standalone.properties
Bỏ chú thích dòng 'plugin.path' và thay đổi giá trị thành thư mục thư viện của plugin '/opt/kakfa/libs'.
Mã:
plugin.path=/opt/kafka/libs
Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.

Tiếp theo, chạy lệnh sau để tạo tệp mới '/opt/kafka/test.txt' sẽ được sử dụng làm nguồn dữ liệu cho Kafka stream.
Mã:
sudo -u kafka echo -e "Test message from file\nTest using Kafka connect from file" > /opt/kafka/test.txt
Bây giờ hãy chạy lệnh sau để khởi động Kafka Consumer ở chế độ độc lập với các tệp cấu hình 'connect-file-source.properties' và 'connect-file-sink.properties'.

Lệnh và cấu hình này là ví dụ mặc định của luồng dữ liệu Kafka với tệp nguồn 'test.txt' mà bạn vừa tạo. Ví dụ này cũng sẽ tự động tạo một chủ đề mới 'connect-test' mà bạn có thể truy cập thông qua Kafka Console Consumer.
Mã:
cd /opt/kafka
sudo -u kafka /opt/kafka/bin/connect-standalone.sh config/connect-standalone.properties config/connect-file-source.properties config/connect-file-sink.properties
Bây giờ, hãy mở một phiên terminal khác và chạy lệnh sau để khởi động Kafka Console Consumer. Ngoài ra, hãy chỉ định chủ đề là 'connect-test'. Bạn sẽ thấy thông báo từ tệp 'test.txt'.
Mã:
sudo -u kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic connect-test --from-beginning
Bây giờ bạn có thể cập nhật tệp 'test.txt' và các thông báo mới sẽ tự động được xử lý và truyền phát trên Kafka Console Consumer.

Chạy lệnh sau để cập nhật tệp 'test.txt' bằng tin nhắn.
Mã:
sudo -u kafka echo "Another test message from file test.txt" >> test.txt
Trong đầu ra sau, bạn có thể thấy các tin nhắn mới được Kafka tự động xử lý khi có thay đổi trên tệp 'test.txt'. Bây giờ bạn đã hoàn tất việc sử dụng cơ bản plugin Kafka connect để truyền phát tin nhắn qua tệp.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22152%22%3E%3C/svg%3E

Kết luận​

Trong suốt hướng dẫn này, bạn đã học cách cài đặt Apache Kafka trên hệ thống Rocky Linux. Bạn cũng đã học cách sử dụng cơ bản Kafka Producer Console để tạo và xử lý tin nhắn và Kafka Consumer để nhận tin nhắn. Cuối cùng, bạn cũng đã học cách bật plugin Kafka và sử dụng Kafka Connect Plugin để truyền phát tin nhắn theo thời gian thực từ một tệp.
 
Back
Bên trên