【实时数仓】用户行为日志采集模块单机模式部署,Nginx介绍、安装和配置,采集模块集群部署并使用Nginx进行反向代理

news2024/12/26 21:30:24

文章目录

  • 一 日志采集模块
    • 1 打包单机部署
      • (1)修改gmall2022-logger中的logback.xml配置文件
      • (2)修改SpringBoot核心配置文件application.propeties
      • (3)测试
      • (4)程序运行流程
    • 2 Nginx
      • (1)简介
      • (2)正向代理和反向代理
      • (3)Nginx安装以及相关命令
        • a Nginx安装
        • b Nginx相关命令
      • (4)核心配置文件说明
        • a 基本配置
        • b events配置
        • c http配置
      • (5)配置反向代理
    • 3 打包集群部署,并用Nginx进行反向代理
    • 4 集群群起脚本

一 日志采集模块

1 打包单机部署

(1)修改gmall2022-logger中的logback.xml配置文件

<property name="LOG_HOME" value="/opt/module/rt_gmall/gmall2022" />

<logger name="com.hzy.gmall.controller.LoggerController"

注意:路径和上面创建的路径保持一致,根据自己的实际情况进行修改

(2)修改SpringBoot核心配置文件application.propeties

#指定使用的端口号
server.port=8081

(3)测试

启动kafka消费者进行测试。

bin/kafka-console-consumer.sh --bootstrap-server hadoop101:9092 --topic ods_base_log

运行hadoop101上的rt_gmall下的日志处理jar包

java -jar gmall2022-logger-0.0.1-SNAPSHOT.jar

运行rt_applog下的jar包,生产日志文件。

java -jar gmall2022-mock-log-2022-11-28.jar
cd /opt/module/rt_gmall/gmall2022

进入上述文件夹,查看是否有日志文件产生。

(4)程序运行流程

在这里插入图片描述

模拟日志产生,将生成的日志信息发送给hadoop101,8081端口的日志采集服务,日志采集服务接收到产生的日志信息,打印到控制台,落盘,最后发送到kafka主题中,kafka消费者消费到数据,打印到控制台。

这时出现一个问题,如果当一台日志采集服务器忙不过来时,就需要添加多台机器(集群),通过Nginx转发请求,如下图(待修改,完整图例见标题3)。

在这里插入图片描述

2 Nginx

(1)简介

Nginx (“engine x”) 是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

Nginx 是由俄罗斯人 Igor Sysoev 采用C语言开发编写的,第一个公开版本0.1.0发布于2004年10月4日。

(2)正向代理和反向代理

正向代理类似一个跳板机,代理访问外部资源。比如:我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器,它能访问那个我不能访问的网站,于是我先连上代理服务器,告诉它我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器,如从租户的角度出发,房东将房子交给中介,中介再将房租给租户。

(3)Nginx安装以及相关命令

a Nginx安装

# 在hadoop101上运行yum,安装相关依赖包
sudo yum -y install openssl openssl-devel pcre pcre-devel zlib zlib-devel gcc gcc-c++
# 将nginx-1.12.2.tar.gz上传到/opt/software下
# 解压
tar -zxvf nginx-1.12.2.tar.gz
# 进入解压缩目录,执行
./configure   --prefix=/opt/module/nginx
make && make install
# 在/opt/module/nginx/sbin目录下执行  
./nginx
# 如果在给root用户下面启动会报错
# 原因:nginx占用80端口,默认情况下非root用户不允许使用1024以下端口
# 解决:让当前用户的某个应用也可以使用1024以下的端口
sudo setcap cap_net_bind_service=+eip /opt/module/nginx/sbin/nginx
# 注意:要根据自己的实际路径进行配置

# 查看启动情况
ps -ef |grep nginx 
# 因为nginx不是用java写的,所以不能通过jps查看
# 在浏览器中输入http://hadoop101:80访问

结果如下图:

在这里插入图片描述

b Nginx相关命令

# 重启Nginx
./nginx  -s reload
# 关闭Nginx
./nginx  -s  stop
# 通过配置文件启动
./nginx -c /opt/module/nginx/conf/nginx.conf
/opt/module/nginx/sbin/nginx -c /opt/module/nginx/conf/nginx.conf
# 其中-c是指定配置文件,而且配置文件路径必须指定绝对路径

# 配置检查
# 当修改Nginx配置文件后,可以使用nginx命令进行配置文件语法检查,用于检查Nginx配置文件语法是否正确
/sbin/nginx -c /opt/module/nginx/conf/nginx.conf -t
# 如果80端口号被占用,一般是网络服务启动造成(httpd)
sudo systemctl stop httpd
sudo systemctl disable httpd
# 部分机器启动时报错:
/usr/local/nginx/sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
# 解决:
ln -s /usr/local/lib/libpcre.so.1 /lib64

(4)核心配置文件说明

Nginx核心配置文件位于Nginx安装目录(/opt/module/nginx/conf)下,名字为nginx.conf。

a 基本配置

在这里插入图片描述

b events配置

在这里插入图片描述

c http配置

基本配置

在这里插入图片描述

server配置,可以有多个

在这里插入图片描述

(5)配置反向代理

# 在server内部配置,拦截请求
     location /applog{
         # 指定代理服务器
         proxy_pass http://www.logserver.com;
     }

# 在server外部,http内部配置
     upstream www.logserver.com{
         # 配置代理服务器
         server hadoop101:8081 weight=1;
         server hadoop102:8081 weight=2;
         server hadoop103:8081 weight=3;
     }

3 打包集群部署,并用Nginx进行反向代理

# 将日志采集的jar包同步到hadoop102和hadoop103
xsync.sh /opt/module/rt_gmall/
# 在三台机器上,启动采集服务
cd /opt/module/rt_gmall/
java -jar gmall2022-logger-0.0.1-SNAPSHOT.jar 
# 启动一台kafka消费者
bin/kafka-console-consumer.sh --bootstrap-server hadoop101:9092 --topic ods_base_log
# 启动nginx
# 修改日志生成器中的
mock.url: "http://hadoop101:80/applog"
# 执行日志生成器

结果如图:

在这里插入图片描述

注意:图片中红色标记表示的程序的执行顺序。

整体架构如图:

在这里插入图片描述

4 集群群起脚本

将采集日志服务(nginx和采集日志数据的jar启动服务)放到脚本中。

在/home/hzy/bin目录下创建logger.sh,并授予执行权限。

#!/bin/bash
JAVA_BIN=/opt/module/jdk1.8.0_212/bin/java
APPNAME=gmall2022-logger-0.0.1-SNAPSHOT.jar
 
case $1 in
 "start")
   {
 
    for i in hadoop101 hadoop102 hadoop103
    do
     echo "========: $i==============="
    ssh $i  "$JAVA_BIN -Xms32m -Xmx64m  -jar /opt/module/rt_gmall/$APPNAME >/dev/null 2>&1  &"
    done
     echo "========NGINX==============="
    /opt/module/nginx/sbin/nginx
  };;
  "stop")
  { 
     echo "======== NGINX==============="
    /opt/module/nginx/sbin/nginx  -s stop
    for i in  hadoop101 hadoop102 hadoop103
    do
     echo "========: $i==============="
     ssh $i "ps -ef|grep $APPNAME |grep -v grep|awk '{print \$2}'|xargs kill" >/dev/null 2>&1
    done
  };;
   esac

启动zookeeper,kafka和一个kafka消费者。

启动脚本。

为在页面查看到结果,在三台机器上执行tail -f gmall20/app.log

执行日志生成脚本,查看结果。

目前程序框架图如下:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/77210.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Grafana 的介绍和安装

版本&#xff1a;9.3.1 介绍 Grafana是一款能够提供查询、告警和可视化指标、日志、链路跟踪的软件&#xff0c;并且提供了TSDB时序数据库用于存储数据。 一共有3个版本&#xff0c;Grafana OSS&#xff08;开源版&#xff09;&#xff0c;Grafana Enterprise&#xff08;企业…

【C++】红黑树

一.红黑树的概念与性质 1.概念 红黑树是二叉搜索数的一种, 相比于AVL树(二叉平衡搜索树)红黑树通过减少旋转的次数来进一步优化了查找效率, 在每个节点上增加一个存储位表示节点的颜色, Red or Black, 通过对任何一条从根到叶子的路径上各个节点着色方式的限制, 红黑树确保没…

亚马逊云科技re:Invent:创新永无止境,科技重塑未来

作为全球IT行业一年一度的科技盛宴&#xff0c;2022亚马逊云科技re:Invent全球大会吸引了来自世界各国的开发者与企业客户的高度关注&#xff0c;其中自然也包括了广大中国企业。作为全球云计算领域的风向标&#xff0c;本届大会究竟揭示了怎样的行业趋势&#xff1f;发布了哪些…

【超聚变】FusionServer1288H V6安装CentOS系统

【超聚变】FusionServer1288H V6安装CentOS系统1、创建Raid2、安装系统2.1.使用IBMC地址&#xff0c;登录web界面2.2.选择启动虚拟控制台2.3.挂载镜像2.4.选择启动盘2.5.安装系统2.6.选择英文安装2.7.时区选择上海&#xff08;Asia/Shanghai&#xff09;2.8.选择最小化安装&…

【Vue源码解析】mustache模板引擎

模板引擎什么是模板引擎实现 Scanner 类根据模板字符串生成 tokens在 index.js 引入 parseTemplateToTokens实现 tokens 的嵌套One More Thingtokens 结合数据解析为 dom 字符串定义 lookup 函数定义 renderTemplate 函数什么是模板引擎 模板引擎是将数据变为视图最优雅的解决…

如何清除chrome浏览器缓存

清除浏览器的缓存知识调用前言引入具体操作知识调用 文章中可能用到的知识点前端学习&#xff1a;浏览器缓存方式有哪些&#xff08;http协议 websql indexDB cookie localstorage sessionstorage&#xff09;如何查看Chrome浏览器的页面缓存内容【详细教程】 前言引入 上期文…

微服务框架 SpringCloud微服务架构 微服务保护 31 限流规则 31.1 簇点链路

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 微服务保护 文章目录微服务框架微服务保护31 限流规则31.1 簇点链路31.1.1 簇点链路31.1.2 快速入门31 限流规则 31.1 簇点链路 31.1.1 簇…

52、网络

目录 一、网络通信 二、网络 三、 ip地址 四、域名 五、端口号 六、网络通信协议 1、协议&#xff08;tcp/ip&#xff09; 2、TCP和UDP 七、InetAddress类 八、Socket 1、基本介绍&#xff1a; 2、TCP网络通信编程 3、UDP网络通信编程&#xff08;了解即可&#xff0c…

完整版JAVA物业管理系统源码带小程序+文字安装教程+视频

这套系统还包含了小程序前端源码。 技术架构 技术框架&#xff1a;springboot ssm shiro layui 运行环境&#xff1a;IntelliJ IDEA 2022 jdk1.8 Mysql5.7.4 maven nginx 宝塔面板 文字安装教程 1.下载源码后打开小皮面板&#xff0c;安装mysql5.7数据库&#xff0c;创…

【JavaEE】计算机是怎样工作的,五分钟带你理解计算机!!!

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀学瓜的主页&#x1f319; 专栏&#xff1a;JavaEE 分享&#xff1a;一、让你知道我的存在&#xff1b;二、让你存在下去&#xff0c;对我来说都是危险的&#xff0c;都违反第一条公理。 ——《三体》 主要内容&#xff1a;…

C++11标准模板(STL)- 算法(std::push_heap)

定义于头文件 <algorithm> 算法库提供大量用途的函数&#xff08;例如查找、排序、计数、操作&#xff09;&#xff0c;它们在元素范围上操作。注意范围定义为 [first, last) &#xff0c;其中 last 指代要查询或修改的最后元素的后一个元素。 数据结构的堆物理结构是数…

Linux离线安装RabbitMQ

使用docker离线安装rabbitmq 1.在外网环境下载rabbitmq:management镜像 命令&#xff1a;docker pull rabbitmq:management 启动容器&#xff08;即验证镜像是否有用&#xff09;&#xff1a; 命令&#xff1a;docker run -d --hostname wxrabbit --name rabbitmq -p 15672:15…

【深度学习】学习率预热和学习率衰减 (learning rate warmup decay)

背景 在深度学习中学习率这个超参数&#xff0c;在选取和调整都是有一定策略的&#xff0c;俗称炼丹。有时我们遇到 loss 变成 NaN 的情况大多数是由于学习率选择不当引起的。 神经网络在刚开始训练的时候模型的权重(weights)是随机初始化的&#xff0c;选择一个较大的学习率…

干货 | 浅谈携程大住宿研发效能提升实践

作者简介Mia &#xff0c;携程高级项目经理&#xff0c;负责酒店Devops实践&#xff0c;关注Devops/敏捷等领域。YY&#xff0c;携程敏捷教练&#xff0c;负责团队敏捷转型&#xff0c;研发效能提升实践&#xff0c;关注Agile、Devops、研发效能等领域。一、前言管理大师彼得德…

[ChatGPT为你支招]如何提高博客的质量,找到写作方向,保持动力,增加粉丝数?

0. 引言 作为一个博主&#xff0c;您可能会面临很多挑战&#xff0c;比如如何提高博客的质量&#xff0c;如何找到自己的写作方向&#xff0c;如何保持持续写作的动力&#xff0c;以及如何增加博客的粉丝数量。在这篇文章中&#xff0c;我们将为您提供一些有用的建议&#xff…

Maven打包报错:找不到符号,类BASE64Encoder,程序包sun.misc

背景 一个基于若依单体架构的多模块 Maven 项目的国产化迁移适配&#xff0c;由于是客户的代码&#xff0c;我们不用关心具体的功能实现&#xff0c;直接来做迁移即可。实施时&#xff0c;按照我们总结的整改建议调整源码&#xff0c;具体迁移适配过程可参考本专栏的其他文章。…

ADI Blackfin DSP处理器-BF533的开发详解19:LAN的网口设计

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 BF533说实话用来做LAN的应用有些许勉强&#xff0c;因为他自己不带网口&#xff0c;要做的话&#xff0c;需要在总线上挂&#xff0c;那…

彻底搞懂ESLint与Prettier在vscode中的代码自动格式化

前言 前端代码格式化社区提供了两种比较常用的工具ESLint和Prettier&#xff0c;他们分别提供了对应的vscode的插件&#xff0c;二者在代码格式化方面有重叠的部分&#xff0c;规则不一致时会导致冲突。vscode作为前端开发编辑器已经越来越普遍了&#xff0c;这需要开发者在vs…

ChatGPT与搜索引擎合体,谷歌都不香了,LeCun转发|在线可玩

Alex Pine 发自 凹非寺量子位 | 公众号 QbitAI见惯了列表式搜索引擎&#xff0c;你有没有想过给它换种画风&#xff1f;有人脑洞大开&#xff0c;把艳惊四座的ChatGPT和必应搜索结合起来&#xff0c;搞出了一个智能搜索引擎&#xff1a;既有ChatGPT式的问答&#xff0c;又像普通…

VS——路径说明

$(TargetDir)输出目标的路径 $(TargetPath) 输出文件.exe的路径 $(TargetName) 项目名字 $(TargetFileName) 输出的.exe的名字 $(TargetExt) 文件的扩展名 $(ProjectDir)工程目录 目录根据下面的文件来的 $(IntDir)获取中间文件 $(OutDir)文件输出路径 $(Solu…