转载自:http://www.ericdai.cn/c/填坑记之Kafka_远程连接Kafka集群时需要注意的
kafka在实际生产环境中集群服务和生产者以及消费者不会总是在同一个网络中,如果不在一个网络中则会出现一些问题,下面就是我遇到的一个问题,分享给大家。
场景介绍
Kafka集群4个节点都在办公网,业务系统(生产者)在生产网。根据规定,生产网和办公网是隔离的,生产网不允许直接和办公网连接。现在我们需要业务系统将数据放到办公网中的Kafka集群中,于是就有了下面的解决方案。
解决方案
总体思路是通过公网进行转发,并且考虑到安全,在网络设备上进行了端口映射以及访问白名单。具体说就是申请一个公网ip,在网络设备上将这个公网ip和四个端口绑定,并将这四个端口映射到kafka集群的四个节点服务器上。
坑之所在
上述解决方案本身没有问题,理想情况下,业务系统的作为生产者用如下测试脚本就可以将消息发送到Kafka中,假设公网ip是:124.121.235.123,测试脚本如下:
./kafka-console-producer.sh --broker-list 124.121.235.123:9191,124.121.235.123:9192,124.121.235.123:9193,124.121.235.123:9194 --topic test
但是实际情况是:
填坑之道
在kafka集群中,在server.properties中修改如下kafka配置项:
advertised.listeners=PLAINTEXT://124.121.235.123:9194
默认该项配置是注释掉的,如果不修改的话,kafka默认使用listeners配置项或者localhost+port来生产或者消费消息,但是现在的场景显然使用是不可行的,因为listeners配置的是办公网内网的ip,与生产网并不通,所以需要将该配置项的ip修改为远程服务器需要访问kafka集群的ip,对应到上述场景的话就是我们的公网ip。
网友评论