Nhảy tới nội dung
· 4 phút để đọc

Cách cài đặt Kafka đơn giản sử dụng Docker Compose

Ở bài viết trước chúng ta đã cùng tìm hiểu tổng quan về Kafka cũng như kiến trúc tổng thể của nó. Hôm nay chúng ta sẽ tiến hành cài đặt Apache Kafka bằng một trong những cách đơn giản nhất đó chính là sử dụng Docker Compose

Yêu cầu

Trước tiên máy của các bạn phải được cài đặt trước Docker và Docker Compose. Ở những phiên bản sau này, Docker Compose đã được tích hợp sẵn vào trong Docker. Sử dụng câu lệnh sau trong terminal để đảm bảo Docker và Docker Compose đã được cài đặt:

docker --version # Kiểm tra Docker đã được cài chưa
docker-compose --version # Kiểm tra Docker Compose đã được cài chưa

Nếu Docker và Docker Compose đã được cài đặt thì kết quả sẽ tương tự như sau: img.png

Cài đặt Kafka

Đầu tiên tiến hành tạo 1 file tên kafka.yml, file này có thể đặt ở bất kỳ đâu trên thiết bị của bạn. Ở đây mình tiến hạnh tạo 1 folder tên Docker trong thư mục home của mình và tạo file trong thư mục này img_1.png

Tiến hành mở file vừa tạo và khai báo nội dung như sau:

version: '2'
services:
zookeeper:
image: confluentinc/cp-zookeeper:7.3.2
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
kafka:
image: confluentinc/cp-kafka:7.3.2
ports:
- "9092:9092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1

Mở termianl, di chuyển đến thư mục chứa file trên và chạy lệnh sau:

docker-compose -f kafka.yml up -d

Đợi vài phút để docker tiến hành pull các image cần thiết về và khởi chạy. Khi kafka khởi chạy xong ta được kết quả sau: img_2.png

Để chắc chắn rằng Kafka đã chạy thành công, chạy lệnh sau:

docker ps

img_6.png

Kết nối thử đến Kafka

Mình sẽ sử dụng Kafka Tool để kết nối đến Kafka. Đây là một ứng dụng desktop miễn phí cho phép bạn kết nối với Kafka cluster, duyệt qua các topic, xem và gửi message. Nó cung cấp giao diện đồ họa dễ sử dụng. Các bạn có thể tải về phiên bản phù hợp với hệ điều hành của mình tại đây

Sau khi cài đặt xong, tiến hành mở Kafka Tool và nhập các thông tin kết nối

  • Name: tên kết nối, có thể đặt tuỳ ý
  • Bootstrap servers: localhost:9092 img_4.png
  • Nhấn Test, nếu kết nối thành công, ta nhận được thông báo sau: img_3.png
  • Nhấn Yes để lưu kết nối
  • Giao diện sau khi đã kết nối thành công, do chúng ta vừa khởi tạo Kafka, nên các mục như Topic, consumer đang trống img_5.png

Tạo topic trên Kafka

  • Nhấp phải vào mục Topics ở thành menu bên trái của Kafka Tool, chọn Create Topic
  • Nhập các thông tin như tên Topic, số lượng partition, số lượng replica (các khái niệm này các bạn có thể xem lại ở bài viết trước của mình). Sau đó nhấn Add img_7.png
  • Nếu nhận được thông báo như thế này thì đã tạo topic mới thành công img_8.png

Gửi thử message vào Kafka

Chúng ta sẽ tiến hành gửi thử vài messgae vào topic chúng ta vừa tạo bằng công cụ kafka-console-producer

  • Chạy lệnh sau để khởi chạy kafka-console-producer:
docker exec -it <container_id> /bin/kafka-console-producer --bootstrap-server kafka:9092 --topic test-topic

container_id là id của container kafka chúng ta khởi chạy ở bước trên (có thể xem bằng lệnh docker ps) img_9.png

  • Nhập các thử message: hello worldhello kafka img_10.png

  • Quay trở lại Kafka Tool, chọn vào test-topic, nhấn sang tab data, và nhấn nút Retrieve messgaes img_11.png

  • Xuất hiện 2 message chúng ta vừa gửi: img_12.png

  • Tuy nhiên ở cột value, ta thấy giá trị của message đang hiển thị chuỗi HEX chứ không phải các cụm từ hello worldhello kafka mà chúng ta gửi, để có thể hiển thị value ở dạng string, ta chuyển sang tab Properties, điều chỉnh Key , Value trong mục Content Types về thành String img_13.png

  • Quay trở lại tab Data, ta thu được kết quả như sau: img_14.png

Tổng kết

Như vậy chúng ta đã tìm hiểu xong cách cài đặt Kafka sử dụng Docker, cũng như sử dụng công cụ Kafka Tool để theo dõi các topic và message trên Kafka. Cảm ơn các bạn đã theo dõi bài viết.