Kafka与Docker 3节点在不同的主机 - 经纪人可能无法使用

时间:2018-02-02 06:53:18

标签: docker apache-kafka

我在三个不同的码头主机上玩了wurstmeister / kafka图像 和主机IP是

  • 10.1.1.11
  • 10.1.1.12
  • 10.1.1.13

我输入这些命令来运行图像:

  • 10.1.1.11:

    sudo docker run --name kafka -p 9092:9092 --restart always \ 
      -e KAFKA_BROKER_ID="1" \ 
      -e KAFKA_ADVERTISED_HOST_NAME="10.1.1.11" \ 
      -e KAFKA_ADVERTISED_PORT="9092" \ 
      -e KAFKA_ZOOKEEPER_CONNECT="0.0.0.0:2181,10.1.1.12:2181,10.1.1.13:2181" \ 
      -d wurstmeister/kafka
    
  • 10.1.1.12:

    sudo docker run --name kafka -p 9092:9092 --restart always \ 
      -e KAFKA_BROKER_ID="2" \ 
      -e KAFKA_ADVERTISED_HOST_NAME="10.1.1.12" \ 
      -e KAFKA_ADVERTISED_PORT="9092" \ 
      -e KAFKA_ZOOKEEPER_CONNECT="10.1.1.11:2181,0.0.0.0:2181,10.1.1.13:2181" \
      -d wurstmeister/kafka
    
  • 10.1.1.13:

    sudo docker run --name kafka -p 9092:9092 --restart always \ 
      -e KAFKA_BROKER_ID="3" \ 
      -e KAFKA_ADVERTISED_HOST_NAME="10.1.1.13" \ 
      -e KAFKA_ADVERTISED_PORT="9092" \ 
      -e KAFKA_ZOOKEEPER_CONNECT="10.1.1.11:2181,10.1.1.12:2181,0.0.0.0:2181" \ 
      -d wurstmeister/kafka
    

运行这些命令时,第一个命令始终显示:  Broker may not be available 警告,其余的两个都没有出现这个问题。

我也在使用kafka制作人测试。如果主机出现此问题,则消息发送失败并显示消息

LEADER_NOT_AVAILABLE

如果没有出现此问题,则消息发送成功。

当我在10.1.1.11中重新启动图片时,问题已修复,但10.1.1.12会出现同样的问题,依此类推。

我搜索此问题的方法解决方法是将KAFKA_ADVERTISED_HOST_NAME设置为docker host。但我已经做到了。 我不知道为什么会出现这个问题。

10.1.1.11上的我的Zookeeper命令:

sudo docker run --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 \ 
  --restart always \ 
  -e ZOO_MY_ID="1" \
  -e ZOO_SERVERS="server.1=0.0.0.0:2888:3888 server.2=10.1.1.12:2888:3888 server.3=10.1.1.13:2888:3888" \
  -d zookeeper:latest

1 个答案:

答案 0 :(得分:0)

来自OP的

解决方案。

问题是防火墙拦截器容器连接到docker主机。 所以我无法在docker容器内telnet docker host 解决方案是将规则设置为iptables

sudo iptables -I INPUT 1 -i <docker-bridge-interface> -j ACCEPT

我找到了来自https://github.com/moby/moby/issues/24370

的解决方案