docker运行kafka示例

Posted luffy5459

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker运行kafka示例相关的知识,希望对你有一定的参考价值。

    kafka依赖zookeeper,kafka自身没有管理界面,运行之后,只能通过查看日志来定位问题,不方便,所以这里还需要引入一个kafka-manager镜像来管理kafka。

    话不多说,直接上代码。

    1、拉取镜像

docker pull wurstmeister/kafka
docker pull wurstmeister/zookeeper
docker pull sheepkiller/kafka-manager

    2、启动zookeeper

[root@server ~]# docker run -d -t --name zookeeper -p 2181:2181 wurstmeister/zookeeper
1d0620baad47494978c2470e050a275600a3f8aa04509613053356d1f907282f
[root@server ~]# docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                                                NAMES
1d0620baad47        wurstmeister/zookeeper   "/bin/sh -c '/usr/..."   6 seconds ago       Up 4 seconds        22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp   zookeeper

    3、启动kafka

[root@server ~]# docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.226.100:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.226.100:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
9badfbdae3b94e7464d2c364dac1390fb40ca65b14179417c2f88af315ccf449
[root@server ~]# docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                                                NAMES
9badfbdae3b9        wurstmeister/kafka       "start-kafka.sh"         5 seconds ago       Up 3 seconds        0.0.0.0:9092->9092/tcp                               kafka
1d0620baad47        wurstmeister/zookeeper   "/bin/sh -c '/usr/..."   3 minutes ago       Up 3 minutes        22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp   zookeeper

    4、创建主题

[root@server ~]# docker exec -it kafka /bin/bash
bash-5.1# /opt/kafka/bin/kafka-topics.sh --create --zookeeper 192.168.226.100:2181 --replication-factor 1 --partitions 1 --topic test_topic
WARNING: Due to limitations in metric names, topics with a period ('.') or underscore ('_') could collide. To avoid issues it is best to use either, but not both.
Created topic test_topic.

    5、模拟消费者

bash-5.1# /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.226.100:9092 --topic test_topic --from-beginning

    这一步执行完毕,会挂住,没有任何输出,需要等到生产者发布消息,这里才能显示消息。 

    6、模拟生产者

    克隆一个linux连接终端,同样进入kafka容器中,执行生产者指令,这里,输入指令之后,可以接着输入消息,然后回车。

[root@server ~]# docker exec -it kafka /bin/bash  
bash-5.1# /opt/kafka/bin/kafka-console-producer.sh --broker-list 192.168.226.100:9092 --topic test_topic
>hello
>haha

    这里发送的消息,可以回到步骤5查看。

 

    7、运行kafka-manager

docker run -d --name kafka-manager -p 9000:9000 --link zookeeper:zookeeper --link kafka:kafka --env ZK_HOSTS=zookeeper:2181 sheepkiller/kafka-manager

    在浏览器中,输入kafka-manager访问地址进行访问:

    第一次打开,默认是没有clusters显示的,需要我们手动添加,在菜单栏中Cluster下拉列表选择Add Cluster选项,在添加页面,我们主要填写cluster name和zookeeper的连接信息,就添加成功了。

    添加成功,可以回到主页,看cluster列表:

     这里可以看到概要,有5个topic,点击数字5,进入主题topic详细列表页面:

      至此,我们利用docker搭建kafka就成功了,用到了zookeeper,kafka,kafka-manager,相对来说比较清晰,按照顺序启动就可以了。

     kafka-manager是管理kafka集群的,真正的环境中,zookeeper至少是3个结点,kafka是两个结点,保证集群稳定与负载均衡。

     kafka作为消息队列,有着广泛的用途,在实际中,有很多生态都集成了kafka,包括hadoop,elasticsearch。 

以上是关于docker运行kafka示例的主要内容,如果未能解决你的问题,请参考以下文章

从 Docker 容器将 PySpark 连接到 Kafka

在 boot2docker 中的 docker 中运行 kafka 时使用 JMX 进行 kafka 监控

受益匪浅!docker打包镜像到本地

kafka安装运行(docker)

无法从 docker 中运行的服务向 kafka 生成消息

无法在 kafka connect docker 映像中运行 kafka connect datagen