kafka学习之支持内外网访问 - Go语言中文社区

kafka学习之支持内外网访问


需求描述:

在内网搭建了kafka单机服务,可以正常使用,但之后又需要将该服务共享给外网,使内外网都可以使用同一个服务。
其中内网kafka服务地址172.16.0.24:8083,其对应外网地址39.165.69.77:8083
zookeeper服务地址172.16.0.24:8082,其对应外网地址39.165.69.77:8082

解决方案:

更改kafka-server的配置文件即可

具体步骤:

1、我是在centos上搭建了kafka服务,进入安装目录cd /usr/local/kafka,打开配置文件vim ./config/server.properties,如下图所示:
在这里插入图片描述
关注listenersadvertised.listeners,根据注释大概可以看出,前者是对内的监听器,后者是对外的监听器。也就是说,只要配置好advertised.listeners,就足够让外部能够访问。

2、于是修改配置advertised.listeners=PLAINTEXT//39.165.69.77:8083,重启kafka服务,发现通过外网可以正常访问了。但新的问题来了,内网无法正常使用服务了!!!这显然有悖初衷,我是希望内外网能同时正常使用,怎么办呢?

3、重新看注释,可以知道,当advertised.listeners配置好后,上面的listeners就不可外部访问了,也就是说,只能是advertised.listeners作为对外的门面。到这里答案就水落石出,我们在advertised.listeners配置两个监听器就好了,如下图所示:
在这里插入图片描述
解释一下:
advertised_listeners 监听器会注册在 zookeeper 中;
当我们在内网对172.26.0.24:8084 请求建立连接,kafka 服务器会通过 zookeeper 中注册的监听器,找到 INSIDE 监听器,然后通过 listeners 中找到对应的通讯ip和端口172.26.0.24:8084
同理,当我们在公网对 39.165.69.77:8083 请求建立连接,kafka 服务器会通过 zookeeper 中注册的监听器,找到 OUTSIDE 监听器,然后通过 listeners 中找到对应的通讯ip和端口172.26.0.24:8083

总结:advertised_listeners 是对外暴露的服务端口,真正建立连接用的是 listeners

4、重启服务,验证ok

参考文章

https://segmentfault.com/a/1190000020715650

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/tuguai7887/article/details/103260224
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢