Cài đặt Apache Kafka sử dụng Docker Compose

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é!

  Cách thiết lập một dự án Symfony để làm việc với Docker Subdomains

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.

Bài viết gốc được đăng tải tại huongdanjava.com
Có thể bạn quan tâm:
Xem thêm tuyển dụng việc làm IT hấp dẫn trên TopDev