Apache Kafka là một nền tảng phát trực tuyến miễn phí và mã nguồn mở được sử dụng cho phân tích phát trực tuyến, tích hợp dữ liệu và các ứng dụng quan trọng. So với ActiveMQ và RabbitMQ, Kafka có thông lượng tốt hơn, phân vùng tích hợp, sao chép và khả năng chịu lỗi. Kafka là một tác nhân tin nhắn phân tán có thể xử lý hiệu quả khối lượng lớn thông tin thời gian thực.
CMAK còn được gọi là "Trình quản lý cụm" được sử dụng để quản lý cụm Kafka do Yahoo phát triển. Khi sử dụng CMAK, bạn có thể quản lý nhiều cụm và kiểm tra trạng thái cụm bao gồm chủ đề, người tiêu dùng, offset, broker, phân phối bản sao, phân phối phân vùng và nhiều hơn nữa.
Trong hướng dẫn này, chúng tôi sẽ chỉ cách cài đặt nền tảng phát trực tuyến Apache Kafka với CMAK trên máy chủ CentOS 8.
Sau khi tất cả các gói được cập nhật, hãy cài đặt các phụ thuộc bắt buộc khác bằng lệnh sau lệnh:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Sau khi Java được cài đặt, bạn có thể xác minh phiên bản Java đã cài đặt bằng lệnh sau:
Bạn sẽ nhận được thông báo sau đầu ra:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Tiếp theo, hãy thay đổi thư mục thành kafka-server và tải xuống phiên bản mới nhất của Kafka bằng lệnh sau:
Sau khi tải xuống hoàn tất, hãy giải nén tệp đã tải xuống bằng lệnh sau lệnh:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Đầu tiên, hãy tạo tệp dịch vụ Zookeeper bằng cách sử dụng lệnh sau lệnh:
Thêm các dòng sau:
Lưu và đóng tệp khi bạn hoàn tất.
Tiếp theo, tạo tệp dịch vụ Kafka với nội dung sau lệnh:
Thêm các dòng sau:
Lưu và đóng tệp sau đó tải lại daemon systemd bằng lệnh sau lệnh:
Tiếp theo, khởi động cả hai dịch vụ và cho phép chúng khởi động khi khởi động bằng lệnh sau:
Tiếp theo, xác minh trạng thái của cả hai dịch vụ bằng lệnh sau lệnh:
Bạn sẽ thấy kết quả sau:
Sau khi tải xuống, bạn sẽ cần chỉnh sửa tệp application.conf và xác định máy chủ zookeeper.
Thay đổi các mục sau dòng:
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, tạo một tệp zip để triển khai ứng dụng.
Bạn sẽ thấy đầu ra sau:
Tiếp theo, giải nén tệp zip được tạo ở bước trước bằng lệnh sau lệnh:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Lúc này, CMAK đã được khởi động và lắng nghe trên cổng 9000.
Tiếp theo, bạn sẽ cần cho phép cổng 9000 đi qua firewalld. Bạn có thể thực hiện bằng lệnh sau:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22365%22%3E%3C/svg%3E
Trong màn hình trên, bạn sẽ thấy không có cụm nào khả dụng. Vì vậy, trước tiên bạn cần tạo một cụm mới.
Nhấp vào Cụm = > Thêm Cụm. Bạn sẽ thấy màn hình sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22374%22%3E%3C/svg%3E
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22353%22%3E%3C/svg%3E
Cung cấp tên cụm, máy chủ quản lý vườn thú, các thông tin bắt buộc khác và nhấp vào nút Lưu. Bạn sẽ thấy màn hình sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22361%22%3E%3C/svg%3E
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Bây giờ, hãy vào bảng điều khiển CMAK và nhấp vào Chủ đề. Bạn sẽ thấy Chủ đề mà bạn đã tạo trước đó trên màn hình sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22364%22%3E%3C/svg%3E
Nhấp vào số của Chủ đề. Bạn sẽ thấy chủ đề mới tạo của mình trên màn hình sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22357%22%3E%3C/svg%3E
Bây giờ, hãy nhấp vào tên Chủ đề của bạn. Bạn sẽ thấy tất cả thông tin về chủ đề của mình trong màn hình sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22363%22%3E%3C/svg%3E
CMAK còn được gọi là "Trình quản lý cụm" được sử dụng để quản lý cụm Kafka do Yahoo phát triển. Khi sử dụng CMAK, bạn có thể quản lý nhiều cụm và kiểm tra trạng thái cụm bao gồm chủ đề, người tiêu dùng, offset, broker, phân phối bản sao, phân phối phân vùng và nhiều hơn nữa.
Trong hướng dẫn này, chúng tôi sẽ chỉ cách cài đặt nền tảng phát trực tuyến Apache Kafka với CMAK trên máy chủ CentOS 8.
Điều kiện tiên quyết
- Một máy chủ đang chạy CentOS 8.
- Một mật khẩu gốc được cấu hình cho máy chủ.
Bắt đầu
Trước tiên, bạn nên cập nhật các gói hệ thống lên phiên bản mới nhất. Bạn có thể cập nhật tất cả bằng lệnh sau:
Mã:
dnf update -y
Mã:
dnf install git unzip -y
Cài đặt Java
Kafka dựa trên Java, do đó Java phải được cài đặt trên máy chủ của bạn. Nếu chưa cài đặt, bạn có thể cài đặt bằng lệnh sau:
Mã:
dnf install java-11-openjdk-devel -y
Mã:
java --version
Mã:
openjdk 11.0.8 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-CentOS-0centos8)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-CentOS-0centos8, mixed mode, sharing)
Tải xuống Kafka
Trước khi tải xuống Kafka, hãy tạo một thư mục để lưu trữ Kafka. Bạn có thể tạo nó bằng lệnh sau:
Mã:
mkdir /usr/local/kafka-server
Mã:
cd /usr/local/kafka-server
wget https://downloads.apache.org/kafka/2.6.0/kafka_2.13-2.6.0.tgz
Mã:
tar -xvzf kafka_2.13-2.6.0.tgz --strip 1
Tạo tệp Systemd cho Kafka và Zookeeper
Tiếp theo, bạn sẽ cần tạo tệp dịch vụ systemd để quản lý dịch vụ Zookeeper và Kafka.Đầu tiên, hãy tạo tệp dịch vụ Zookeeper bằng cách sử dụng lệnh sau lệnh:
Mã:
nano /etc/systemd/system/zookeeper.service
Mã:
[Unit]
Description=Apache Zookeeper Server
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
ExecStart=/usr/local/kafka-server/bin/zookeeper-server-start.sh /usr/local/kafka-server/config/zookeeper.properties
ExecStop=/usr/local/kafka-server/bin/zookeeper-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
Tiếp theo, tạo tệp dịch vụ Kafka với nội dung sau lệnh:
Mã:
nano /etc/systemd/system/kafka.service
Mã:
[Unit]
Description=Apache Kafka Server
Documentation=http://kafka.apache.org/documentation.html
Requires=zookeeper.service
After=zookeeper.service
[Service]
Type=simple
Environment="JAVA_HOME=/usr/lib/jvm/jre-11-openjdk"
ExecStart=/usr/local/kafka-server/bin/kafka-server-start.sh /usr/local/kafka-server/config/server.properties
ExecStop=/usr/local/kafka-server/bin/kafka-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
Mã:
systemctl daemon-reload
Mã:
systemctl enable --now zookeeper
systemctl enable --now kafka
systemctl start zookeeper
systemctl start kafka
Mã:
systemctl status zookeeper kafka
Mã:
? zookeeper.service - Apache Zookeeper Server Loaded: loaded (/etc/systemd/system/zookeeper.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2020-08-29 08:48:42 EDT; 30s ago Main PID: 26722 (java) Tasks: 31 (limit: 12523) Memory: 68.8M CGroup: /system.slice/zookeeper.service ??26722 java -Xmx512M -Xms512M -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCIn>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,326] INFO maxSessionTimeout set to 60000 (org.apache.zookeeper.>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,327] INFO Created server with tickTime 3000 minSessionTimeout 6>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,344] INFO Using org.apache.zookeeper.server.NIOServerCnxnFactor>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,348] INFO Configuring NIO connection handler with 10s sessionle>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,355] INFO binding to port 0.0.0.0/0.0.0.0:2181 (org.apache.zook>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,391] INFO zookeeper.snapshotSizeFactor = 0.33 (org.apache.zooke>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,397] INFO Snapshotting: 0x0 to /tmp/zookeeper/version-2/snapsho>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,401] INFO Snapshotting: 0x0 to /tmp/zookeeper/version-2/snapsho>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,431] INFO Using checkIntervalMs=60000 maxPerMinute=10000 (org.a>
Aug 29 08:48:53 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:53,030] INFO Creating new log file: log.1 (org.apache.zookeeper.se>
? kafka.service - Apache Kafka Server Loaded: loaded (/etc/systemd/system/kafka.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2020-08-29 08:48:50 EDT; 22s ago Docs: http://kafka.apache.org/documentation.html Main PID: 27100 (java) Tasks: 66 (limit: 12523) Memory: 306.4M CGroup: /system.slice/kafka.service ??27100 /usr/lib/jvm/jre-11-openjdk/bin/java -Xmx1G -Xms1G -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancy>
Aug 29 08:48:56 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:56,733] INFO [Transaction Marker Channel Manager 0]: Starting (kafka.c>
Aug 29 08:48:56 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:56,747] INFO [ExpirationReaper-0-AlterAcls]: Starting (kafka.server.De>
Aug 29 08:48:56 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:56,846] INFO [/config/changes-event-process-thread]: Starting (kafka.c>
Aug 29 08:48:56 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:56,877] INFO [SocketServer brokerId=0] Starting socket server acceptor>
Aug 29 08:48:57 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:57,236] INFO [SocketServer brokerId=0] Started data-plane acceptor and>
Aug 29 08:48:57 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:57,237] INFO [SocketServer brokerId=0] Started socket server acceptors>
Aug 29 08:48:57 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:57,246] INFO Kafka version: 2.6.0 (org.apache.kafka.common.utils.AppIn>
Aug 29 08:48:57 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:57,246] INFO Kafka commitId: 62abe01bee039651 (org.apache.kafka.common>
Cài đặt và cấu hình CMAK
Tiếp theo, bạn sẽ cần cài đặt CMAK để quản lý cụm Apache Kafka. Bạn có thể tải xuống từ kho lưu trữ Git bằng lệnh sau:
Mã:
cd /root
git clone https://github.com/yahoo/CMAK.git
Mã:
nano ~/CMAK/conf/application.conf
Mã:
cmak.zkhosts="localhost:2181"
Mã:
cd ~/CMAK/
./sbt clean dist
Mã:
model contains 640 documentable templates
[info] Main Scala API documentation successful.
[info] LESS compiling on 1 source(s)
[success] All package validations passed
[info] Your package is ready in /root/CMAK/target/universal/cmak-3.0.0.5.zip
[success] Total time: 150 s (02:30), completed 29-Aug-2020, 8:55:40 AM
Mã:
cd ~/CMAK/target/universal
unzip cmak-3.0.0.5.zip
Khởi động Dịch vụ CMAK
Bây giờ, hãy thay đổi thư mục thành ~/CMAK/target/universal/cmak-3.0.0.5 và khởi động dịch vụ CMAK bằng lệnh sau:
Mã:
cd ~/CMAK/target/universal/cmak-3.0.0.5
bin/cmak
Cấu hình SELinux và Tường lửa
Theo mặc định, SELinux được bật trong CentOS 8. Vì vậy, bạn sẽ cần cấu hình SELinux cho CMAK. Bạn có thể cấu hình nó bằng lệnh sau:
Mã:
chcon -t httpd_sys_rw_content_t ~/CMAK/target/universal/cmak-3.0.0.5 -R
setsebool -P httpd_can_network_connect 1
Mã:
firewall-cmd --permanent --zone public --add-port 9000/tcp
firewall-cmd --reload
Truy cập Giao diện người dùng web CMAK
Bây giờ, hãy mở trình duyệt web và truy cập CMAK bằng URL http://your-server-ip:9000. Bạn sẽ thấy trang sau:data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22365%22%3E%3C/svg%3E
Trong màn hình trên, bạn sẽ thấy không có cụm nào khả dụng. Vì vậy, trước tiên bạn cần tạo một cụm mới.
Nhấp vào Cụm = > Thêm Cụm. Bạn sẽ thấy màn hình sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22374%22%3E%3C/svg%3E
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22353%22%3E%3C/svg%3E
Cung cấp tên cụm, máy chủ quản lý vườn thú, các thông tin bắt buộc khác và nhấp vào nút Lưu. Bạn sẽ thấy màn hình sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22361%22%3E%3C/svg%3E
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Thêm chủ đề đầu tiên của bạn trên Kafka
Tiếp theo, bạn sẽ cần tạo một chủ đề trên Kafka để kiểm tra chức năng. Để thực hiện, hãy mở một thiết bị đầu cuối khác, đổi thư mục thành kafka-server và tạo chủ đề mới bằng cách chỉ định tên chủ đề và hệ số sao chép bằng cách chạy lệnh sau:
Mã:
cd /usr/local/kafka-server
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic MyNewTopic
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22364%22%3E%3C/svg%3E
Nhấp vào số của Chủ đề. Bạn sẽ thấy chủ đề mới tạo của mình trên màn hình sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22357%22%3E%3C/svg%3E
Bây giờ, hãy nhấp vào tên Chủ đề của bạn. Bạn sẽ thấy tất cả thông tin về chủ đề của mình trong màn hình sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22363%22%3E%3C/svg%3E