通过Nginx代理Kafka实现跨网络消费
1. 服务器环境
两台服务器同在一个网段(都开
打开防火墙
模拟跨网)分别为服务器A、服务器B
服务器A(172.**.**.219)
:安装Nginx(1.8.0以上的Nginx才支持stream模块)
服务,对所有网段打开9092端口
服务器B(172.**.**.220)
:安装Kafka服务,对服务器A打开9092端口
2. 服务搭建
2.1 服务器B服务搭建
- 修改主机名
vim /etc/hostnamekafka
- 修改主机名映射
vim /etc/hosts172.**.**.219 nginx 172.**.**.220 kafka
- kafka安装
注:此配置只能使用主机名访问 如需IP访问 将listeners=PLAINTEXT://hostname:9092
改为
advertised.listeners=PLAINTEXT://x.x.x.x:9092
2.2 服务器A服务搭建
- 修改主机名
vim /etc/hostnamenginx
- 修改主机名映射
vim /etc/hosts172.**.**.219 nginx 172.**.**.220 kafka
- 安装Nginx依赖包
yum install gcc gcc-c++ pcre-devel zlib-devel openssl-devel -y
- 将Nginx安装包上传至服务器并安装Nginx
tar zxvf nginx-1.14.0.tar.gz cd nginx-1.14.0 ./configure --prefix=/usr/local/nginx --with-stream make && make install
- 配置nginx.conf
stream { server { listen 9092; proxy_pass kafka; } upstream kafka { server kafka:9092 weight=1; } }
stream模块与https模块同级
- 启动nginx
/usr/local/nginx/sbin/nginx
3. 测试连通性
在本地Windows编写生产者消费者代码
- 生产者
package com.msk.demo01;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
import java.text.Deci