76c100082b07abd6ecb748931263a9f5.png

在当前微服务横行, 研发提速的大环境下, 除了单测对单个方法的逻辑做验证外, 在本机环境能正常运行, 减少三方环境的依赖也是提效的一个重要环节.

而对kafka的依赖更是常见, 本文就总结下本机docker环境下的kafka服务运行.

本文会介绍两种方式:

(一) 基于docker的kafka镜像服务

(二) 基于docker-compose的kafka镜像服务

一. 基于docker的kafka镜像服务

1. 启动zookeeper镜像, 并将镜像命名为zookeeper

docker run -d --name zookeeper -p 2181:2181 zookeeper:3.4.14

查看zookeeper启动状态

docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                  NAMES569ba23c3038        zookeeper           "/docker-entrypoint.…"   12 seconds ago      Up 9 seconds        2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp   zookeeper

2. 查看zookeeper 容器IP元数据:IPAddress, 为后面启动kafka时做准备.

docker inspect zookeeper"NetworkSettings": {           ..."IPAddress": "172.17.0.2",           ...        }

3. 启动kafka容器

需要配置一下两个环境变量

配置zookeeperIP地址, 值为zookeeper元数据IPAddress对应值

KAFKA_ZOOKEEPER_CONNECT

配置主机IP地址

KAFKA_ADVERTISED_HOST_NAME

启动kafka容器

docker run -d --name kafka -p 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=172.17.0.2:2181 --env KAFKA_ADVERTISED_HOST_NAME=192.168.3.201 --env KAFKA_ADVERTISED_PORT=9092  wurstmeister/kafka:latest

4. 测试

进入kafka容器, 需根据情况修改容器ID

docker exec -it 157 bash

进入Kafka bin所在目录

cd /opt/kafka/bin

查看topic列表

kafka-topics.sh --list --zookeeper 172.17.0.2:2181

创建topic

kafka-topics.sh --create --zookeeper 172.17.0.2:2181 --replication-factor 1 --partitions 1 --topic test1

生产消息

kafka-console-producer.sh --broker-list localhost:9092 --topic test1

消费消息

kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test1 --from-beginning

二.基于docker-compose的kafka镜像服务

docker-compose方式相对docker原生启动, 配置和启动都更加简单.

1. zookeeper和kafka服务docker-compose.yml

version: '2'services:  zookeeper:    image: wurstmeister/zookeeper    ports:      - "2181:2181"  kafka:    image: wurstmeister/kafka    ports:      - "9092:9092"    environment:      KAFKA_ADVERTISED_HOST_NAME: 192.168.1.7      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181    volumes:      - /var/run/docker.sock:/var/run/docker.sock

修改配置文件中以下配置项为本机IP

KAFKA_ADVERTISED_HOST_NAME

2.进入文件所在目录, 执行命令启动服务集群

docker-compose up -d

查看集群状态

docker-compose ps          Name                        Command               State                         Ports                       ----------------------------------------------------------------------------------------------------------------------kafka-docker_kafka_1       start-kafka.sh                   Up      0.0.0.0:9092->9092/tcp                            kafka-docker_zookeeper_1   /bin/sh -c /usr/sbin/sshd  ...   Up      0.0.0.0:2181->2181/tcp, 22/tcp, 2888/tcp, 3888/tcp

添加更多kafak brokers节点

docker-compose scale kafka=3

服务集群销毁

docker-compose stop

3. 测试

进入kafka容器, 需根据情况修改容器ID

docker exec -it 157 bash

进入Kafka bin所在目录

cd /opt/kafka/bin

topic查看

kafka-topics.sh --list --zookeeper zookeeper:2181

创建topic

kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic test3

生产消息

kafka-console-producer.sh --broker-list localhost:9092 --topic test3

消费消息

kafka-console-consumer.sh --bootstrap-server kafka:9092 --topic test3 --from-beginning

推荐阅读


  • SBI | 是时候该学会如何沟通了

  • 矩阵式团队 | 快速提高团队战斗力

  • 提速 | 5G时代网站还需要加速么?

  • SMART | 明确目标管理原则

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐