win10 docker zookeeper和kafka搭建

好久没用参与大数据之类的开发了,近日接触到一个项目中使用到kafka,因此要在本地搭建一个简易的kafka服务。时间比较紧急,之前有使用docker的经验,因此本次就使用docker来完成搭建。在搭建过程中出现的一些问题,及时记录,以便后期再遇见。

环境

  • 计算机环境:win10 22H2

  • docker Version:4.13.1 (90346)

zookeeper和kafka搭建

由于zookeeper与kafka是集群性质的,本次使用的目的简单就是开发一个Topic 生产者,然后通过消费者进行验证

zookeeper与kafka(理论知识后期补充吧)

zookeeper镜像下载

docker pull wurstmeister/zookeeper

kafka镜像的下载

docker pull wurstmeister/kafka

搭建网桥

docker network create kafka-network

启动zookeeper

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

启动kafka

 docker run -d --name kafka --network kafka-network -p 9092:9092   -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181   -e KAFKA_LISTENERS=PLAINTEXT://kafka:9092   -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092  wurstmeister/kafka

查看IP地址

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'  kafka    

由于使用的是网桥,可以通过服务的名称来描述ip。

kafka 日志中报错

WARN [Producer clientId=console-producer] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient) 警告可能是由于 Kafka 代理(broker)未正确配置或者未正确运行导致的 或者 WARN [Controller id=1001, targetBrokerId=1001] Connection to node 1001 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient) 警告 Kafka 控制器(Controller)无法与本地主机的 Kafka 代理建立连接

解决办法

上述警告,Kafka 消费者无法连接到本地主机的 Kafka 代理(broker),经过检查,发现当时PLAINTEXT://kafka:9092 配置错误,引用的是PLAINTEXT://localhost:9092。 修改PLAINTEXT://localhost:9092 ----> PLAINTEXT://kafka:9092 最终完美解决

在本地操作kafka报错

%3|1711527992.579|FAIL|rdkafka#producer-1| [thrd:kafka:9092/1002]: kafka:9092/1002: Failed to resolve 'kafka:9092': 不知道这样的主机。 (after 2269ms in state CONNECT) %3|1711527992.579|ERROR|rdkafka#producer-1| [thrd:app]: rdkafka#producer-1: kafka:9092/1002: Failed to resolve 'kafka:9092': 不知道这样的主机。 (after 2269ms in state CONNECT) %3|1711527993.640|FAIL|rdkafka#producer-1| [thrd:kafka:9092/1002]: kafka:9092/1002: Failed to resolve 'kafka:9092': 不知道这样的主机。 (after 48ms in state CONNECT, 1 identical error(s) suppressed) %3|1711527993.640|ERROR|rdkafka#producer-1| [thrd:app]: rdkafka#producer-1: kafka:9092/1002: Failed to resolve 'kafka:9092': 不知道这样的主机。 (after 48ms in state CONNECT, 1 identical error(s) suppressed)

解决办法

这个错误是由于程序无法解析主机名 "kafka:9092" 导致的。所以我想到改网络,通过ip与域名的配置。由于是win10系统所有需要修改:C:\Windows\System32\drivers\etc\hosts 文件末尾加上

127.0.0.1   zookeeper
127.0.0.1   kafka
  • 21
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Docker部署ZookeeperKafka的步骤: 1. 安装DockerDocker Compose 2. 创建Docker Compose文件 在本地目录中创建一个名为docker-compose.yml的文件,并添加以下内容: ``` version: "3" services: zookeeper: image: zookeeper ports: - "2181:2181" environment: ZOO_MY_ID: 1 volumes: - ./data/zookeeper/data:/data - ./data/zookeeper/datalog:/datalog kafka: image: wurstmeister/kafka ports: - "9092:9092" environment: KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_CREATE_TOPICS: "test:1:1" volumes: - ./data/kafka:/kafka depends_on: - zookeeper ``` 此文件定义了两个服务:ZookeeperKafkaZookeeper服务使用官方的Zookeeper镜像,Kafka服务使用wurstmeister的Kafka镜像。 3. 启动服务 在终端中,进入含有docker-compose.yml文件的目录中,然后运行以下命令: ``` docker-compose up -d ``` 此命令将启动ZookeeperKafka服务,并将它们作为Docker容器在后台运行。 4. 验证服务 在浏览器中访问http://localhost:2181/,应该会看到Zookeeper的管理界面。您还可以使用以下命令在Kafka上创建一个测试主题: ``` docker-compose exec kafka \ kafka-topics.sh --create \ --zookeeper zookeeper:2181 \ --replication-factor 1 \ --partitions 1 \ --topic test ``` 使用以下命令在Kafka上发布一条消息: ``` docker-compose exec kafka \ bash -c "echo 'hello, world' | kafka-console-producer.sh --broker-list localhost:9092 --topic test && echo 'Produced 1 message.'" ``` 最后,使用以下命令在Kafka上消费消息: ``` docker-compose exec kafka \ kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning ``` 如果您能够在终端中看到“hello, world”消息,则表明Kafka已经成功运行。 5. 停止服务 在终端中,进入docker-compose.yml文件所在的目录中,并运行以下命令: ``` docker-compose down ``` 此命令将停止并删除ZookeeperKafka容器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值