当前位置:   article > 正文

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

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

一 日志采集模块

1 打包单机部署

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

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

<logger name="com.hzy.gmall.controller.LoggerController"
  • 1
  • 2
  • 3

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

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

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

(3)测试

启动kafka消费者进行测试。

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

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

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

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

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

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

(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访问
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

结果如下图:

在这里插入图片描述

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

(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;
     }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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"
# 执行日志生成器
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

结果如图:

在这里插入图片描述

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

整体架构如图:

在这里插入图片描述

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

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

启动脚本。

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

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

目前程序框架图如下:

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/192716
推荐阅读
相关标签
  

闽ICP备14008679号