配置kafka容器访问ip踩坑
- 这是分配kafka内外网访问的方法
# 通过任意IP的9003访问的定义为OUTSIDE,任意IP9002访问的定义为INSIDE
listeners=OUTSIDE://:9093,INSIDE://:9092
# 连上Kafka之后,Broker会根据outside还是inside返回对应的值,也就是配置里的
advertised.listeners=OUTSIDE://<外网IP>,INSIDE://<内网IP>:9092
# OUTSIDE,INSIDE映射协议,OUTSIDE和INSIDE只是一个标志,可以替换为任意其他,只需要映射即可
listener.security.protocol.map=INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
inter.broker.listener.name=INSIDE
考虑一个场景:
如果有内外网之分,内网client连接Kafka使用9002(即使配置了多个broker,它只会连接某个broker的9092),由此该broker确定了此client使用的是内网,这样子,要让client去连接其他broker时(client经常需要根据消息的hash值取访问不同的broker的),就会返回该broker的INSIDE地址,这样子就解决了当client需要访问其他broker时,拿到的是适合自己网络的IP。如果不这么做,那么client就没办法访问到其他broker了。
- 127.0.0.1和0.0.0.0和localhost和本机IP在监听时有什么区别
127.0.0.1即是环回地址之一,不过网卡,访问本机,可以用于验证TCP实现是否有问题,比如访问127.0.0.1