Cách cài đặt Kafka đơn giản sử dụng Docker Compose
Chúng mình có tạo Group cho các bạn cùng chia sẻ và học hỏi về thiết kế hệ thống nha 😄😄😄
Các bạn tham gia để gây dựng cộng đồng System Design Việt Nam thật lớn mạnh nhé 😍😍😍
Cộng Đồng System Design Việt Nam: https://www.facebook.com/groups/sydexa
Kênh TikTok: https://www.tiktok.com/@sydexa.com
Ở 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:
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
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:
Để chắc chắn rằng Kafka đã chạy thành công, chạy lệnh sau:
docker ps
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
- Nhấn
Test
, nếu kết nối thành công, ta nhận được thông báo sau: - 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
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ọnCreate 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
- Nếu nhận được thông báo như thế này thì đã tạo topic mới thành công
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
)
-
Nhập các thử message:
hello world
vàhello kafka
-
Quay trở lại Kafka Tool, chọn vào test-topic, nhấn sang tab
data
, và nhấn nútRetrieve messgaes
-
Xuất hiện 2 message chúng ta vừa gửi:
-
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 world
vàhello kafka
mà chúng ta gửi, để có thể hiển thị value ở dạng string, ta chuyển sang tabProperties
, điều chỉnhKey
,Value
trong mụcContent Types
về thànhString
-
Quay trở lại tab
Data
, ta thu được kết quả như sau:
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.
Lời nhắn
Chúng mình có tạo Group cho các bạn cùng chia sẻ và học hỏi về thiết kế hệ thống nha 😄😄😄
Các bạn tham gia để gây dựng cộng đồng System Design Việt Nam thật lớn mạnh nhé 😍😍😍
Cộng Đồng System Design Việt Nam: https://www.facebook.com/groups/sydexa
Kênh TikTok: https://www.tiktok.com/@sydexa.com
All rights reserved