Triển khai Apache Kafka với Docker Compose

Trien Khai Apache Kafka Voi Docker Compose



Docker là một phần mềm mã nguồn mở và miễn phí đã thay đổi hoàn toàn cách các nhà phát triển đóng gói và triển khai các ứng dụng. Docker cho phép chúng tôi đóng gói một ứng dụng và tất cả các phụ thuộc cần thiết trong một thực thể duy nhất. Điều này có nghĩa là chúng tôi có thể phân phối gói và môi trường có thể được sao chép trong hầu hết mọi máy mà không có các gói xung đột hoặc thiếu.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách chúng ta có thể triển khai cụm Apache Kafka bằng cách sử dụng docker. Điều này cho phép chúng tôi sử dụng hình ảnh docker được cung cấp để nhanh chóng tạo ra một cụm Kafka trong hầu hết mọi môi trường.

Chúng ta hãy bắt đầu với những điều cơ bản và thảo luận xem Kafka là gì.







Apache Kafka là gì?

Apache Kafka là một hệ thống nhắn tin đăng ký xuất bản miễn phí, mã nguồn mở, có khả năng mở rộng cao, được phân phối và có khả năng chịu lỗi. Nó được thiết kế để xử lý luồng dữ liệu có khối lượng lớn, thông lượng cao và thời gian thực, làm cho nó phù hợp với nhiều trường hợp sử dụng bao gồm tổng hợp nhật ký, phân tích thời gian thực và kiến ​​trúc hướng sự kiện.



Kafka dựa trên kiến ​​trúc phân tán cho phép nó xử lý lượng lớn dữ liệu trên nhiều máy chủ. Nó sử dụng mô hình đăng ký xuất bản trong đó nhà sản xuất gửi tin nhắn đến các chủ đề và người tiêu dùng đăng ký để nhận chúng. Điều này cho phép giao tiếp tách rời giữa nhà sản xuất và người tiêu dùng, mang lại khả năng mở rộng và tính linh hoạt cao.



Docker Compose là gì

Docker soạn đề cập đến một plugin hoặc công cụ docker để xác định và chạy các ứng dụng nhiều vùng chứa. Docker soạn chúng tôi để xác định cấu hình vùng chứa trong tệp YAML. Tệp cấu hình bao gồm các thông số kỹ thuật của vùng chứa, chẳng hạn như dịch vụ, mạng và ổ đĩa được ứng dụng yêu cầu.





Sử dụng lệnh docker-compose, chúng ta có thể tạo và bắt đầu nhiều vùng chứa bằng một lệnh.

Cài đặt Docker và Docker Compose

Bước đầu tiên là đảm bảo rằng bạn đã cài đặt docker trên máy cục bộ của mình. Bạn có thể kiểm tra các tài nguyên sau để tìm hiểu thêm:



  • https://linuxhint.com/install_configure_docker_ubuntu/
  • https://linuxhint.com/install-docker-debian/
  • https://linuxhint.com/install_docker_debian_10/
  • https://linuxhint.com/install-docker-ubuntu-22-04/
  • https://linuxhint.com/install-docker-on-pop_os/
  • https://linuxhint.com/how-to-install-docker-desktop-windows/
  • https://linuxhint.com/install-use-docker-centos-8/
  • https://linuxhint.com/install_docker_on_raspbian_os/

Khi viết hướng dẫn này, việc cài đặt trình soạn thảo docker yêu cầu cài đặt máy tính để bàn Docker trên máy mục tiêu của bạn. Do đó, việc cài đặt trình soạn thảo docker dưới dạng một đơn vị độc lập không được chấp nhận.

Khi chúng tôi cài đặt Docker, chúng tôi có thể định cấu hình tệp YAML. Tệp này chứa tất cả các chi tiết mà chúng ta cần để tạo cụm Kafka bằng bộ chứa docker.

Thiết lập Docker-Compose.YAML

Tạo docker-compose.yaml và chỉnh sửa bằng trình soạn thảo văn bản yêu thích của bạn:

$ chạm docker-compose.yaml
$ vim docker-compose.yaml

Tiếp theo, thêm tệp cấu hình docker như sau:

phiên bản : '3'
dịch vụ :
người trông coi vườn thú :
hình ảnh : bitnam / người trông coi vườn thú : 3,8
cổng :
- '2181:2181'
tập :
- 'zookeeper_data:/bitnami'
môi trường :
- ALLOW_ANONYMOUS_LOGIN = Đúng
kafka :
hình ảnh : docker. cái này / bitnam / kafka : 3.3
cổng :
- '9092:9092'
tập :
- 'kafka_data:/bitnami'
môi trường :
- KAFKA_CFG_ZOOKEEPER_CONNECT = người trông coi vườn thú : 2181
- ALLOW_PLAINTEXT_LISTENER = Đúng
phụ thuộc :
- người trông coi vườn thú
tập :
người quản lý vườn thú_data :
tài xế : địa phương
kafka_data :
tài xế : địa phương

Tệp docker mẫu thiết lập cụm Zookeeper và cụm Kafka trong đó cụm Kafka được kết nối với dịch vụ Zookeeper để phối hợp. Tệp này cũng định cấu hình các cổng và biến môi trường cho từng dịch vụ để cho phép liên lạc và truy cập vào các dịch vụ.

Chúng tôi cũng thiết lập các ổ đĩa được đặt tên để duy trì dữ liệu của các dịch vụ ngay cả khi các vùng chứa được khởi động lại hoặc tạo lại.

Hãy để chúng tôi chia nhỏ tệp trước đó thành các phần đơn giản:

Chúng tôi bắt đầu với dịch vụ Zookeeper bằng hình ảnh bitnami/zookeeper:3.8. Hình ảnh này sau đó ánh xạ cổng 2181 trên máy chủ sang cổng 2181 trên vùng chứa. Chúng tôi cũng đặt biến môi trường ALLOW_ANONYMOUS_LOGIN thành “có”. Cuối cùng, chúng tôi đặt âm lượng mà dịch vụ lưu trữ dữ liệu dưới dạng âm lượng zookeeper_data.

Khối thứ hai xác định chi tiết để thiết lập dịch vụ Kafka. Trong trường hợp này, chúng tôi sử dụng hình ảnh docker.io/bitnami/kafka:3.3 để ánh xạ cổng máy chủ 9092 tới cổng vùng chứa 9092. Tương tự, chúng tôi cũng xác định biến môi trường KAFKA_CFG_ZOOKEEPER_CONNECT và đặt giá trị của nó thành địa chỉ của Zookeeper như được ánh xạ tới cổng 2181. Biến môi trường thứ hai mà chúng tôi xác định trong phần này là biến môi trường ALLOW_PLAINTEXT_LISTENER. Đặt giá trị của biến môi trường này thành “có” cho phép lưu lượng truy cập không an toàn đến cụm Kafka.

Cuối cùng, chúng tôi cung cấp dung lượng mà dịch vụ Kafka lưu trữ dữ liệu của nó.

Để đảm bảo rằng docker định cấu hình ổ đĩa cho Zookeeper và Kafka, chúng ta cần xác định chúng như được hiển thị trong phần ổ đĩa. Điều này thiết lập khối lượng zookeeper_data và kafka_data. Cả hai tập đều sử dụng trình điều khiển cục bộ, nghĩa là dữ liệu được lưu trữ trong máy chủ.

Ở đó bạn có nó! Một tệp cấu hình đơn giản cho phép bạn tạo vùng chứa Kafka bằng docker theo các bước đơn giản.

Chạy vùng chứa

Để đảm bảo rằng docker đang chạy, chúng ta có thể chạy vùng chứa từ tệp YAML bằng lệnh sau:

$ sudo docker soạn lên

Lệnh sẽ định vị tệp cấu hình YAML và chạy vùng chứa với các giá trị được chỉ định:

Phần kết luận

Bây giờ bạn đã học cách bạn có thể định cấu hình và chạy Apache Kafka từ docker soạn tệp cấu hình YAML.