参考之前的文章安装zookeeper集群  https://www.cnblogs.com/xiaohanlin/p/10124674.html

如果是测试环境也可以简单安装单节点的zookeeper  具体如下

docker pull docker.io/wurstmeister/zookeeper

启动zookeeper容器

docker pull docker.io/wurstmeister/zookeeper
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper

2. 启动kafka容器

docker pull docker.io/wurstmeister/kafka:2.12-2.1.0

docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.0.168:2181,192.168.0.169:2181,192.168.0.170:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.0.170:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka:2.12-2.1.0

这里面主要设置了4个参数

KAFKA_BROKER_ID=0
KAFKA_ZOOKEEPER_CONNECT=192.168.0.168:2181,192.168.0.169:2181,192.168.0.170:2181
KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.0.170:9092
KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092

KAFKA_ZOOKEEPER_CONNECT  配置的是zookeeper的地址,可以单节点配置,也可以配置zookeeper集群多节点,用逗号隔开

中间两个参数的192.168.0.170改为宿主机器的IP地址,如果不这么设置,可能会导致在别的机器上访问不到kafka。

3. 测试kafka
进入kafka容器的命令行

docker exec -ti kafka /bin/bash

进入kafka所在目录

cd opt/kafka_2.12-2.1.0/

后面不再赘述,可参考前一篇文章https://blog.csdn.net/lblblblblzdx/article/details/80548157

4. 集群搭建
使用docker命令可快速在同一台机器,或者不同的机器搭建多个kafka,只需要改变brokerId和端口,集群的kafka的KAFKA_ZOOKEEPER_CONNECT需要配置为同一个zookeeper集群或者单节点

docker run -d --name kafka1 -p 9093:9093 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=192.168.0.168:2181,192.168.0.169:2181,192.168.0.170:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.0.169:9093 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 -t wurstmeister/kafka:2.12-2.1.0

docker run -d --name kafka2 -p 9094:9094 -e KAFKA_BROKER_ID=2 -e KAFKA_ZOOKEEPER_CONNECT=192.168.0.168:2181,192.168.0.169:2181,192.168.0.170:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.0.168:9094 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9094 -t wurstmeister/kafka:2.12-2.1.0

5. 创建Replication为3,Partition为3的topic
在kafka容器中的opt/kafka_2.12-2.1.0/目录下输入

bin/kafka-topics.sh --create --zookeeper 192.168.0.170:2181 --replication-factor 3 --partitions 3 --topic nova2_plantree_topic

6. 查看topic的状态
在kafka容器中的opt/kafka_2.12-2.1.0/目录下输入

bin/kafka-topics.sh --describe --zookeeper 192.168.0.170:2181 --topic nova2_plantree_topic

输出结果:

bash-4.4# ./kafka-topics.sh --describe --zookeeper 192.168.0.170:2181 --topic nova2_plantree_topic
Topic:nova2_plantree_topic PartitionCount:3 ReplicationFactor:3 Configs:
Topic: nova2_plantree_topic Partition: 0 Leader: 2 Replicas: 2,1,0 Isr: 2,1,0
Topic: nova2_plantree_topic Partition: 1 Leader: 0 Replicas: 0,2,1 Isr: 0,2,1
Topic: nova2_plantree_topic Partition: 2 Leader: 1 Replicas: 1,0,2 Isr: 1,0,2

显示每个分区的Leader机器为broker0,broker1,broker2,在broker0和1和2上具有备份,Isr代表存活的备份机器中存活的。

当停掉kafka1后,

docker stop kafka1

再查看topic状态,输出结果:

bash-4.4# ./kafka-topics.sh --describe --zookeeper 192.168.0.170:2181 --topic nova2_plantree_topic
Topic:nova2_plantree_topic PartitionCount:3 ReplicationFactor:3 Configs:
Topic: nova2_plantree_topic Partition: 0 Leader: 2 Replicas: 2,0,1 Isr: 2,0
Topic: nova2_plantree_topic Partition: 1 Leader: 0 Replicas: 0,1,2 Isr: 0,2
Topic: nova2_plantree_topic Partition: 2 Leader: 2 Replicas: 1,2,0 Isr: 2,0

查看kafka的broker数量

docker exec -it zookeeper bash

[zk: localhost:2181(CONNECTED) 5] ls /brokers/ids
[2, 1, 0]

查看topic的数量

[zk: localhost:2181(CONNECTED) 6] ls /brokers/topics
[nova2_plantree_topic]

bash-4.4# ./kafka-topics.sh --zookeeper 192.168.0.170:2181 --list
nova2_plantree_topic

查看consumer组

bash-4.4# ./kafka-consumer-groups.sh --bootstrap-server 192.168.0.170:9092 --list
plantree_group

bash-4.4# ./kafka-consumer-groups.sh --bootstrap-server 192.168.0.170:9092,192.168.0.169:9093 --group plantree_group --describe

TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
nova2_plantree_topic 0 7 7 0 consumer-1-330c0937-44db-4ec0-92da-352baf83043b /192.168.0.169 consumer-1
nova2_plantree_topic 1 5 5 0 consumer-1-330c0937-44db-4ec0-92da-352baf83043b /192.168.0.169 consumer-1
nova2_plantree_topic 2 5 5 0 consumer-1-71628b6f-10d1-4a0a-bc2b-0d9f17f6008f /192.168.0.168 consumer-1

模拟生产者

bin/kafka-console-producer.sh --broker-list 192.168.0.170:9092 --topic nova2nodepush

模拟消费者

bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.170:9092 --topic nova2nodepush --from-beginning

centos7用docker安装kafka的更多相关文章

  1. docker安装kafka快速入门

    docker安装kafka快速入门 1.安装zookeeper docker search zookeeperdocker pull zookeeperdocker run -d -v /home/s ...

  2. CentOS7利用docker安装MySQL5.7

    CentOS7利用docker安装MySQL5.7 前提条件 centos7 且内核版本高于3.10, 可通过以下命令查看内核版本 uname -r 利用yum 安装docker 安装一些必要的系统工 ...

  3. Centos7通过Docker安装Sentry(哨兵)

    Docker介绍 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制, ...

  4. [Docker]CentOS7下Docker安装教程

    想要倒腾Kubernetes的话,第一步就是要会安装Docker,这篇文章讲一讲过程 安装步骤 检查内核版本,必须是3.10以上 uname -r 安装Docker yum -y install do ...

  5. Centos7使用Docker安装Gogs搭建git服务器

    gihub地址:https://github.com/gogs/gogs gogs官网:https://gogs.io/ gihub官方docker安装gogs方法:https://github.co ...

  6. centos7上docker安装和使用教程

    Docker 是一个创建和管理 Linux 容器的开源工具.容器就像是轻量级的虚拟机,并且可以以毫秒级的速度来启动或停止.Docker 帮助系统管理员和程序员在容器中开发应用程序,并且可以扩展到成千上 ...

  7. Centos7系统Docker安装

    目录 前期说明 安装步骤 1.官网中文安装参考手册 2.确定你是CentOS7及以上版本 3.yum安装gcc相关 4.卸载旧版本 5.安装需要的软件包 6.设置stable镜像仓库 7.更新yum软 ...

  8. Kafka:docker安装Kafka消息队列

    安装之前先看下图 Kafka基础架构及术语  Kafka基本组成 Kafka cluster: Kafka消息队列(存储消息的队列组件) Zookeeper: 注册中心(kafka集群依赖zookee ...

  9. Vmware虚拟机中CentOS7与Docker安装图文教程

    1.安装VMware 下载一个软件安装: 2.新建一个虚拟机 等待自动安装完成 配置系统语言: 配置系统时间: 配置系统键盘: 语言支持: 默认自动使用安装源: 配置软件环境,需要及时添加的软件,这里 ...

随机推荐

  1. c# tcp udp 的使用场景

    之前用tcp实现了一个案例(远程协助),后来我考虑用udp去实现它,于是又研究了下udp,我发现理论上udp可以做到,但是有一些问题不知道会不会有瓶颈 我参照网上写了一个简单的示例如下 服务端接收.发 ...

  2. 刷题向》DP》放苹果 (normal)

    这篇博客可能字数比较多,而且很难讲清楚,我会努力给你们讲清楚: 首先,放苹果是一道DP,之所以难,是因为很难想到,我的确有同学用三维数组做出来,然而三维的的确比二维好理解,但三维复杂度太高,虽然DP一 ...

  3. 算法描述》关于LIS的nlogn方法

    上次TYVJ有一道裸LIS,然而我当时直接打了一个N^2暴力就草草了事,然后就ZZ了,只拿了60分,其实NlogN的LIS和N^2的差的不多,只是没有N^2,好想罢了,鉴于某学弟的要求,所以就重现一下 ...

  4. 设置窗口的z-order总是在最底部

    想让窗口置顶,很简单,只需要在SetWindowPos中指定 HWND_TOPMOST就OK了, 但是如果想要窗口始终位于最底端,Windows却没有提供接口. 不过呢,Windows提供了一个消息W ...

  5. c++ deque 容器

    deque (全名 double ended queue)是一种具有队列和栈一样的数据结构. 在c++标准库中几乎和vector容器的接口完全相同,但它和vector 还是有一些细微的差别. 1. d ...

  6. 在Ubuntu16.04上使用rz上传文件,XXX was skipped

    原本想把hadoop-2.8.5.tar.gz上传到/usr/local/src文件夹下,报错,was skipped 如下图: 换个文件夹位置,更换到本用户文件夹下,可以上传,说明是对文件夹操作权限 ...

  7. tensorflow 中 feed的用法

    Feed 上述示例在计算图中引入了 tensor, 以常量或变量的形式存储. TensorFlow 还提供了 feed 机制, 该机制 可以临时替代图中的任意操作中的 tensor 可以对图中任何操作 ...

  8. 复习扩展方法 涉及委托,这里我使用自定义委托类型 public delegate bb MyFunc<in T,out bb> (T arg)

    using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Text; ...

  9. 前端mock利器:randomjson

    randomjson的应用场景 前后端分离时,前端根据后端提供的数据模型模拟后端请求.如果数据写死,每次返回的都一样,这个时候randomjson就能派上用场了.在前端规定数据类型,每次用random ...

  10. Java Random、ThreadLocalRandom、UUID类中的方法应用(随机数)

    1.Random:产生一个伪随机数(通过相同的种子,产生的随机数是相同的): Random r=new Random(); System.out.println(r.nextBoolean()); S ...