kafka-docker搭建kafka单机&docker搭建kafka集群

一.docker 内部配置单机kafka (我这里用的是乌班图 linux 也一样)

1.下载zookeeper

(1)搜索命令:
sudo docker search zookeeper

(2)内容:
******************************************************************************************************************
NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
zookeeper                          Apache ZooKeeper is an open-source server wh…   1005      [OK]       
jplock/zookeeper                   Builds a docker image for Zookeeper version …   166                  [OK]
wurstmeister/zookeeper                                                             136                  [OK]
mesoscloud/zookeeper               ZooKeeper                                       73                   [OK]
bitnami/zookeeper                  ZooKeeper is a centralized service for distr…   49                   [OK]
mbabineau/zookeeper-exhibitor                                                      24                   [OK]
digitalwonderland/zookeeper        Latest Zookeeper - clusterable                  23                   [OK]
tobilg/zookeeper-webui             Docker image for using `zk-web` as ZooKeeper…   15                   [OK]
debezium/zookeeper                 Zookeeper image required when running the De…   14                   [OK]
confluent/zookeeper                [deprecated - please use confluentinc/cp-zoo…   13                   [OK]
31z4/zookeeper                     Dockerized Apache Zookeeper.                    9                    [OK]
thefactory/zookeeper-exhibitor     Exhibitor-managed ZooKeeper with S3 backups …   6                    [OK]
engapa/zookeeper                   Zookeeper image optimised for being used int…   2                    
emccorp/zookeeper                  Zookeeper                                       2                    
openshift/zookeeper-346-fedora20   ZooKeeper 3.4.6 with replication support        1                    
perrykim/zookeeper                 k8s - zookeeper  ( forked k8s contrib )         1                    [OK]
paulbrown/zookeeper                Zookeeper on Kubernetes (PetSet)                1                    [OK]
duffqiu/zookeeper-cli                                                              1                    [OK]
josdotso/zookeeper-exporter        ref: https://github.com/carlpett/zookeeper_e…   1                    [OK]
strimzi/zookeeper                                                                  1                    
midonet/zookeeper                  Dockerfile for a Zookeeper server.              0                    [OK]
pravega/zookeeper-operator         Kubernetes operator for Zookeeper               0                    
humio/zookeeper-dev                zookeeper build with zulu jvm.                  0                    
phenompeople/zookeeper             Apache ZooKeeper is an open-source server wh…   0                    [OK]
dabealu/zookeeper-exporter         zookeeper exporter for prometheus               0                    [OK]
******************************************************************************************************************
(3)下载第一个zookeeper,命令如下:
sudo docker pull zookeeper 

2.下载kafka

(1)搜索命令:
sudo docker search kafka

(2)内容:
******************************************************************************************************************
NAME                                    DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
wurstmeister/kafka                      Multi-Broker Apache Kafka Image                 1318                 [OK]
spotify/kafka                           A simple docker image with both Kafka and Zo…   408                  [OK]
bitnami/kafka                           Apache Kafka is a distributed streaming plat…   204                  [OK]
sheepkiller/kafka-manager               kafka-manager                                   201                  [OK]
ches/kafka                              Apache Kafka. Tagged versions. JMX. Cluster-…   117                  [OK]
kafkamanager/kafka-manager              Docker image for Kafka manager                  108                  
hlebalbau/kafka-manager                 CMAK (previous known as Kafka Manager) As Do…   78                   [OK]
landoop/kafka-topics-ui                 UI for viewing Kafka Topics config and data …   36                   [OK]
johnnypark/kafka-zookeeper              Kafka and Zookeeper combined image              22                   
solsson/kafka                           http://kafka.apache.org/documentation.html#q…   21                   [OK]
landoop/kafka-lenses-dev                Lenses with Kafka. +Connect +Generators +Con…   20                   [OK]
debezium/kafka                          Kafka image required when running the Debezi…   19                   [OK]
landoop/kafka-connect-ui                Web based UI for Kafka Connect.                 17                   [OK]
danielqsj/kafka-exporter                Kafka exporter for Prometheus                   17                   [OK]
digitalwonderland/kafka                 Latest Kafka - clusterable                      15                   [OK]
tchiotludo/kafkahq                      Kafka GUI to view topics, topics data, consu…   6                    [OK]
solsson/kafka-manager                   Deprecated in favor of solsson/kafka:cmak       5                    [OK]
solsson/kafkacat                        https://github.com/edenhill/kafkacat/pull/110   4                    [OK]
solsson/kafka-consumers-prometheus      https://github.com/cloudworkz/kafka-minion      4                    
solsson/kafka-prometheus-jmx-exporter   For monitoring of Kubernetes Kafka clusters …   4                    [OK]
mesosphere/kafka-client                 Kafka client                                    3                    [OK]
zenko/kafka-manager                     Kafka Manger https://github.com/yahoo/kafka-…   2                    [OK]
zenreach/kafka-connect                  Zenreach's Kafka Connect Docker Image           2                    
anchorfree/kafka                        Kafka broker and Zookeeper image                2                    
solsson/kafka-monitor                   https://github.com/linkedin/kafka-monitor fo…   2                    [OK]
******************************************************************************************************************
(3)下载第一个wurstmeister/kafka ,命令如下:
sudo docker pull wurstmeister/kafka

3.启动Zookeeper

命令:
sudo docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper

查看zookeeper端口:
sudo docker inspect zookeeper | grep IPAddress

*********************************************
"SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.4",
                    "IPAddress": "172.17.0.4",
*********************************************

4.启动Kafka

命令:ip可以填宿主主机ip(192.168.x.x) 也可以填写docker容器ip(172.17.0.4) 最好宿主主机ip
 sudo docker run  -d --name kafka \
    -p 9092:9092 \
    -e KAFKA_BROKER_ID=0 \
    -e KAFKA_ZOOKEEPER_CONNECT=192.168.x.x:2181 \
    -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.x.x:9092 \
    -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
    -t wurstmeister/kafka

5-1.容器内部创建topic 进入如容器 找到相应位置执行(/opt/kafka/bin)

./kafka-topics.sh --replication-factor 1 --partitions 1 --create --topic test --zookeeper 172.17.0.4:2181

5-2.容器外部创建topic 下面的topic 是结合代码的topic

sudo docker exec kafka ./opt/kafka/bin/kafka-topics.sh --replication-factor 1 --partitions 1 --create --topic test --zookeeper 172.17.0.4:2181
sudo docker exec kafka ./opt/kafka/bin/kafka-topics.sh --replication-factor 1 --partitions 1 --create --topic group1 --zookeeper 172.17.0.4:2181  
sudo docker exec kafka ./opt/kafka/bin/kafka-topics.sh --replication-factor 1 --partitions 1 --create --topic group2 --zookeeper 172.17.0.4:2181  

6-1.容器内部 显示使用情况信息 进入如容器 找到相应位置执行(/opt/kafka/bin)

./kafka-topics.sh --describe --topic test --bootstrap-server localhost:9092

6-2.容器外部 显示使用情况信息

sudo docker exec kafka ./opt/kafka/bin/kafka-topics.sh --describe --topic test --bootstrap-server localhost:9092

7-1.容器内部 向topic里写入事件 进入如容器 找到相应位执行

./kafka-console-producer.sh  --topic test --bootstrap-server localhost:9092
This is Mr.cs first event
This is Mr.cs second event

可以随时停止消费者客户Ctrl-C。

7-2.容器外部 向topic里写入事件 进入如容器 找到相应位执行(没成功-待研究)

sudo  docker exec kafka ./opt/kafka/bin/kafka-console-producer.sh  --topic test --bootstrap-server localhost:9092
This is Mr.cs third event
This is Mr.cs fourth event

8-1.容器内部 阅读事件 找到相应位执行

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

8-2.容器内部 阅读事件 找到相应位执行

	sudo  docker exec kafka ./opt/kafka/bin/kafka-console-consumer.sh  --topic test --from-beginning --bootstrap-server localhost:9092

二.docker 内部配置集群kafka搭建 (我这里用的是乌班图 linux 也一样)

1.文件目录

-根目录
    -dockerData 目录
        -kafka-jiqun 目录
            -docker-compose.yaml 集群启动配置文件
            -start.sh 启动器
            -stop.sh  停止删除器  

2.编辑文件docker-compose.yaml 根据你的情况进行修改 主要是-目录-ip-端口

针对一个zookeeper情况:
*********************************************************************************
version: "3"

services:
  zookeeper:
    image: zookeeper
    build:
      context: ./
    container_name: zookeeper-jiqun
    ports:
      - 2182:2181
    volumes:
      - /dockerData/kafka-jiqun/zookeeper/data:/data
      - /dockerData/kafka-jiqun/zookeeper/datalog:/datalog
      - /dockerData/kafka-jiqun/zookeeper/logs:/logs
    restart: always

  kafka_node_0:
    depends_on:
      - zookeeper
    build:
      context: ./
    container_name: kafka-node-0
    image: wurstmeister/kafka
    environment:
      KAFKA_BROKER_ID: 0
      KAFKA_ZOOKEEPER_CONNECT: 192.168.19.132:2182
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.19.132:9093
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9093
      KAFKA_NUM_PARTITIONS: 3
      KAFKA_DEFAULT_REPLICATION_FACTOR: 2
    ports:
      - 9093:9093
    volumes:
      - /dockerData/kafka-jiqun/kafka/node_0:/kafka
    restart: unless-stopped

  kafka_node_1:
    depends_on:
      - kafka_node_0
    build:
      context: ./
    container_name: kafka-node-1
    image: wurstmeister/kafka
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: 192.168.19.132:2182
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.19.132:9094
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9094
      KAFKA_NUM_PARTITIONS: 3
      KAFKA_DEFAULT_REPLICATION_FACTOR: 2
    ports:
      - 9094:9094
    volumes:
      - /dockerData/kafka-jiqun/kafka/node_1:/kafka
    restart: unless-stopped

  kafka_node_2:
    depends_on:
      - kafka_node_1
    build:
      context: ./
    container_name: kafka-node-2
    image: wurstmeister/kafka
    environment:
      KAFKA_BROKER_ID: 2
      KAFKA_ZOOKEEPER_CONNECT: 192.168.19.132:2182
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.19.132:9095
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9095
      KAFKA_NUM_PARTITIONS: 3
      KAFKA_DEFAULT_REPLICATION_FACTOR: 2
    ports:
      - 9095:9095
    volumes:
      - /dockerData/kafka-jiqun/kafka/node_2:/kafka
    restart: unless-stopped
*********************************************************************************
   

针对多个zookeeper:
********************************************************************************* 
version: "3"
services:
  zookeeper-node-0:
    image: zookeeper
    build:
      context: ./
    container_name: zookeeper-node-0
    ports:
      - 2182:2181
    volumes:
      - /dockerData/kafka-jiqun/zookeeper/zookeeper-node-0/data:/data
      - /dockerData/kafka-jiqun/zookeeper/zookeeper-node-0/datalog:/datalog
      - /dockerData/kafka-jiqun/zookeeper/zookeeper-node-0/logs:/logs
    restart: always
  zookeeper-node-1:
    image: zookeeper
    build:
      context: ./
    container_name: zookeeper-node-1
    ports:
      - 2183:2181
    volumes:
      - /dockerData/kafka-jiqun/zookeeper/zookeeper-node-1/data:/data
      - /dockerData/kafka-jiqun/zookeeper/zookeeper-node-1/datalog:/datalog
      - /dockerData/kafka-jiqun/zookeeper/zookeeper-node-1/logs:/logs
    restart: always
  zookeeper-node-2:
    image: zookeeper
    build:
      context: ./
    container_name: zookeeper-node-2
    ports:
      - 2184:2181
    volumes:
      - /dockerData/kafka-jiqun/zookeeper/zookeeper-node-2/data:/data
      - /dockerData/kafka-jiqun/zookeeper/zookeeper-node-2/datalog:/datalog
      - /dockerData/kafka-jiqun/zookeeper/zookeeper-node-2/logs:/logs
    restart: always

  kafka_node_0:
    depends_on:
      - zookeeper-node-0
      - zookeeper-node-1
      - zookeeper-node-2
    build:
      context: ./
    container_name: kafka-node-0
    image: wurstmeister/kafka
    environment:
      KAFKA_BROKER_ID: 0
      KAFKA_ZOOKEEPER_CONNECT: 192.168.19.132:2182,192.168.19.132:2183,192.168.19.132:2184
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.19.132:9093
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9093
      KAFKA_NUM_PARTITIONS: 3
      KAFKA_DEFAULT_REPLICATION_FACTOR: 2
    ports:
      - 9093:9093
    volumes:
      - /dockerData/kafka-jiqun/kafka/node_0:/kafka
    restart: unless-stopped

  kafka_node_1:
    depends_on:
      - kafka_node_0
    build:
      context: ./
    container_name: kafka-node-1
    image: wurstmeister/kafka
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: 192.168.19.132:2182,192.168.19.132:2183,192.168.19.132:2184
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.19.132:9094
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9094
      KAFKA_NUM_PARTITIONS: 3
      KAFKA_DEFAULT_REPLICATION_FACTOR: 2
    ports:
      - 9094:9094
    volumes:
      - /dockerData/kafka-jiqun/kafka/node_1:/kafka
    restart: unless-stopped

  kafka_node_2:
    depends_on:
      - kafka_node_1
    build:
      context: ./
    container_name: kafka-node-2
    image: wurstmeister/kafka
    environment:
      KAFKA_BROKER_ID: 2
      KAFKA_ZOOKEEPER_CONNECT: 192.168.19.132:2182,192.168.19.132:2183,192.168.19.132:2184
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.19.132:9095
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9095
      KAFKA_NUM_PARTITIONS: 3
      KAFKA_DEFAULT_REPLICATION_FACTOR: 2
    ports:
      - 9095:9095
    volumes:
      - /dockerData/kafka-jiqun/kafka/node_2:/kafka
    restart: unless-stopped
********************************************************************************* 

3.编辑start.sh启动器 这个不谢也没事就是不断的得写里面的命令

#! /bin/bash
sudo docker-compose up -d

4.编辑stop.sh停止-移除器 这个不谢也没事就是不断的得写里面的命令

针对一个zookeeper的情况:
***************************************************
#!/bin/bash
sudo docker stop kafka-node-0
sudo docker stop kafka-node-1
sudo docker stop kafka-node-2
sudo docker stop zookeeper-jiqun
sudo docker rm -f kafka-node-0
sudo docker rm -f kafka-node-1
sudo docker rm -f kafka-node-2
sudo docker rm -f zookeeper-jiqun
***************************************************
针对多个zookeeper的情况:
***************************************************
#!/bin/bash
sudo docker stop kafka-node-0
sudo docker stop kafka-node-1
sudo docker stop kafka-node-2
sudo docker stop zookeeper-node-0
sudo docker stop zookeeper-node-1
sudo docker stop zookeeper-node-2
sudo docker rm -f kafka-node-0
sudo docker rm -f kafka-node-1
sudo docker rm -f kafka-node-2
sudo docker rm -f zookeeper-node-0
sudo docker rm -f zookeeper-node-1
sudo docker rm -f zookeeper-node-2
***************************************************

5.检查docker-componse 是否存在

命令:
sudo docker-compose --version


如果没有进行以下操作
安装docker-componse:
sudo  wget https://github.com/docker/compose/releases/download/1.23.0-rc3/docker-compose-Linux-x86_64

移动:
sudo  mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose

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

执行:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

验证:
sudo docker-compose --version

6.上述没有问题 启动集群

命令:
sudo  bash start.sh

7.上述没有问题 停止集群

命令:
sudo  bash stop.sh
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值