kafka集群穿透到公网实现过程
最佳答案 问答题库708位专家为你答疑解惑
1. 本地两台机器:
kafka端口:9092
r730_1:192.168.0.11
r730_2:192.168.0.22
2.未穿透到公网前kafka配置(只能进行内网读取):
r730_1:
listeners=SASL_PLAINTEXT://192.168.0.11:9092
r730_2:
listeners=SASL_PLAINTEXT://192.168.0.22:9092
kafka会把上面两个配置写到zookeeper集群。
然后内网脚本代码里配置的是192.168.0.11:9092,脚本会通过该配置,到zookeeper集群拿到(192.168.0.11:9092,192.168.0.22:9092)其中一个配置,然后进行通信,达到负载均衡的效果。
3.只进行公网穿透,没进行kafka外网配置,导致外网脚本不能连接kafka的场景:
r730_1:
listeners=SASL_PLAINTEXT://192.168.0.11:9092 (把这个穿透到云服务器的9092端口)
r730_2:
listeners=SASL_PLAINTEXT://192.168.0.22:9092(把这个穿透到云服务器的9093端口)
然后外网代码里配置云服务器穿透后的IP地址: x.x.x.x:9092
然后外网脚本会通过该穿透地址到zookeeper集群获取到(192.168.0.11:9092,192.168.0.22:9092)其中一个配置,然后对获取到的地址进行通信。
当时因为获取到的是内网地址,导致外网脚本无法通过获取到的地址连接到kafka。
4.进行公网穿透,进行kafka外网配置,但是没有进行内外网分流,导致内外网脚本都走公网,耗费云服务器带宽的场景:
r730_1:
listeners=SASL_PLAINTEXT://192.168.0.11:9092 (把这个穿透到云服务器的9092端口)
advertised.listeners=SASL_PLAINTEXT:// x.x.x.x:9092 (这里填写穿透后的地址)
r730_2:
listeners=SASL_PLAINTEXT://192.168.0.22:9092(把这个穿透到云服务器的9093端口)
advertised.listeners=SASL_PLAINTEXT:// x.x.x.x:9093(这里填写穿透后的地址)
当填写了advertised.listeners地址以后,kafka会把advertised.listeners写入zookeeper,而不写入listeners地址。
即:kafka会把(SASL_PLAINTEXT:// x.x.x.x:9092,SASL_PLAINTEXT:// x.x.x.x:9093)写入zookeeper。
外网脚本配置地址为 x.x.x.x:9092,通过该地址连接到kafka,然后获取到(SASL_PLAINTEXT:// x.x.x.x:9092,SASL_PLAINTEXT:// x.x.x.x:9093)
其中一个地址,然后连接外网地址进行通信,连接到kafka。
内网脚本配置地址为192.168.0.11:9092,通过该地址连接到kafka,然后获取到(SASL_PLAINTEXT:// x.x.x.x:9092,SASL_PLAINTEXT:// x.x.x.x:9093)
其中一个地址,由于内网脚本获取到的也是外网地址,所以内网脚本也会连接外网地址进行通信,这样会导致云服务器带宽压力大。
5.进行公网穿透,进行kafka外网配置,并且通过 绑定域名 + 修改hosts,达到内外网分流的场景:
r730_1:
listeners=SASL_PLAINTEXT://192.168.0.11:9092 (把这个穿透到云服务器的9092端口)
advertised.listeners=SASL_PLAINTEXT://kafka.xxx.cn:9092 (云服务器的9092绑定到kafka.xxx.cn)
r730_2:
listeners=SASL_PLAINTEXT://192.168.0.22:9092(把这个穿透到云服务器的9093端口)
advertised.listeners=SASL_PLAINTEXT://kafka2.xxx.cn:9093(云服务器的9093绑定到kafka2.xxx.cn)
然后zookeeper会把(SASL_PLAINTEXT://kafka.xxx.cn:9092,SASL_PLAINTEXT://kafka2.xxx.cn:9093)写入zookeeper。
外网脚本配置地址为kafka.xxx.cn:9092,通过该地址连接到kafka,然后获取到(SASL_PLAINTEXT://kafka.xxx.cn:9092,SASL_PLAINTEXT://kafka2.xxx.cn:9093)
其中一个地址,然后连接外网地址进行通信,连接到kafka。
内网脚本配置地址为kafka.xxx.cn:9092,
在内网服务器的hosts文件需配置:
192.168.0.11 kafka.xxx.cn
192.168.0.22 kafka2.xxx.cn
内网脚本通过kafka.xxx.cn:9092连接到kafka,然后hosts做一个映射,通过内网IP地址192.168.0.11连接r_7301,然后获取到(SASL_PLAINTEXT://kafka.xxx.cn:9092,SASL_PLAINTEXT://kafka2.xxx.cn:9093)其中一个配置。
由于在hosts里做了映射,所以相当于内网脚本获取的地址是(192.168.0.11:9092,192.168.0.22:9092)其中一个配置,这样就不会走外网地址了。效率更高,也节省云服务器带宽。
参考文章:
https://blog.csdn.net/weixin_44198560/article/details/130244015
https://www.ngui.cc/el/1990221.html?action=onClick
https://blog.csdn.net/lsr40/article/details/84135959
https://blog.csdn.net/weixin_42655822/article/details/109452272
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"kafka集群穿透到公网实现过程":http://eshow365.cn/6-14145-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!