一、kafka配置

1.1 配置文件修改

vim /usr/local/kafka/config/server.properties

listeners=PLAINTEXT://:9092
# 必须声明域名
advertised.listeners=PLAINTEXT://test.kafka:9092

1.2 hosts绑定(必须绑定)

# vim /etc/hosts
# host 绑定本地内网ip
10.0.26.26 test.kafka

二、nat服务器配置

# 以下是双网卡的例子:eth1是内网,eth0是外网
-A PREROUTING -i eth1 -p tcp --dport 5672 -j DNAT --to-destination kafka外网ip
-A PREROUTING -i eth1 -p tcp --dport 9092 -j DNAT --to-destination kafka外网ip
-A POSTROUTING -d kafka外网ip -o eth0 -p tcp -j SNAT --to-source NAT服务外网ip

三、nat同网段内网服务器配置

1.1 hosts绑定

# vim /etc/hosts
NAT服务内网ip test.kafka

1.2 客户端kafka配置

[kafka]
host = NAT服务内网ip:19092

四、原理

  1. 客户端连接kafka服务器:通过nat服务器内网连接至真实的kafka地址
  2. kafka元数据返回advertised.listeners地址给客户端
  3. 客户端获取到:test.kafka:9092,此行本地绑定的hosts将数据推送至nat服务器,完成完整的数据推送