springboot客户端用外网访问一个服务器,再通过这个服务器的3个端口映射到内部的3台服务器listeners属性该如何设置?

胡Ba一.ˇ° 发表于: 2018-12-04   最后更新时间: 2018-12-04 17:04:31   5,021 游览

大佬我又来了...还望费心看看我已经要觉悟了.先谢过了

问题描述:
由于环境限制.我现在只有一台服务器(a)可以通过外网ip进行访问,另外三台服务器(b,c,d)都得通过ssh命令从a跳转到b,c,d.那好.(以下ip地址均由a,b,c,d代替)
我的kafak集群和zookeeper集群都是部署在 b,c,d上边的.
a已经做好了ip和端口的映射分别是 :

a:9090->b:9092
a:9091->c:9092
a:9092->d:9092

然后这时候我用springboot整合kafka之后打算发消息测试好不好使

spring:
  kafka:
#    bootstrap-servers: a:9090
#    bootstrap-servers: a:9090,a:9091,a:9092

这几种ip配置的方式我都试过了...都会报一个错


2018-12-04 16:59:19.408  INFO 15452 --- [ntainer#1-1-C-1] o.a.k.c.c.internals.AbstractCoordinator  : [Consumer clientId=consumer-7, groupId=test2] Group coordinator 10.20.129.161:9090 (id: 2147483486 rack: null) is unavailable or invalid, will attempt rediscovery
2018-12-04 16:59:19.476  WARN 15452 --- [ntainer#1-2-C-1] org.apache.kafka.clients.NetworkClient   : [Consumer clientId=consumer-8, groupId=test2] Connection to node 2147483486 could not be established. Broker may not be available.




2018-12-04 16:59:20.327  WARN 15452 --- [ntainer#0-1-C-1] org.apache.kafka.clients.NetworkClient   : [Consumer clientId=consumer-3, groupId=test2] Connection to node 161 could not be established. Broker may not be available.
2018-12-04 16:59:20.347  WARN 15452 --- [ntainer#0-0-C-1] org.apache.kafka.clients.NetworkClient   : [Consumer clientId=consumer-2, groupId=test2] Connection to node 181 could not be established. Broker may not be available.
2018-12-04 16:59:20.446  WARN 15452 --- [ntainer#1-0-C-1] org.apache.kafka.clients.NetworkClient   : [Consumer clientId=consumer-6, groupId=test2] Connection to node 171 could not be

b,c,d的id分别是161,171,181, 这个时候应该说明它已经通过a映射到了b,c,d了吧但是怎么就是连不上呢....

发表于 2018-12-04
添加评论

不行的,kafka会自动发现其他的节点的。

额..大佬...能稍微细说一下嘛...

比如,3个节点的kafka集群向zk注册自己的信息,(我是a,我的IP和端口是xx,我是b,我的ip和端口是xx,c是...),这个时候呢,程序连接a这个节点的时候,a就会告诉程序,我还有b、和c,ip和端口分别是什么,但是你的程序连接这些端口的时候是不通的。

那到底需要怎样配置broker...才能使这个kafka集群可以通过外网映射的方式访问呢?
需要改动什么配置嘛.希望大佬告知一下...

用映射吧,配置host,把服务器和端口都对对应上转发后的。

好.感谢大佬.我试试 网上好多人说如果要用外网访问的话 配置advertised.listeners=PLAINTEXT://x.x.x.x:9090 就可以啦.可是我怎么试都不行


你的答案

查看kafka相关的其他问题或提一个您自己的问题