2016-11-04 304 views
1

场景:我需要从我的Docker化Kafka容器中推送一条消息给我的队友的物理机器。Kafka和Docker:将Kafka消息推送给另一个Docker消费者

一个队友(我们称他为Alfred),他的kafka直接安装在Windows上。

另一个(我们称他为Bob),也使用Dockerized Kafka容器。

结果迄今:

我们已经能够从我的卡夫卡推卡夫卡生产的消息包含到铝的计算机的非DOCKERIZED消费者实例的消费者。所以我们知道没有进一步的配置;生产者侧;是必须的。访问Rob Reris的dockerized kafka证明更棘手。在使用命令docker network inspect bridge时,我们注意到dockerized容器是从公司网络的一般IPv4地址封装而来的。

enter image description here

我们确定并试图测试一些潜在的问题。

1.接收方VM的端口转发规则。 已尝试调整端口转发规则。没有解决方案。 2.重新配置位于opt/kafka_2.11-0.9.0.0/config /目录下的server.properties。 无解 3.重新配置server.properties位于卡夫卡容器在/ etc /卡夫卡/ 无解 4.添加一个额外的行,以我们正在利用卡夫卡业务构建的泊坞窗,compose.yml文件,并重建卡夫卡Bob的容器。 Line Added:KAFKA_LISTENERS: "PLAINTEXT://0.0.0.0-9092"

到目前为止,我向Bob的内部网络IP发送测试消息时还没有收到。

我的测试消息:

/bin/kafka-console-producer.sh --broker-list {Bob's IPv4}:9092 --topic test 

难道是因为我确实需要针对他的Dockerized IP ...不知何故?虽然我确定我们已经包含了VituralBox的站点到站点端口转发。

援助赞赏。

回答

0

您可能面临的问题是与Kafka向Zookeeper通知客户端无法访问私有IP相关的众所周知的问题。

当你dockerize卡夫卡你有两大选择:

  • 启动卡夫卡容器中使用的网络模式=主机所以卡夫卡使用主机网络堆栈。
  • 使用容器端口转发并使Kafka通告主机IP和正在使用的端口,将Kafka配置“advertised.listeners”设置为正确的值。为了自动执行此操作,可能需要创建引导脚本,以在运行服务之前找出主机IP(和端口)并设置Kafka属性文件。看看wurstmeister/kafka-docker