超详细建议收藏 Kafka如何进行内外网分流

  • 参数详解listenersadvertised.listenerslistener.security.protocol.mapinter.broker.listener.namesecurity.inter.broker.protocolcontrol.plane.listener.name示例说明
  • 几种场景的配置方式1. 一台机器部署一套集群2. 内网环境多机器部署集群3. 内网和外网分流3. 内网和外网和Controller分流
Kafka运维管控平台LogiKM》 ??更强大的管控能力?? 更高效的问题定位能力 更便捷的集群运维能力 更专业的资源治理 更友好的运维生态
1参数详解listeners侦听器列表 , 这里配置的监听器底层调用的是
ServerSocketAdaptor.bind(SocketAddress local)那么这个说明什么意思呢?说明你配置的监听器将被用于监听网络请求 。简单理解就是你建立监听一个通道,别人能够通过这个通道跟你沟通 。所以我们需要设置 IP:Port.
这个属性的格式为:
listeners = listener_name://host_name:port,listener_name2://host_nam2e:port2
  1. 可以同时配置多个, 并且用逗号隔开
  2. 监听器的名称和端口必须是唯一的,端口相同,就冲突了
  3. host_name如果为空,例如(listeners = ://host_name:port),则会绑定到默认的接口(网卡),一般情况下是localhost , 底层调用的是JAVA.net.InetAddress.getCanonicalHostName()
  4. 将host_name设置为0.0.0.0 则会绑定所有的网卡, 也就是说不管从哪个网卡进入的请求都会被接受处理 。但是请注意,假如你设置的是0.0.0.0,那么advertised.listeners 必须要设置,因为advertised.listeners默认请看下使用的是listeners的配置发布到zk中,发布到zk中是给其他Brokers/Clients 来跟你通信的,你设置0.0.0.0,谁知道要请求哪个IP呢, 所以它必须要指定并明确 IP:PORT 。具体详情请看下面 示例3
  5. listener_name 是监听名,唯一值, 他并不是安全协议(大部分人都会搞错),因为默认的4个安全协议已经做好了映射, 例如 :PLAINTEXT ==> PLAINTEXT . 所以你经常看到的配置


      推荐阅读