docker安装kafka

1:kafka需要zookeeper管理,所以需要先安装zookeeper。 下载docker pull wurstmeister/zookeeper:latest版本

docker pull wurstmeister/zookeeper

2:启动镜像生成容器

docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper

3:下载kafka镜像

docker pull wurstmeister/kafka

4:启动kafka镜像生成容器

docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.155.56:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.155.56:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka

-e KAFKA_BROKER_ID=0  在kafka集群中,每个kafka都有一个BROKER_ID来区分自己

-e KAFKA_ZOOKEEPER_CONNECT=192.168.155.56:2181/kafka 配置zookeeper管理kafka的路径192.168.155.56:2181/kafka

-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.155.56:9092  把kafka的地址端口注册给zookeeper

-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 配置kafka的监听端口

-v /etc/localtime:/etc/localtime 容器时间同步虚拟机的时间

5:验证kafka是否可以使用

进入容器

docker exec -it kafka /bin/sh

进入路径:/opt/kafka_2.11-2.0.0/bin下

运行kafka生产者发送消息

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

发送消息

{"datas":[{"channel":"","metric":"temperature","producer":"ijinus","sn":"IJA0101-00002245","time":"1543207156000","value":"80"}],"ver":"1.0"}

运行kafka消费者接收消息

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



-------------------------------------------------------------------关键总结------------------------------------------------------------------------

1:进入zookeeper容器内,可以看到kafka注册信息

docker exec -it zookeeper /bin/sh

进入bin目录

运行zkCli.sh进入zookeeper客户端

./zkCli.sh


ls /  可以查看zookeeper根节点下都挂了那些目录

可以看到我注册的kafka目录,运行

ls /kafka/brokers/topics/sun/partitions 

可以看到我建立的topic叫sun主题的partitions信息

get命令会显示该节点的节点数据内容和属性信息
get /kafka/brokers/topics/sun

ls2命令会显示该节点的子节点信息和属性信息

ls2 /kafka/brokers/topics/sun

通过命令行创建topic和partitions

kafka-topics.sh --create --zookeeper 192.168.155.56:2181/kafka --topic topic-test1 --replication-factor 1 --partitions 2

当创建的replication-factor=2时,因为zookeeper的zoo.cfg配置文件中tickTime=2000会报链接超时,把这个值调大一些,重启zookeeper,再创建topic正常。

删除topic 使用命令:

若 delete.topic.enable=true

直接彻底删除该 Topic。

若 delete.topic.enable=false

如果当前 Topic 没有使用过即没有传输过信息:可以彻底删除。

如果当前 Topic 有使用过即有过传输过信息:并没有真正删除 Topic 只是把这个 Topic 标记为删除(marked for deletion),重启 Kafka Server 后删除。

我的kafka版本是最新的,在service.config文件中是找不到delete.topic.enable=true,系统默认是true.

进入kafka容器,cd opt/kafka/bin

kafka-topics.sh --delete --zookeeper 192.168.155.56:2181/kafka --topic sun

命令可以删除容器中的topic数据,还有zookeeper中的topic目录。

可以在zookeeper中查看目录是否已经删除掉了

进入zookeeper容器,在bin下运行./zkCli.sh

ls /kafka/brokers/topics

还有一种暴力删除方法,因为我启动kafka容器的时候,没有外挂topic路径。所以我直接把容器删除掉,再重新启动一个新的容器也能实现topic的删除。(这种方式不推荐用)

docker kafka 数据文件保存的路径:

在配置文件service.config中配置的,log.dirs配置保存路径。

进入kafka容器,找到配置文件路径/opt/kafka_2.11-2.0.0/config

vi service.config 

默认配置在/kafka/kafka-logs-4eaa3ff7f59d下

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,881评论 18 139
  • ** 今天看了一下kafka官网,尝试着在自己电脑上安装和配置,然后学一下官方document。** Introd...
    RainChang阅读 5,039评论 1 30
  • 环境: CentOS release 6.7 (Final)kafka_2.11-0.11.0.1.tgzzook...
    三更灯火阅读 618评论 0 0
  • 大致可以通过上述情况进行排除 1.kafka服务器问题 查看日志是否有报错,网络访问问题等。 2. kafka p...
    生活的探路者阅读 7,619评论 0 10
  • 迷茫是生命的无效期。
    Sophina阅读 171评论 0 0