使用docker-compose 搭建 kafka集群 + 可视化工具

Docker-compose简介


Docker Compose是一个用来定义和运行复杂应用的Docker工具。

        一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。 
        Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

kafka 集群搭建

注意:使用 docker-compose 搭建,需要先安装

# 官方地址
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 国内镜像
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

授权

# 授权
sudo chmod +x /usr/local/bin/docker-compose

# 查看一下version,显示有版本号那就说明安装成功了
docker-compose version

创建目录

mkdir /usr/local/docker/kafka

进入目录

cd /usr/local/docker/kafka

创建 docker-compose 文件

vim docker-compose.yml

 温馨提示 

("//"  不要删   “服务器ip”  替换即可)

(“zookeeper容器ip”  需要启动 zookeeper 之后查询   启动和查询方法在下面  ↓     直接替换   )

version: '3'
networks:
  docker_network:
    external: false
services:
  zookeeper:
    image: wurstmeister/zookeeper
    networks:
      - docker_network
    container_name: zookeeper
    ports:
      - 12181:2181
    environment:
      - TZ=Asia/Shanghai

  kafka:
    image: wurstmeister/kafka
    networks:
      - docker_network
    container_name: kafka00
    ports:
      - 19090:19090
    environment:
      - TZ=Asia/Shanghai
      - KAFKA_BROKER_ID=0
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper容器ip:2181
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://服务器ip:19090
      - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:19090
  
  kafka1:
    image: wurstmeister/kafka
    networks:
      - docker_network
    container_name: kafka01
    ports:
      - 19091:19091
    environment:
      - TZ=Asia/Shanghai
      - KAFKA_BROKER_ID=1
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper容器ip:2181
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://服务器ip:19091
      - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:19091
  kafka2:
    image: wurstmeister/kafka
    networks:
      - docker_network
    container_name: kafka02
    ports:
      - 19092:19092
    environment:
      - TZ=Asia/Shanghai
      - KAFKA_BROKER_ID=2
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper容器ip:2181
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://服务器ip:19092
      - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:19092

 启动

zk:

docker-compose up -d zookeeper

查询容器ip     

 docker inspect 容器id

/// 运行完  翻到最下面   查看容器ip 并保存备用

使用docker-compose 搭建 kafka集群 + 可视化工具_第1张图片

重点修改 docker-compose 文件  中   zookeeper   ip

启动

kafka00:

docker-compose up -d kafka

kafka01:

docker-compose up -d kafka1

kafka02:

docker-compose up -d kafka2

创建一个测试主题

进入kafka00容器

docker exec -it kafka00 bash

创建一个主题

/opt/kafka/bin/kafka-topics.sh --create --zookeeper zk容器ip:2181 --replication-factor 3 --partitions 5 --topic TestTopic

查看主题情况

建议在打开两个ssh连接的窗口 (自行进入)

查看主题

/opt/kafka/bin/kafka-topics.sh --describe --zookeeper zk容器ip:2181 --topic TestTopic

其他的几个容器也应该是一样的。。。省略

发送消息测试

        记得放开19090、19091、19092端口 接下来,分别在kafka00上运行一个生产者,kafka01、02上分别运行一个消费者:

生产者:

/opt/kafka/bin/kafka-console-producer.sh --broker-list 服务器ip:当前kafka端口(9090) --topic TestTopic

消费者 (分别在kafka01,kafka02)

kafka01:
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 服务器ip:当前kafka端口(9091) --topic TestTopic --from-beginning

kafka02:
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 服务器ip:当前kafka端口(9092) --topic TestTopic --from-beginning

然后在生产者发消息:

 看两个消费者是否都能接收

 

 安装完成

kafka-map 可视化工具

使用docker-compose 搭建 kafka集群 + 可视化工具_第2张图片.

 只需一行命令      

//  这里因为   8080端口占用  故映射其他端口   根据个人爱好设置
docker run -d -p 9001:8080 -v /opt/kafka-map/data:/usr/local/kafka-map/data -e DEFAULT_USERNAME=admin -e DEFAULT_PASSWORD=admin --name kafka-map --restart always dushixiang/kafka-map:latest

你可能感兴趣的:(docker,kafka,java)