Nginx+Tomcat负载均衡、动静分离,4层代理,7层代理

news/2024/11/16 19:42:42/

一:7层反向代理

Nginx 服务器:192.168.52.200:80
Tomcat服务器1:192.168.52.201:80
Tomcat服务器2:192.168.52.108:8080 192.168.52.108:8081

一.部署Nginx 负载均衡器

1.关闭防火墙

注意:所有的虚拟机都要注意关闭防火墙

systemctl stop firewalld
setenforce 0

2.下载编译依赖包

yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make

在这里插入图片描述

3.创建nginx用户

useradd -M -s /sbin/nologin nginx

在这里插入图片描述

4.编译安装

cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/cd nginx-1.12.0/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-file-aio \									#启用文件修改支持
--with-http_stub_status_module \					#启用状态统计
--with-http_gzip_static_module \					#启用 gzip静态压缩
--with-http_flv_module \							#启用 flv模块,提供对 flv 视频的伪流支持
--with-http_ssl_module								#启用 SSL模块,提供SSL加密功能
--with-stream										#启用 stream模块,提供4层调度
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-stream

在这里插入图片描述

make && make install

在这里插入图片描述

5.将nginx加入到service服务中

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service

二:部署2台Tomcat 应用服务器

tomcat1配置

1.关闭防火墙

systemctl stop firewalld
setenforce 0

2.解压jdk文件安装tomcat

tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/

在这里插入图片描述

3.设置JDK环境变量

vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH
source /etc/profile

4.安装启动tomcat

tar zxvf apache-tomcat-8.5.16.tar.gz
mv /opt/apache-tomcat-8.5.16/ /usr/local/tomcat
/usr/local/tomcat/bin/shutdown.sh 
/usr/local/tomcat/bin/startup.shnetstat -ntap | grep 8080

5.另一台tomcat2,配置为Tomcat多实例部署,详情见

tomcat多实例部署(文章第6点)

三:动静分离配置

动静分离原理:

服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由Nginx提供服务,动态资源Nginx转发至后端
在这里插入图片描述
Nginx处理静态页面的效率远高于Tomcat的处理能力若Tomcat的请求量为1000次,则Nginx的请求量为6000次
Tomcat每秒的吞吐量为0.6M,Nginx的每秒吞吐量为3.6M
Nginx处理静态资源的能力是Tomcat处理的6倍

动静分离应用:

  • 动静分离,在我们的软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件称为静态文件。
  • 让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作。提高资源响应的速度。

在这里插入图片描述

(1)Tomcat1 server 配置

mkdir /usr/local/tomcat/webapps/test
vim /usr/local/tomcat/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>   #指定为 test1 页面
</head>
<body>
<% out.println("动态页面 1,http://www.test1.com");%>
</body>
</html>
vim /usr/local/tomcat/conf/server.xml
#由于主机名 name 配置都为 localhost,需要删除前面的 HOST 配置
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true"></Context>
</Host>
/usr/local/tomcat/bin/shutdown.sh 
/usr/local/tomcat/bin/startup.sh 

(2)Tomcat2 server 配置

mkdir /usr/local/tomcat/tomcat1/webapps/test /usr/local/tomcat/tomcat2/webapps/test
vim /usr/local/tomcat/tomcat1/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test2 page</title>   #指定为 test2 页面
</head>
<body>
<% out.println("动态页面 2,http://www.test2.com");%>
</body>
</html>

在这里插入图片描述

vim /usr/local/tomcat/tomcat1/conf/server.xml
#删除前面的 HOST 配置
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat/tomcat1/webapps/test" path="" reloadable="true" />
</Host>
/usr/local/tomcat/tomcat1/bin/shutdown.sh 
/usr/local/tomcat/tomcat1/bin/startup.sh 

在这里插入图片描述

vim /usr/local/tomcat/tomcat2/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test3 page</title>   #指定为 test3 页面
</head>
<body>
<% out.println("动态页面 3,http://www.test3.com");%>
</body>
</html>
vim /usr/local/tomcat/tomcat2/conf/server.xml
#删除前面的 HOST 配置
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat/tomcat2/webapps/test" path="" reloadable="true" />
</Host>
/usr/local/tomcat/tomcat2/bin/shutdown.sh 
/usr/local/tomcat/tomcat2/bin/startup.sh 

四:Nginx server 配置

#准备静态页面和静态图片

echo '<html><body><h1>这是静态页面</h1></body></html>' > /usr/local/nginx/html/index.html
mkdir /usr/local/nginx/html/img
cp /root/game.jpg /usr/local/nginx/html/img

vim /usr/local/nginx/conf/nginx.conf

......
http {
......#gzip on;#配置负载均衡的服务器列表,weight参数表示权重,权重越高,被分配到的概率越大upstream tomcat_server {server 192.168.52.201:8080 weight=1;server 192.168.52.108:8080 weight=1;server 192.168.52.108:8081 weight=1;}server {listen 80;server_name www.kgc.com;charset utf-8;#access_log logs/host.access.log main;#配置Nginx处理动态页面请求,将 .jsp文件请求转发到Tomcat 服务器处理location ~ .*\.jsp$ {proxy_pass http://tomcat_server;
#设置后端的Web服务器可以获取远程客户端的真实IP
##设定后端的Web服务器接收到的请求访问的主机名(域名或IP、端口),默认HOST的值为proxy_pass指令设置的主机名。如果反向代理服务器不重写该请求头的话,那么后端真实服务器在处理时会认为所有的请求都来自反向代理服务器,如果后端有防攻击策略的话,那么机器就被封掉了。proxy_set_header HOST $host;
##把$remote_addr赋值给X-Real-IP,来获取源IPproxy_set_header X-Real-IP $remote_addr;
##在nginx 作为代理服务器时,设置的IP列表,会把经过的机器ip,代理机器ip都记录下来proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}#配置Nginx处理静态图片请求location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {root /usr/local/nginx/html/img;expires 10d;}location / {root html;index index.html index.htm;}
......}......
}

4.测试效果
测试静态页面效果
浏览器访问 http://192.168.52.200/
浏览器访问 http://192.168.52.200/game.jpg

测试负载均衡效果,不断刷新浏览器测试,可以看到图片再3个画面切换
浏览器访问 http://192.168.52.200/test/index.jsp

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二:4层反向代理

一:再配置一台额外的虚拟机的Nginx server 配置

四层代理的架构图

在这里插入图片描述

二:Nginx 四层代理配置

./configure --with-stream #需要安装这个模块
和http同等级:所以一般只在http上面一段设置,
stream {upstream appserver {server 192.168.52.150:80 weight=1;server 192.168.52.200:80 weight=1;}server {listen 80;proxy_pass appserver;}
}http {
......

在这里插入图片描述

三:注意点

1.所有7层反向代理nginx服务器的静态网页页面的路径要一致

2.轮循

weight=1的意思是轮循的优先级,数字越大,优先级越高, 在这里插入图片描述

  • 循环的意思

在这里插入图片描述

此时的weight即权重都为1

  • 加权轮询
    在这里插入图片描述
    此时的weight即权重不同

3.反向代理(Reverse Proxy)

服务器根据客户端的请求,从其关系的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知代理服务器的IP地址,而不知道在代理服务器后面的服务器集群的存在。
在这里插入图片描述
反向代理整个流程:由客户端发起对代理服务器的请求,代理服务器在中间将请求转发给某一个服务器,服务器将结果返回给代理服务器,代理服务器再将结果返回给客户端。

4.正向代理

当客户端主动使用代理服务器时,此时的代理叫正向代理。
正向代理时,由客户端发送对某一个目标服务器的请求,代理服务器在中间将请求转发给该目标服务器,目标服务器将结果返回给代理服务器,代理服务器再将结果返回给客户端。
使用正向代理时,客户端是需要配置代理服务的地址、端口、账号密码(如有)等才可使用的。
在这里插入图片描述

  • 动静分离,在我们的软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件称为静态文件。
  • 让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作。提高资源响应的速度。

http://www.ppmy.cn/news/247218.html

相关文章

【C++】C++ 右值 相关常见问题

【C】C 右值 相关常见问题 文章目录 【C】C 右值 相关常见问题1.介绍一下左值引用和右值引用1.1左值和左值引用1.2右值和右值引用 2.左值引用与右值引用比较3.左值引用的使用场景4. move语义5.完美转发 C 11 关于右值相关概念&#xff1a; 在 C 中&#xff0c;右值是指仅作为表…

智警杯excel和sql实训盲点

目录 excel基础操作&#xff1a; excel函数&#xff1a;智警杯赛前学习1.2--excel统计函数_lulu001128的博客-CSDN博客知识点https://blog.csdn.net/lulu001128/article/details/130936259?spm1001.2014.3001.5501 excel报表实战&#xff1a; excel数据透视及绘图&#xff…

【转】把握速度的核心,市场主流SSD主控简析

原文&#xff1a; http://www.expreview.com/18369.html 前言&#xff1a; 前时介绍过SSD存储数据的 NAND闪存&#xff0c;这次来看看掌握SSD速度最关键的一个芯片——主控。现在市场上有许多种类的SSD主控&#xff0c;并不像闪存那样分为两大阵型&#xff0c;而且规格各不相同…

安装主机教学

测试平台&#xff1a; CPU&#xff1a; Intel 酷睿i7 930&#xff08;盒&#xff09; 主板 &#xff1a;华硕 SaberTooth X58 内存 &#xff1a;博帝 2GBX2 DDR3 1600 硬盘 希捷 1TB SATA2 32M 7200.12/ST310005 显卡 NVIDIA FX1800 光驱 先锋 DVR-219VXL 机箱 酷…

服务器内存简介

服务器内存也是内存(RAM)&#xff0c;它与普通PC&#xff08;个人电脑&#xff09;机内存在外观和结构上没有什么明显实质性的区别&#xff0c;主要是在内存上引入了一些新的特有的技术&#xff0c;如ECC、ChipKill、热插拔技术等&#xff0c;具有极高的稳定性和纠错性能。服务…

c#设计模式-建造者模式

意图 将一个复杂的构建与其表示相分离&#xff0c;使得同样的构建过程可以创建不同的表示。 场景 在电脑城装机总有这样的经历。我们到了店里&#xff0c;先会有一个销售人员来询问你希望装的机器是怎么样的配置&#xff0c;他会给你一些建议&#xff0c;最终会形成一张装机单。…

显示器3d测试软件,挑战3大游戏+3D电影!3D三屏环绕感官测试

前言&#xff1a;在今年4月左右&#xff0c;显示芯片厂商nvidia就发布了3D vision surround技术&#xff0c;这个技术可以说是3D vision技术的一个升华&#xff0c;让玩家能体验到出色的三屏3D环绕效果&#xff0c;仿佛亲临现场的感觉。 华硕&#xff0c;在前段时间发布了旗下首…

计算机的代表性产品,电脑展回顾 十款最具代表性存储产品

被誉为全球第二大&#xff0c;亚洲第一大IT盛会的台北国际电脑展(computex)于6月1日-5日举行。今年是台北电脑展30周年&#xff0c;参展商规模较往年都所有增加&#xff0c;诸多革命性新技术和新产品首次与世人见面。本文笔者就给各位回顾一下此次台北电脑展上最值得拥有的十大…