Kafka内外网访问分离配置

2,441 阅读1分钟

前段时间公司需要开放kafka集群到公网使用,为了实现内外网访问分离,查了一些资料都不太适合,踩了很多坑记录一下。

KAFKA集群三个节点:192.168.1.1、192.168.1.2、192.168.1.3

第一步:修改kafka配置,启动kafka

cd kafka/config
vim server.properties

#节点1配置
broker.id=0
host.name=192.168.1.1
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://kafka-cluster1.com:9092

#节点2配置
broker.id=1
host.name=192.168.1.2
listeners=PLAINTEXT://0.0.0.0:9093
advertised.listeners=PLAINTEXT://kafka-cluster1.com:9093

#节点3配置
broker.id=2
host.name=192.168.1.3
listeners=PLAINTEXT://0.0.0.0:9094
advertised.listeners=PLAINTEXT://kafka-cluster1.com:9094

第二步:使用nginx代理kafka访问

cd nginx
vim nginx.conf
#重要:在最后添加stream配置,跟http同级
stream {
    proxy_connect_timeout 3s;
    include /yourpath/nginx/vhosts/stream/*.conf;
}
#在vhost下新建文件夹stream
cd nginx/vhosts
mkdir stream
cd stream
vim yourdomain.conf
#添加如下配置
  upstream kafka_cluster1 {
    server 192.168.1.1:9092 max_fails=3 fail_timeout=30s;
  }
  upstream kafka_cluster2 {
    server 192.168.1.2:9093 max_fails=3 fail_timeout=30s;
  }
  upstream kafka_cluster3 {
    server 192.168.1.3:9094 max_fails=3 fail_timeout=30s;
  }
  
  server {
    listen          9092;
    proxy_timeout   300s;
    proxy_pass	kafka_cluster1;
  }

  server {
    listen          9093;
    proxy_timeout   300s;
    proxy_pass	kafka_cluster2;
  }

  server {
    listen          9094;
    proxy_timeout   300s;
    proxy_pass	kafka_cluster3;
  }

第三步:重新加载nginx配置

第四步:在配置文件中配置kafka访问地址:(内网访问域名可以配置dns或者添加host解决)

spring.kafka.bootstrap-servers=kafka-cluster1.com:9092,kafka-cluster1.com:9093,kafka-cluster1.com:9094

友情提醒:KAFKA开放公网一定要主要安全,以防被黑客攻击。以上述配置为例,需要对nginx所在服务器9092,9093,9094端口,在安全组添加可访问IP白名单的限制,另外推荐对kafka添加SASL/SCRAM认证。