前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >提效| local环境下的kafka服务

提效| local环境下的kafka服务

作者头像
一个架构师
发布2022-06-27 15:00:55
2630
发布2022-06-27 15:00:55
举报
文章被收录于专栏:从码农的全世界路过

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

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

本文会介绍两种方式:

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

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

一. 基于docker的kafka镜像服务

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

代码语言:javascript
复制
docker run -d --name zookeeper -p 2181:2181 zookeeper:3.4.14

查看zookeeper启动状态

代码语言:javascript
复制
docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                  NAMES
569ba23c3038        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时做准备.

代码语言:javascript
复制
docker inspect zookeeper
"NetworkSettings": {
           ...
"IPAddress": "172.17.0.2",
           ...
        }

3. 启动kafka容器

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

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

代码语言:javascript
复制
KAFKA_ZOOKEEPER_CONNECT

配置主机IP地址

代码语言:javascript
复制
KAFKA_ADVERTISED_HOST_NAME

启动kafka容器

代码语言:javascript
复制
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

代码语言:javascript
复制
docker exec -it 157 bash

进入Kafka bin所在目录

代码语言:javascript
复制
cd /opt/kafka/bin

查看topic列表

代码语言:javascript
复制
kafka-topics.sh --list --zookeeper 172.17.0.2:2181

创建topic

代码语言:javascript
复制
kafka-topics.sh --create --zookeeper 172.17.0.2:2181 --replication-factor 1 --partitions 1 --topic test1

生产消息

代码语言:javascript
复制
kafka-console-producer.sh --broker-list localhost:9092 --topic test1

消费消息

代码语言:javascript
复制
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test1 --from-beginning

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

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

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

代码语言:javascript
复制
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

代码语言:javascript
复制
KAFKA_ADVERTISED_HOST_NAME

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

代码语言:javascript
复制
docker-compose up -d

查看集群状态

代码语言:javascript
复制
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节点

代码语言:javascript
复制
docker-compose scale kafka=3

服务集群销毁

代码语言:javascript
复制
docker-compose stop

3. 测试

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

代码语言:javascript
复制
docker exec -it 157 bash

进入Kafka bin所在目录

代码语言:javascript
复制
cd /opt/kafka/bin

topic查看

代码语言:javascript
复制
kafka-topics.sh --list --zookeeper zookeeper:2181

创建topic

代码语言:javascript
复制
kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic test3

生产消息

代码语言:javascript
复制
kafka-console-producer.sh --broker-list localhost:9092 --topic test3

消费消息

代码语言:javascript
复制
kafka-console-consumer.sh --bootstrap-server kafka:9092 --topic test3 --from-beginning
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从码农的全世界路过 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档