侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

docker启动kafka

2023-11-02 星期四 / 0 评论 / 0 点赞 / 57 阅读 / 4437 字

此文介绍如何创建kafka实例。 源码:https://github.com/wurstmeister/kafka-docker.git 此镜像在run起之前,我们要根据自己的实际情况build对应的

此文介绍如何创建kafka实例。
源码:https://github.com/wurstmeister/kafka-docker.git
此镜像在run起之前,我们要根据自己的实际情况build对应的镜像。通过Docker-compose.yaml文件可以看出:

version: '2'services:  zookeeper:    image: wurstmeister/zookeeper    ports:      - "2181:2181"  kafka:    build: .    ports:      - "9092"    environment:      KAFKA_ADVERTISED_HOST_NAME: 192.168.99.100      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181    volumes:      - /var/run/docker.sock:/var/run/docker.sock

首先我们需要安装docker-compose工具,安装简单介绍下:

#将docker-compose源码进行下载安装#curl -L https://github.com/docker/compose/releases/download/1.14.0/docker-compose-`uname -s`-`uname -m` > /usr/bin/docker-compose#给予权限#chmod +x /usr/bin/docker-compose

然后将KAFKA_ADVERTISED_HOST_NAME对应的ip改为自己所想提供kafka服务的宿主机ip。
KAFKA_ZOOKEEPER_CONNECT可以选择不变,当然也可以修改为提供zookeeper服务的宿主机ip。

运行kafka集群
在包含kafka源码的目录下执行

#docker-compose run up -d

此时稍作等待,会根据咱们之前定义的变量去pull以及build相对应的镜像并最终run起来。

细心的朋友可以发现,kafka每次run起来之后映射到宿主机的端口经常变,不是我们所希望的怎么办?

我个人建议就用docker-compose build出镜像后,仍然是写个docker的启动脚本去启动为佳,当然如果用到了kubernetes或者mesos管理工具,可以写成yaml文件进行启动。

下面简单说一下如何通过docker run 的命令来指定kafka容器的运行:
通过docker-compose,我们可以看到共build了2个镜像,分别为wurstmeister/zookeeper与kafkadocker_kafka
所以基本初级以上的朋友看到这里都可以自己想到run起来的命令了。
需要注意的是,zookeeper内挂工作目录为/opt/zookeeper-3.4.9/data
kafka内挂工作目录为/kafka

#启动zookeeper#docker run --name zookeeper -p 2181:2181 -v /docker/kafka/zoo_log:/opt/zookeeper-3.4.9/data -tid wurstmeister/zookeeper#启动kafkadocker run --name kafka -p 9092:9092 -e KAFKA_ZOOKEEPER_CONNECT="10.45.151.4:2181" -e KAFKA_ADVERTISED_HOST_NAME="10.45.151.4" -e LANG="en_US.UTF-8" -v /docker/kafka/kfk_log:/kafka -v /var/run/docker.sock:/var/run/docker.sock -tid kafkadocker_kafka

到这里基本已经完成了kafka、zookeeper的集群容器创建。(单个broker)如果想建立多个broker的话。跟上面类似,只是我们需要修改的是docker-compose-single-broker.yml文件:

version: '2'services:  zookeeper:    image: wurstmeister/zookeeper    ports:      - "2181:2181"  kafka:    build: .    ports:      - "9092:9092"    environment:      KAFKA_ADVERTISED_HOST_NAME: 192.168.99.100      KAFKA_CREATE_TOPICS: "test:1:1"      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181    volumes:      - /var/run/docker.sock:/var/run/docker.sock
#创建3个broker#docker-compose scale kafka=3(3个broker)#停止之前的容器#docker-compose stop#启动集群#docker-compose -f docker-compose-single-broker.yml up

以上对kafka的集群已经全部介绍完毕。如何验证服务正常与否:

#进入容器#docker exec -it kafka /bin/bash#创建topic test2bash-4.3# kafka-topics.sh --create --zookeeper 10.45.151.4:2181 --replication-factor 1 --partitions 1 --topic test2Created topic "test2".#查询topicbash-4.3# kafka-topics.sh --list --zookeeper 10.45.151.4:2181__consumer_offsetshlht_specialprocessdatakfk_callback_logtesttest1test2#发送消息,发送后ctrl+c退出即可bash-4.3# kafka-console-producer.sh --broker-list 10.45.151.4:9092 --topic test2nihao woshi test2#读取消息^Cbash-4.3# kafka-console-consumer.sh --zookeeper 10.45.151.4:2181 --topic test2 --from-beginningUsing the ConsoleConsumer with old consumer is deprecated and will be removed in a future major release. Consider using the new consumer by passing [bootstrap-server] instead of [zookeeper].nihao woshi test2

以上博文应该是能够达到运行需求。如果有哪里说的不到位的或者不清楚的朋友,可以在下方留言。

广告 广告

评论区