Windows下使用Docker搭建Kafka

Windows下使用Docker搭建Kafka

一,下载

首先,先启动本地的Docker服务,然后获取合适版本的zookeeper(我这里默认是最新)

docker pull wurstmeister/zookeeper

再到docker仓库获取合适版本的kafka

docker pull wurstmeister/kafka

二,搭建

启动zookeeper服务

docker run -d --name zookeeper -p 2181:2181 wurstmeister/zookeeper

启动kafka,[local-ip]为自己主机IP,切记不可使用localhost来代替【本人使用localhost后,启动容器后失败退出】

docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=[local-ip]:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://[local-ip]:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka

三,测试

首先,进入容器内部

docker exec -it kafka /bin/bash

再运行kafka生产者来发布消息,当前窗口称为【窗口A】

/opt/kafka_2.13-2.7.0/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

再重新开启一个窗口【窗口B】,运行kafka消费者,接受消息

/opt/kafka_2.13-2.7.0/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test

在生产者窗口A中,我们可以注意到生产者前面出现“>”符号,在后面位置输入内容然后按下回车,就可以到消费者窗口B中看到内容。这意味着简单的kafka结合zookeeper消息生产与消费就完成了

窗口A
窗口B

四,基本命令

docker下kafka的配置文件和脚本文件都在:/opt/kafka_x.xx

4.1 启动kafka

# 指定对应的配置文件启动
kafka-server-start.sh $KAFKA_PATH/config/server.properties
# -daemon 以后台的方式启动
kafka-server-start.sh -daemon $KAFKA_PATH/config/server.properties

# 指定JMX port端口启动,指定jmx,可以方便监控kafka集群
JMX_PORT=9991 kafka-server-start.sh -daemon $KAFKA_PATH/config/server.properties

4.2 停止kafka

kafka-server-stop.sh
或
kill -9 pid	# pid 进程号

4.3 topic

查看当前服务器中所有的topic

# zhost为zookeeper服务器IP或dns映射域名,zport为端口
kafka-topics.sh --list --zookeeper host:port

创建topic

# --replication-factor: 必须参数,用来设置主题的副本数,每个主题可以有多个副本,副本位于集群中不同broker上,也就是说副本的数量不能超过broker的数量,否则创建主题时会失败
# --partitions: 必须参数,主题分区数
kafka-topics.sh --create --zookeeper zhost:zport --replication-factor 1 --partitions 1 --topic test

删除topic

kafka-topics.sh --delete --zookeeper zhost:zport --topic test
# 或
kafka-topics.sh --delete --bootstrap-server khost:kport --topic test

查看topic详情

kafka-topics.sh --topic test --describe --zookeeper zhost:zport
# 或
kafka-topics.sh --topic test --describe --bootstrap-server khost:kport

修改topic的分区数

kafka-topic.sh --zookeeper zhost --alter --partitions 2 --topic test 
# 或
kafka-topic.sh --bootstrap-server khost --alter --partitions 2 --topic test 

4.4 生产者

kafka自带了一个在终端演示生产者发布消息的脚本 --kafka-console-producer.sh

运行该脚本会启动一个进程,在运行该脚本时可以传递相应配置以覆盖默认配置。

参数

  • –producer.config,用于加载一个生产者级别相关的配置文件
  • –producer-property 直接在启动命令中设置参数,覆盖默认配置的参数
  • –property 通过该命令可以设置消费者相关的配置
  • –broker-list 指定kafka的代理地址列表(必传)
  • –topic 消息被发送的目标主题(必传)
# 启动生产者,通过shell命令发送消息
# khost: kafka服务器,kport:端口
# --broker-list: 指的是kafka的服务端,可以是一个服务器也可以是集群
kafka-console-producer.sh --broker-list khost:kport --topic test

4.5 消费者

kafka自带了一个在终端演示消费者消费消息的脚本 --kafka-console-consumer.sh

# --from-beginning 查看这个topic所有数据
# --bootstrap-server: 指的是目标集群的服务器地址
kafka-console-consumer.sh --bootstrap-server khost:kport --from-beginning --topic test
要在Docker搭建Kafka,你可以按照以下步骤进行操作: 1. 首先,确保已经安装了DockerDocker Compose。 2. 创建一个名为`docker-compose.yml`的文件,并添加以下内容: ```yaml version: '2' services: zookeeper: image: confluentinc/cp-zookeeper:6.1.1 environment: ZOOKEEPER_CLIENT_PORT: 2181 ZOOKEEPER_TICK_TIME: 2000 ZOOKEEPER_SYNC_LIMIT: 2 ports: - "2181:2181" volumes: - ./data/zookeeper:/var/lib/zookeeper/data kafka: image: confluentinc/cp-kafka:6.1.1 depends_on: - zookeeper environment: KAFKA_BROKER_ID: 1 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092 KAFKA_METRIC_REPORTERS: io.confluent.metrics.reporter.ConfluentMetricsReporter KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true" KAFKA_CONFLUENT_SUPPORT_METRICS_ENABLE: "false" KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 ports: - "29092:29092" volumes: - ./data/kafka:/var/lib/kafka/data ``` 3. 在终端中,进入包含`docker-compose.yml`文件的目录,并运行以下命令启动Kafka和Zookeeper容器: ```bash docker-compose up -d ``` 4. 等待一段时间,直到容器启动完成。你可以使用以下命令检查容器的运行状态: ```bash docker-compose ps ``` 你应该能够看到`kafka`和`zookeeper`容器正在运行。 现在,你已经成功使用Docker搭建Kafka。你可以通过Kafka的9092端口进行访问,并且Zookeeper的2181端口也已经映射到主机的2181端口。 希望这能帮到你!如果还有其他问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值