- vừa được xem lúc

[Kafka] - Install Kafka cluter on local using Docker compose

0 0 45

Người đăng: TheLight

Theo Viblo Asia

Bài viết này mình sẽ hướng dẫn cài đặt Kafka ở local. Cài đặt một cụm Kafka với zookeeper và nhiều Brokers không dễ. Docker là một giải pháp tuyệt vời trong một số trường hợp. Và dưới đây là một file docker-compose.yml (tiền điều kiện là mọi người đã biết về docker và docker-compose nhé)

version: '3' services: zoo: image: zookeeper:3.4.9 hostname: zoo ports: - "2181:2181" environment: ZOO_MY_ID: 1 ZOO_PORT: 2181 ZOO_SERVERS: server.1=zoo:2888:3888 volumes: - ./zk-single-kafka-multiple/zoo/data:/data - ./zk-single-kafka-multiple/zoo/datalog:/datalog kafka1: image: confluentinc/cp-kafka:5.3.0 hostname: kafka1 ports: - "9091:9091" environment: KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER_INTERNAL://kafka1:19091,LISTENER_DOCKER_EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9091 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER_INTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL:PLAINTEXT KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER_INTERNAL KAFKA_ZOOKEEPER_CONNECT: "zoo:2181" KAFKA_BROKER_ID: 1 KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO" volumes: - ./zk-single-kafka-multiple/kafka1/data:/var/lib/kafka/data depends_on: - zoo kafka2: image: confluentinc/cp-kafka:5.3.0 hostname: kafka2 ports: - "9092:9092" environment: KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER_INTERNAL://kafka2:19092,LISTENER_DOCKER_EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9092 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER_INTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL:PLAINTEXT KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER_INTERNAL KAFKA_ZOOKEEPER_CONNECT: "zoo:2181" KAFKA_BROKER_ID: 2 KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO" volumes: - ./zk-single-kafka-multiple/kafka2/data:/var/lib/kafka/data depends_on: - zoo kafka3: image: confluentinc/cp-kafka:5.3.0 hostname: kafka3 ports: - "9093:9093" environment: KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER_INTERNAL://kafka3:19093,LISTENER_DOCKER_EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9093 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER_INTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL:PLAINTEXT KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER_INTERNAL KAFKA_ZOOKEEPER_CONNECT: "zoo:2181" KAFKA_BROKER_ID: 3 KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO" volumes: - ./zk-single-kafka-multiple/kafka3/data:/var/lib/kafka/data depends_on: - zoo manager: image: sheepkiller/kafka-manager ports: - 9000:9000 environment: - ZK_HOSTS=zoo:2181 depends_on: - zoo

Tạo một thư mục trống và tạo file docker-compos.yml. Sao chép nội dung trên và dán nội dung đó vào file vừa tạo. Tiếp theo sử dụng lệnh dưới đây để khởi động và chạy toàn bộ cụm kafka. Docker compose sẽ tạo ra 1 zookeper, 3 kafka-brokers và 1 kafka-manager. Nếu chạy lần đầu có thể sẽ mất vài phút để pull docker image.

docker-compose up

Tạo cluster

Xem thông tin cluster

Khi cluster được tạo, mặc định nó sẽ có 2 Topics. Đây là những internal topic của Kafka.

Tạo topic

Tạo một topic với 3 partitions và 2 replicaset

Xem thông tin topic vừa tạo

Ở đây có 3 brocker và 3 partitions cho first-topic. Các partion là 0, 1, 2. Mỗi brocker có 2 partitions. Như mọi người để ý Partition 0 ở trong brocker 1 và brocker 2. Tương tự các partition khác được nhân bản trong nhiều brocker. Nếu có bất ký brocker nào down (die) thì 2 brocker khác vẫn có thể phục vụ tất cả các partition cho Topic.

Mỗi topic có một Leader. Nếu chúng ta terminal 1 kafka-brocker thì một Leader mới sẽ được chọn để thay thế.

Terminal 1 kafka-brocker

docker-compose stop kafka2

Dừng các dịch vụ kafka

docker-compose down

Tổng kết

Và trên đây là một số cài đặt nhanh một cụm Kafka. Hi vọng bài viết hữu ịch với mọi người.

Mọi người có thể tìm hiểu các bài viết liên quan tại đây:

Một số bài viết tham khảo thêm:

Nguồn: https://thenewstack.wordpress.com/2021/11/24/kafka-install-kafka-cluter-on-local-using-docker-compose/

Follow me: thenewstack.wordpress.com

Bình luận

Bài viết tương tự

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 396

- vừa được xem lúc

Phần 1: Giới thiệu về Kubernetes

Kubernetes là gì. Trang chủ: https://kubernetes.io/. Ai cần Kubernetes.

0 0 100

- vừa được xem lúc

Docker: Chưa biết gì đến biết dùng (Phần 1- Lịch sử)

1. Vì sao nên sử dụng. . .

0 0 104

- vừa được xem lúc

Docker - những kiến thức cơ bản phần 1

Giới thiệu. Nếu bạn đang làm ở một công ty công nghệ thông tin, chắc rằng bạn đã được nghe nói về Docker.

0 0 78

- vừa được xem lúc

Docker: Chưa biết gì đến biết dùng (Phần 2 - Dockerfile)

1. Mở đầu.

0 0 67

- vừa được xem lúc

Docker: Chưa biết gì đến biết dùng (Phần 3: Docker-compose)

1. Mở đầu. . .

0 0 121