我们在单个aws ec2示例上安装了kafka和zookeeper。我们有kafka生产者和消费者在不同的ec2示例上运行,这些示例位于同一vpc上,并且与kafka示例具有相同的安全组。在producer或consumer配置中,我们使用kafka服务器的内部ip地址来连接它。
但是我们注意到,我们需要提到ec2服务器的公共ip地址,如广告中所述。listeners允许生产者和消费者连接到kafka服务器:
advertised.listeners=PLAINTEXT://PUBLIC_IP:9092
此外,我们还必须将每个运行生产者和消费者的ec2服务器的公共ip地址和9092端口上的开放流量列入白名单。
我们希望流量使用内部ip地址流动。有没有一种方法,我们不需要白名单上的公共ip地址和开放交通9092端口上的每一个我们的服务器运行生产者或消费者?
2条答案
按热度按时间nle07wnf1#
如果您不想为任何一个服务器打开对所有服务器的访问,我建议在应用程序的服务器前面添加一个适当的高性能web服务器,如nginx或apachehttpd,作为反向代理。通过这种方式,您还可以添加ssl加密,并且您的服务器保持在专用网络上,而只有web服务器会被公开。这很容易,你可以找到许多教程如何设置它。就像这个:http://webapp.org.ua/sysadmin/setting-up-nginx-ssl-reverse-proxy-for-tomcat/
fdx2calv2#
由于Kafka可能需要工作的生态系统的可变性质,只有明确声明Kafka可以使用的位置才有意义。确保任何系统的外部部分都可以通过ip地址访问的唯一方法是确保您使用的是外部ip地址。