Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh
Trong bài viết trước, mình đã hướng dẫn các bạn cách cài đặt Apache Kafka trên macOS, việc cài đặt sử dụng Docker Compose sẽ giúp chúng ta nhanh chóng start lên một Apache Kafka server mà không tốn nhiều effort, chỉ cần cài đặt Docker và tập tin docker-compose.yml. Cụ thể như thế nào? Trong bài viết này, mình sẽ hướng dẫn các bạn cách cài đặt Apache Kafka sử dụng Docker Compose các bạn nhé!
Xem thêm các việc làm OOP lương cao trên TopDev
Mình sẽ tạo mới một tập tin docker-compose.yml với Docker Compose version như sau:
version: '3.8'
Chúng ta sẽ khai báo 2 service, một cho Apache Zookeeper và một cho Apache Kafka:
services: zookeeper: kafka:
Vì Apache Kafka muốn chạy được phải có Apache Zookeeper nên mình sẽ khai báo service zookeeper trước.
Chúng ta sẽ sử dụng các Docker Image của Apache Kafka và Apache Zookeeper từ Confluent Platform https://www.confluent.io/ với địa chỉ Docker Hub là https://hub.docker.com/u/confluentinc. Nói nôm na thì Confluent Platform là một mở rộng của Apache Kafka, được xây dựng từ Apache Kafka cùng với các công cụ và service hữu ích khác giúp chúng ta có thể dễ dàng chạy và sử dụng Apache Kafka đó các bạn! Không có Docker Official Image từ Apache Kafka nên chúng ta có thể sử dụng các Docker Images từ Confluent Platform này.
Nội dung của zookeeper service như sau:
zookeeper: image: confluentinc/cp-zookeeper:latest environment: ZOOKEEPER_CLIENT_PORT: 2181 ports: - 2181:2181
ZOOKEEPER_CLIENT_PORT là biến môi trường bắt buộc để định nghĩa port mà client có thể kết nối tới Apache Zookeeper. Trong trường hợp của chúng ta là Apache Kafka đó các bạn! Ở đây, mình cũng expose port 2181 là port mặc định của Apache Zookeeper ra ngoài.
Còn kafka service thì có nội dung như sau:
kafka: image: confluentinc/cp-kafka:latest depends_on: - zookeeper environment: KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:29092 ports: - 29092:29092
KAFKA_ZOOKEEPER_CONNECT được sử dụng để định nghĩa Apache ZooKeeper server mà Apache Kafka sẽ connect tới, còn KAFKA_ADVERTISED_LISTENERS dùng để expose Apache Kafka ra ngoài container để các client có thể connect tới. Đây là những biến môi trường bắt buộc các bạn phải khai báo khi start Docker Container từ cp-kafka Docker Image các bạn nhé!
Chúng ta cũng khai báo networks như sau:
networks: huongdanjava: driver: bridge
Toàn bộ nội dung của tập tin docker-compose.yml như sau:
version: '3.8' services: zookeeper: image: confluentinc/cp-zookeeper:latest environment: ZOOKEEPER_CLIENT_PORT: 2181 ports: - 2181:2181 kafka: image: confluentinc/cp-kafka:latest depends_on: - zookeeper environment: KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:29092 ports: - 29092:29092 networks: huongdanjava: driver: bridge
Nếu bây giờ, các bạn chạy command docker compose up trong thư mục chứa tập tin docker-compose.yml này, các bạn sẽ thấy kết quả như sau:
Bây giờ thì các bạn có thể connect tới Apache Kafka server này để sử dụng rồi.