搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
知新_RL
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
C++11 之 thread线程类_c++11 thread
2
react+antd+dva --->TreeSelect 树选择器组件的不联动+多选+初始值渲染
3
使用mprotect定位踩内存故障
4
小程序自定义TabBar实现动态配置_钉钉小程序配置tabbar
5
Mac 上使用 python 脚本自动编译 Unity 并打出 iOS 包_editoruserbuildsettings.buildscriptsonly
6
mysql ibata文件_【MySQL】ibdata文件增大的原因
7
面试官最喜欢的软件测试工程师简历模板_软件测试简历csdn
8
Java数组之数组计算_java 数值为1的数组
9
如何使用MCSM搭建我的世界Java版服务器并实现远程联机游戏_mcsmanager java命令
10
SLAM学习笔记(二十)LIO-SAM流程及代码详解(最全)
当前位置:
article
> 正文
4.nginx发送kafka消息_怎么用nginx转发kafka
作者:知新_RL | 2024-03-05 17:35:07
赞
踩
怎么用nginx转发kafka
背景:使用cache03作为流量分发服务器,cache02和cache01作为应用服务器
nginx日志目录 /usr/servers/nginx/logs
1、nginx+lua将访问流量上报到kafka中
在nginx应用服务器这一层,接收到访问请求的时候,就把请求的流量上报发送给kafka
这样的话,storm才能去消费kafka中的实时的访问日志,然后去进行缓存热数据的统计
用得技术方案非常简单,从lua脚本直接创建一个kafka producer,发送数据到kafka
下载kafka的相关包
wget https://github.com/doujiang24/lua-resty-kafka/archive/master.zip
yum install -y unzip
unzip master.zip
cp -rf /usr/local/lua-resty-kafka-master/lib/resty /usr/hello/lualib
重启kafka
/usr/servers/nginx/sbin/nginx -s reload
编辑product.lua,将提交kafka代码加上
vi /usr/hello/lua/product.lua
local cjson = require("cjson")
local producer = require("resty.kafka.producer")
local broker_list = {
{ host = "139.199.10.125", port = 9092 },
{ host = "111.230.234.30", port = 9092 },
{ host = "139.199.6.253", port = 9092 }
}
local log_json = {}
log_json["headers"] = ngx.req.get_headers()
log_json["uri_args"] = ngx.req.get_uri_args()
log_json["body"] = ngx.req.read_body()
log_json["http_version"] = ngx.req.http_version()
log_json["method"] =ngx.req.get_method()
log_json["raw_reader"] = ngx.req.raw_header()
log_json["body_data"] = ngx.req.get_body_data()
local message = cjson.encode(log_json);
local productId = ngx.req.get_uri_args()["productId"]
local async_producer = producer:new(broker_list, { producer_type = "async" })
local ok, err = async_producer:send("access-log", productId, message)
if not ok then
ngx.log(ngx.ERR, "kafka send err:", err)
return
end
在nginx应用层服务器的nginx.conf中,http部分,加入resolver 8.8.8.8;然后重启nginx
vi /usr/servers/nginx/conf/nginx.conf
/usr/servers/nginx/sbin/nginx -s reload
需要在每个kafka中加入advertised.host.name = 本机ip地址,重启三个kafka进程(下面的kafka版本较新为准)
vi /usr/local/kafka/config/server.properties
advertised.listeners=PLAINTEXT://139.199.10.125:9092
cache01上
advertised.listeners=PLAINTEXT://111.230.234.30:9092
cache02上
advertised.listeners=PLAINTEXT://139.199.6.253:9092
cache03上
注意,这里如果写的是cache01,cache02,cache03可能会出现不能识别的问题
不然可能会报错:
[lua] producer.lua:258: buffered messages send to kafka err: no resolver defined to resolve "cache02",
retryable: true, topic: access-log, partition_id: 0, length: 1, context: ngx.timer, client: 139.199.6.253,
server: 0.0.0.0:80
两台nginx应用服务器机器上重启nginx
/usr/servers/nginx/sbin/nginx -s reload
访问:http://139.199.6.253/product?requestPath=product&productId=2&shopId=2
consumer显示出相应的信息
例如:
{"method":"GET","http_version":1.1,"raw_reader":"GET \/product?productId=1&shopId=1 HTTP\/1.1\r\nHost: 111.230.234.30\r\nUser-Agent: lua-resty-http\/0.11 (Lua) ngx_lua\/9014\r\n\r\n","uri_args":{"productId":"1","shopId":"1"},"headers":{"host":"111.230.234.30","user-agent":"lua-resty-http\/0.11 (Lua) ngx_lua\/9014"}}
nginx+lua+kafka实时上报功能完成
---------------------------------------------------------
两台nginx应用服务器机器上都这样做,才能统一上报流量到kafka
bin/kafka-topics.sh --zookeeper cache01:2181,cache02:2181,cache03:2181 --topic access-log --replication-factor 1 --partitions 1 --create
bin/kafka-console-consumer.sh --zookeeper cache01:2181,cache02:2181,cache03:2181 --topic access-log --from-beginning
(1)kafka在187上的节点死掉了,可能是虚拟机的问题,杀掉进程,重新启动一下
nohup bin/kafka-server-start.sh config/server.properties &
(2)需要在nginx应用层服务器的nginx.conf中,http部分,加入resolver 8.8.8.8;然后重启nginx
vi /usr/servers/nginx/conf/nginx.conf
/usr/servers/nginx/sbin/nginx -s reload
需要在kafka中加入advertised.host.name = 本机ip地址,重启三个kafka进程(下面的kafka版本较新为准)
vi /usr/local/kafka/config/server.properties
advertised.listeners=PLAINTEXT://139.199.10.125:9092
cache01上
advertised.listeners=PLAINTEXT://111.230.234.30:9092
cache02上
advertised.listeners=PLAINTEXT://139.199.6.253:9092
cache03上
注意,这里如果写的是cache01,cache02,cache03可能会出现不能识别的问题
不然可能会报错:
[lua] producer.lua:258: buffered messages send to kafka err: no resolver defined to resolve "cache02",
retryable: true, topic: access-log, partition_id: 0, length: 1, context: ngx.timer, client: 139.199.6.253,
server: 0.0.0.0:80
(4)需要启动eshop-cache缓存服务,因为nginx中的本地缓存可能不在了
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/知新_RL/article/detail/192719
推荐阅读
article
Nginx
配置文件
、
多
web
站点
、应用场景_
nginx
多
站点
图片...
Nginx
是一款轻量级的 HTTP 服务器 ( 或叫
web
服务器 ),采用事件驱动的异步非阻塞处理方式框架,这让其具...
赞
踩
article
nginx
配置
Emqx
websocket
ws转wss_
emqx
ws...
location /mqtt {proxy_redirect off;proxy_pass http://10.1.2....
赞
踩
article
Docker
第二章:
Docker
应用部署(
mysql
、
tomcat
、
nginx
、redis)_d...
目录
Docker
应用部署一、部署MySQL二、部署Tomcat三、部署Nginx四、部署Redis
Docker
应用部...
赞
踩
article
kafka
connect
java
_
kafka
connect
启动
源码分析...
分布式模式下
kafka
-
connect
启动
运行:
启动
命令:bin/
connect
-distributed.sh conf...
赞
踩
article
Debezium
:
kafka
连接器
配置
_
debezium
kafka
...
目的:构建基于hbase的实时数仓解决的问题:RDBMS到Hbase的数据实时采集方法:Postgresql-----&...
赞
踩
article
知识库-
kafka
sh
ell
脚本
用法_
kafka
-
delete
-
records
.
sh
...
脚本
名称 用途描述 connect-distributed.
sh
连接
kafka
集群模式 connect-s...
赞
踩
article
kafka
shell
脚本用法详解_--
value
-
deserializer
...
kafka
太强大了,而
shell
脚本也很多,网上查了查资料,这里当自己学习记录一下。1.
shell
列举
kafka
安装目...
赞
踩
article
Hello
Kafka
(
五)——
Kafka
管理
...
一、
Kafka
工具脚本简介1、
Kafka
工具脚本简介
Kafka
默认提供了很多个命令行脚本,用于实现各种各样的功能和运维管...
赞
踩
article
Linux
Nginx
SSL
证书
配置
正确
,
扔展示不安全...
解析等设置所以需要找到生效的
证书
是哪里的。我就将这个文件名直接修改后重启了。访问返回的
证书
是过期
,
本地访问是经过了。都被...
赞
踩
article
ingress
-
nginx
实现
内部
局域网
的
url
转发
配置_
ingress
转发
内部
接口...
ingress
-
nginx
实现
内部
局域网
的
url
转发
配置实现目的:在 192.168.4.4 物理服务器上部署 WEB...
赞
踩
article
nginx
配置
外网
域名
跳转
到内网地址加
端口
的教程_
nginx
绑定
域名
后
跳转
端口
...
nginx
配置
外网
域名
跳转
到内网地址加
端口
的教程_
nginx
绑定
域名
后
跳转
端口
nginx
绑定
域名
后
跳转
端口
...
赞
踩
article
nginx
同一个
ip
根据
不同
域名
转发到
不同
的
内网
ip
_
nginx
不同
域名
指向
不同
内网
...
#####################changed 2010-08-11##########user ...
赞
踩
article
Nginx的Permission
denied
错误_/
etc
/
nginx
/
nginx
.
conf
: p...
原因:通过ps命令查看
nginx
进程为用户
nginx
,而uwsgi进程为用户root。估计是权限不一致导致
nginx
无法...
赞
踩
article
Nginx
最大
连接
数配置
,
可以解决
nginx
拒绝
连接
问题_
nginx
连接
拒绝...
公司项目运行一段时间就发现网页打不开
,
重启
nginx
就好了
,
经过排查是因为
nginx
的
最大
连接
数限制导致的技术博客。_n...
赞
踩
article
解决Nginx出现
forbidden
(13: Perm
is
sion
denied
)报错的三种方法_/...
1.是否缺失
index
.
html
index
.htmserver { l
is
ten 80; server_name l...
赞
踩
article
使用
Systemctl
启动
nginx
失败,端口权限不足问题解决方案_
set
nginx
system...
使用
nginx
直接启动成功,使用
systemctl
启动
nginx
服务时报错。_
set
nginx
systemctl
f...
赞
踩
article
Nginx
启动成功
无法
访问
网页
_
nginx
配置
好拒绝
访问
...
_
nginx
配置
好拒绝
访问
nginx
配置
好拒绝
访问
查看是否有
Nginx
进程 p...
赞
踩
article
nginx
permission denied_
premissin
deined
nginx
...
访问报403,看日志 permission denied,资源的访问权限明明有,这时候需要修改配置文件
nginx
.cnf...
赞
踩
article
nginx
403错误_
directory
index
of "/app/web/
test
_
brix
...
标题问题如题:403:权限不足三个解决方案:1.提升账号权限2.更改启动
nginx
的账号,这个最好改,找到
nginx
.c...
赞
踩
article
failed
(13: Permission
denied
) 解决
Nginx
由于权限导致大
文件
不能上...
以上是关于
Nginx
由于权限导致大
文件
不能上传的问题的解决方法和初步分析。希望本文对您有所帮助。在使用
Nginx
作为代理...
赞
踩
相关标签
nginx
运维
服务器
docker
操作系统
云服务
分布式
分布式存储
kafka connect java
debezium
kafka
postgresql
管理工具
Kafka
jvm
java
后端
职场和发展
spring
面试
运维开发
centos