服务器 > 服务器 > Linux

Nginx反向代理Kafka集群配置详解

23人参与 2025-08-18 Linux

前言

kafka集群的网络没法被客户端直接访问,中间需要有个代理。正常网络情况下,kafka会给客户端返回所有的broker地址,如果客户端无法访问到broker就会报错,所以kafka给客户端返回的地址需要是客户端能访问的代理服务器地址。

本文的测试环境中,使用nginx来反向代理kafka集群。nginx和kafka部署在同一台机器上,使用firewalld确保只开放8000端口,拒绝机器外访问kafka的端口。

kafka配置

因为使用的是kraft,所以修改 config/kraft/server.properties配置文件,只需要修改advertised.listeners的配置。如下,plaintext指的是客户端访问地址,controller因为是kafka内部集群通信才用到,所以只需要修改plaintext为nginx代理地址即可。plaintext试了需要写成hostname,而不能是ip地址,否则客户端还是会报错。

# 旧配置,plaintext为kakfa broker的监听地址
# advertised.listeners=plaintext://192.168.0.41:9092,controller://192.168.0.41:19092
# 新配置,plaintext为nginx代理服务器的地址
advertised.listeners=plaintext://kafka-cluster:8000,controller://192.168.0.41:19092

kafka 机器的/etc/hosts添加配置192.168.0.41 kafka-cluster(不确定到底要不要配置,懒得再测了,感兴趣的可以自行尝试)

配置修改完成后,重启kafka所有节点。

nginx配置

nginx需要有编译参数--with-stream才能支持tcp/udp的反向代理,如何编译可自行搜索相关文档。

stream {
    include conf.d/*-stream.conf;
}
upstream kafka-endpoints {
    server 192.168.0.41:9092;
    server 192.168.0.41:9093;
    server 192.168.0.41:9094;
}
server {
    listen 8000;
    proxy_pass kafka-endpoints;
}
nginx -t
nginx -s reload

firewalld配置

sudo apt install -y firewalld
sudo firewall-cmd --set-default-zone=drop
sudo firewall-cmd --add-port=22/tcp --add-port=80/tcp --add-port=443/tcp --add-port=8000/tcp --permanent --zone=drop
sudo firewall-cmd --reload
timeout 1 bash -c "cat < /dev/null > /dev/tcp/192.168.0.41/9092" > /dev/null 2>&1;echo $?

客户端配置

192.168.0.41    kafka-cluster
./bin/kafka-console-producer.sh --broker-list kafka-cluster:8000 --topic testtopic
./bin/kafka-console-consumer.sh --bootstrap-server kafka-cluster:8000 --topic testtopic --from-beginning

到此这篇关于nginx反向代理kafka集群的文章就介绍到这了,更多相关nginx反向代理kafka集群内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

您想发表意见!!点此发布评论

推荐阅读

Nginx启用Gzip压缩的完整配置指南

08-18

CentOS系统版本检查方法详解

08-18

Linux系统管理与进程任务管理方式

08-18

Linux/Unix系统中进程与文件的关系解读

08-18

Linux实现查看某一端口是否开放

08-18

Linux中的/usr目录以及bin、sbin和lib的使用详解

08-18

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论