Nginx反向代理Kafka集群
前言
kafka集群的网络没法被客户端直接访问,中间需要有个代理。正常网络情况下,kafka会给客户端返回所有的broker地址,如果客户端无法访问到broker就会报错,所以kafka给客户端返回的地址需要是客户端能访问的代理服务器地址。
本文的测试环境中,使用nginx来反向代理kafka集群。nginx和kafka部署在同一台机器上,使用firewalld确保只开放8000端口,拒绝机器外访问kafka的端口。
- nginx版本:1.28,IP:192.168.0.41,使用8000端口代理kafka集群
- kafka版本:2.13-3.9.1,使用kraft组单点集群, IP:192.168.0.41。搭建过程见我的另一篇博客 使用KRaft部署单点kafka集群。
- 客户端IP:192.168.0.108
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的反向代理,如何编译可自行搜索相关文档。
- 修改
nginx/conf/nginx.conf的配置,导入conf.d目录下所有*-stream.conf的配置文件。如果配置很少,也可以直接写在nginx.conf文件里面。
stream {
include conf.d/*-stream.conf;
}
- 编辑
nginx/conf/conf.d/kafka-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配置
nginx -t
nginx -s reload
firewalld配置
- 安装firewalld
sudo apt install -y firewalld
- 设置默认zone为drop,即拒绝所有入站流量
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
- 在客户端测试能否访问其它端口。结果不为0即访问失败。
timeout 1 bash -c "cat < /dev/null > /dev/tcp/192.168.0.41/9092" > /dev/null 2>&1;echo $?
客户端配置
- 修改
/etc/hosts,添加配置
192.168.0.41 kafka-cluster
- 使用kafka自带工具启动生产者
./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代理成功。
Nginx反向代理Kafka集群的更多相关文章
- .net core 跨平台开发 微服务架构 基于Nginx反向代理 服务集群负载均衡
1.概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客 ...
- Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第九集之安装Tomcat+Nginx反向代理Tomcat集群】
1,安装Tomcat:和在windows下安装是一样的. 安装tomcat:上传后解压: tar -zxvf apache-tomcat-7.0.88.tar.gz -z:代表.gz格式的压缩包,-x ...
- Docker Compose一键部署Nginx反向代理Tomcat集群
目录结构如下 mysql/conf/my.cnf [mysqld] user=mysql port=3306 datadir=/var/lib/mysql socket=/var/lib/mysql/ ...
- Nginx学习笔记(反向代理&搭建集群)
一.前言 1.1 大型互联网架构演变历程 1.1.1 淘宝技术 淘宝的核心技术(国内乃至国际的 Top,这还是2011年的数据) 拥有全国最大的分布式 Hadoop 集群(云梯,2000左右节点,24 ...
- Centos 7.6配置nginx反向代理负载均衡集群
一,实验介绍 利用三台centos7虚拟机搭建简单的nginx反向代理负载集群, 三台虚拟机地址及功能介绍 192.168.2.76 nginx负载均衡器 192.168.2.82 web ...
- Centos 7配置nginx反向代理负载均衡集群
一,实验介绍 利用三台centos7虚拟机搭建简单的nginx反向代理负载集群, 三台虚拟机地址及功能介绍 192.168.2.76 nginx负载均衡器 192.168.2.82 web ...
- Centos 7.6配置nginx反向代理,直接yum安装
一,实验介绍 利用三台centos7虚拟机搭建简单的nginx反向代理负载集群, 三台虚拟机地址及功能介绍 192.168.2.76 nginx负载均衡器 192.168.2.82 web ...
- Linux之nginx反向代理+三台web+nfs共享存储实现集群配置
作业四:nginx反向代理+三台web+nfs共享存储实现集群配置 在各个web服务器上挂载nfs [root@localhost nginx]# mount -t nfs 192.168.152.1 ...
- nginx反向代理+集群
1.前期准备: client:192.168.4.1 eth0 proxy:192.168.4.5 eth0 web1:192.168.4.100 eth0 内容2 web2:192.168.4.20 ...
- Nginx代理MysqlCluster集群(二)
Nginx代理MySql集群本次实验采用nginx 版本1.12以上 集合了tcp代理功能只需在编译时明文开启指定的功能 --with-stream--prefix=/usr/local/ngin - ...
随机推荐
- 注解@Transactional事务失效的常见场景
在<Spring Boot事务管理>中,小编介绍了注解@Transactional的基本属性和使用方法,这里介绍事务失效的八种场景,使大家对注解@Transactional有一个更深刻的认 ...
- Spring AOP 面向切面编程之搞定表单重复提交实战
摘要:客户端在5秒内请求同一URL,而且关键请求参数相等,则视此次请求为重复提交,利用自定义注解 .Spring AOP 和 Guava Cache 技术栈在服务器端实现拦截表单重复提交,防止刷单. ...
- C#代码事件
C#代码事件 从今天开始,WPF 的学习将上升到一个新的高度.之前主要都是围绕着界面上的内容,今天了解 C# 代码,让界面真正意义上能够有功能. 本文同时为b站WPF课程的笔记,相关示例代码 上节课自 ...
- 人形机器人全能赛openmv巡线代码
人形机器人全能赛openmv巡线代码 import sensor, image, time from pyb import LED, millis, UART from math import pi, ...
- 什么是网格变形?HyperWorks网格变形设置方法
HyperMorph 是 HyperMesh 向用户提供的强大的网格变形工具.它可以在保证基本网格形态和质量的前提下,按照用户使用需求,自如的对已有的有限元模型进行网格变形. HyperMorph 可 ...
- 【题解·2025 ICPC Nanchang Invitational Contest】L. Regnaissance
题目链接 简要题意 给定一棵 \(n\) 个点的无根树,请回答下面 \(q\) 次询问:当以点 \(rt_i\) 为根时,编号在 \([l_i,r_i]\) 中的点的 \(\text{LCA}\) 是 ...
- TCP入门简单例子
TCP的简单例子 TCP最简单聊天室 客户端 连接服务器 Socket 发送消息 package TCP; import java.io.IOException; import java.io.Out ...
- SQL Server 清除表TRUNCATE TABLE 提示: 因为该表正由 FOREIGN KEY 约束引用
https://blog.csdn.net/dengguawei0519/article/details/101315699 1.找到引用这个表外键名称 SELECT * FROM sys.forei ...
- leetcode 54 螺旋数组
简介 忘不了, 这是华为面试官给我的面试题, 但是我没有在1分钟内做出来. 或许那个时候面试官本来就不想要一个人. 使用模拟的方法. 使用一个visited数组, 判断是否走到边界, 只有四个方向: ...
- 关于 python 人脸检测库 dlib 的 初识 2
简介 关于人脸检测算法python库的初步认识2 使用CNN的实现人脸检测 简单说明 The example loads a pretrained model and uses it to find ...