背景:

业务dev环境在vpc下,单网卡,内部使用私有ip进行通信,外部使用机房ip进行NAT;
当前配置dev环境日志采集链路为:app server(vpc)→ ds server(公网)→ kafka server (vpc);
其中kafka实际默认注册到zk中的地址为私有ip,ds server无法访问;

诉求:

kafka需要同时支持私有ip给vpc内其他业务使用,也需要注册公网ip给外部服务(如ds server)访问使用;

操作:

参考:https://juejin.cn/post/6893410969611927566
关键配置为:

listeners=EXTERNAL://10.150.0.6:9096,INTERNAL://10.150.0.6:9095
advertised.listeners=INTERNAL://10.150.0.6:9095,EXTERNAL://10.194.106.61:9096
inter.broker.listener.name=INTERNAL
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT

备注:

  • 1,关于advertised.listeners,listeners的绑定问题,实际就通过EXTERNAL,INTERNAL名字进行,可参考:http://www.devtalking.com/articles/kafka-practice-16/
  • 2,文档中均说明上述配置broker信息为配置到zk中,实际上当前bootstrap-servers也同步支持相应的metadata信息获取;
  • 3,kafka实际操作流程为:基于bootstrap-servers(对外屏蔽了zk,同时长期考虑对zk进行替换)获取到metadata信息(如broker列表);之后再将数据写入broker中;
  • 4,实际配置单节点kafka集群时,会有各种问题,最后仍使用多节点方式;