在kafka的使用过程中,由于部署网络环境差异,各个生产者和消费者可能无法在同一个网络平面,如果kafka的连接配置使用的是内网地址,这样会造成不同网络平面的生产者和消费者无法正常连接kafka集群,解决此问题的方法是启用kafka的外网访问配置,建议使用域名访问的方式,具体的操作如下:
假设有3台机器,分别为192.168.1.1、192.168.1.2、192.168.1.3;这3台机器分别通过统一的接口机(192.168.1.4)对外暴露服务。
1、在3台kafka机器和接口机分别进行如下域名配置
test.kafka01.cn 192.168.1.1
test.kafka02.cn 192.168.1.2
test.kafka03.cn 192.168.1.3
2、在3台kafka的机器对kafka配置文件中增加以下配置
# 192.168.1.1
advertised.listeners=PLAINTEXT://test.kafka01.cn:9091
# 192.168.1.2
advertised.listeners=PLAINTEXT://test.kafka02.cn:9092
# 192.168.1.3
advertised.listeners=PLAINTEXT://test.kafka03.cn:9093
3、在接口机上配置以下四层转发规则
192.168.1.4 9091 -> 192.168.1.1 9091
192.168.1.4 9092 -> 192.168.1.2 9092
192.168.1.4 9093 -> 192.168.1.3 9093
4、重启kakfa集群,完成kafka开放外网访问配置
5、在生产者和消费者的主机上配置域名,域名对应IP根据实际情况进行调整,如网络可达接口机,则进行如下配置
test.kafka01.cn 192.168.1.4
test.kafka02.cn 192.168.1.4
test.kafka03.cn 192.168.1.4
6、运行生产和消费程序,验证程序是否正常