Docker的Kafka外网访问

kafka镜像使用wurstmeister/kafka:2.11-0.11.0.2

启动镜像,创建topic、消费者、生产者一切顺利。

使用java客户端访问时,不断的报

TimeoutException java.io.EOFException: null

update metadata timeout之类的错误。

debug后发现,这个问题和之前redis集群的问题类似(可以参见我之前的另一篇redis的文章),

程序获得了cluster集群的信息,包括节点和分区等metadata,但是返回给信息是kafka01(如果使用的是IP,那就更不好解决了),外部机器拿到这个hostname是无法访问docker内的机器的。

因为第一次用kafka,看了看官网的server.properties参数的介绍,尝试把以下几个参数统一设置为hostname而不是用IP(没有逐一验证DEPRECATED的参数是否需要配置,为了测试就都配上了)。

advertised.host.name = kafka01 (DEPRECATED)

advertised.listeners = PLAINTEXT://kafka01:9092(如果未设置listeners则该参数生效)

advertised.port = 9092 (DEPRECATED)

listeners=PLAINTEXT://kafka01:9092

关键的配置:

docker内的hosts使用条目:192.168.0.33    kafka01

docker外的宿主机hosts使用条目,不要使用127.0.0.1这个地址:

######### ip for docker beginr############

192.168.3.25 zk01

192.168.3.25 kafka01

即内外网均使用hostname,但各自的ip配置不同。

之前redis尝试过这个方式,但是生成的nodes.conf似乎不能识别hostname只能用ip,可能因为外网的hosts配置的ip使用的是127.0.0.1 localhost这个配置导致错误。以后试试使用hostname+实际的ip看看能不能解决jediscluster客户端无法访问docker中redis集群的问题。

docker容器不能被外网访问

07-01

[img=http://img.bbs.csdn.net/upload/201606/30/1467295498_765881.png][/img]rn1.我本机是win7,装了一个vmware,vmware里面是centos6.5系统,docker1.7启动了一个容器。rnrn2.win7主机,和虚拟机的防火墙都已经全部关闭了。rnrn3.win7主机和vmware虚拟机的路由表如下图rnrn 3.1 win7 主机路由表rnrn 其中有一条是我自己加的一个路由配置:rnrn route add 172.17.0.0 mask 255.255.0.0 192.168.137.1 IF 19​rnrn[img=http://img.bbs.csdn.net/upload/201606/30/1467295528_810694.png][/img]rnrn 3.2 虚拟机中的centos(docker宿主主机)的路由配置rnrn 虚拟机的路由我没有改变过rnrn [img=http://img.bbs.csdn.net/upload/201606/30/1467295539_763128.png][/img]rnrn4.在docker容器里面的ping情况如下rnrn 4.1 docker容器(172.17.0.1)ping www.baidu.com ; 可以通rnrn [img=http://img.bbs.csdn.net/upload/201606/30/1467295552_854688.png][/img]rnrn 4.2 docker容器ping win7主机ip(192.168.0.100) 可以通rnrn ​[img=http://img.bbs.csdn.net/upload/201606/30/1467295565_826805.png][/img]rnrn 4.3 vmware里面的centos docker宿主主机 ping docker容器ip 可以通过rnrn [img=http://img.bbs.csdn.net/upload/201606/30/1467295585_886599.png][/img]rnrn 4.4 win7主机ping docker的docker0网桥 可以通rnrn [img=http://img.bbs.csdn.net/upload/201606/30/1467295607_631964.png][/img]rnrn 4.5 win7主机 ping docker内的docker容器 不通,不通,不通​rnrn [img=http://img.bbs.csdn.net/upload/201606/30/1467295616_648269.png][/img]rnrn求大神解答下。为啥docker 内的容器可以访问 内网,外网;但是内网的主机为啥就访问不了docker内的容器呢?rnrn rnrn

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试