现场环境:机器A是生产者,机器B的IP10.2.21.33部署Nginx转发请求,集群C一共5台机器部署了一个Kafka集群
机器A可以访问机器B不能访问集群C,机器B可以访问集群C
已按照https://www.orchome.com/1393 该提问设置了Nginx,但是遇到一些问题,以下是配置
Nginx配置:
stream {
server {
listen 9092;
proxy_pass kafka;
}
upstream kafka {
server kafka01:9092 weight=1;
server kafka02:9092 weight=1;
server kafka03:9092 weight=1;
server kafka04:9092 weight=1;
server kafka05:9092 weight=1;
}
}
客户端host配置:
10.2.21.33 kafka01
10.2.21.33 kafka02
10.2.21.33 kafka03
10.2.21.33 kafka04
10.2.21.33 kafka05
Nginx服务器上host配置:
10.2.5.1 kafka01
10.2.5.9 kafka02
10.2.5.10 kafka03
10.2.5.11 kafka04
10.2.5.72 kafka05
在没有配置kerberos情况下可以正常使用,但如果启用了kerberos就无法使用了,会报以下错误
org.apache.kafka.common.errors.SaslAuthenticationException: Authentication failed during authentication due to invalid credentials with SASL mechanism GSSAPI
Exception in thread "Thread-0" java.lang.NullPointerException
at producer.ProducerStarter$1.onCompletion(ProducerStarter.java:86)
at org.apache.kafka.clients.producer.KafkaProducer.doSend(KafkaProducer.java:920)
at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:846)
at producer.ProducerStarter.run(ProducerStarter.java:79)
at java.lang.Thread.run(Thread.java:745)
另外测试了如果把kafka集群拆掉,只做单点,启用kerberos,并进行如下修改
Nginx配置:
stream {
server {
listen 9092;
proxy_pass kafka;
}
upstream kafka {
server kafka01:9092 weight=1;
}
}
客户端host配置:
10.2.21.33 kafka01
Nginx服务器上host配置:
10.2.5.1 kafka01
以上配置的情况下是可以正常使用的,有没有大神知道需要如何修改才可以将nginx作为一个代理转发kafka请求到带有kerberos的kafka服务器上。