Nginx+Tomcat实现负载均衡、动静分离

一:Nginx实现负载均衡原理

Nginx实现负载均衡是通过反向代理实现

 

 

 

如图所示:
Nginx服务器作为前端,Tomcat服务器作为后端,web页面请求由Nginx服务来进行转发。
但是不是把所有的web请求转发,而是将静态页面请求Nginx服务器自己来处理,动态页面请求,转发给后端的Tomcat服务器来处理

据我们所知,Tomcat是属于轻量级的应用服务器,可接受访问量可能会不足,所以我们需要多台Tomcat服务器,然后通过Nginx配置权重来进行挑选Tomcat服务器去进行处理,负载均衡的一种策略

Nginx服务器
1、首页使用精准匹配
2、静态页面使用正则匹配自己处理
3、动态页面使用正则匹配jsp结尾的请求,使用proxy_pass转发给Tomcat服务器

Nginx配置反向代理的主要参数

upstream 服务池名 {}

配置后端服务器池,以提供响应数据

proxy_pass http://服务池名

配置将访问请求转发给后端服务器池的服务器处理

二:Nginx动静分离原理

 

 

 

动静分离原理:

服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由Nginx提供服务,动态资源Nginx转发至后端

Nginx静态处理优势:

●Nginx处理静态页面的效率远高于Tomcat的处理能力

●若Tomcat的请求量为1000次,则Nginx的请求量为6000次

●Tomcat每秒的吞吐量为0.6M,Nginx的每秒吞吐量为3 .6M

●Nginx处理静态资源的能力是Tomcat处理的6倍

三:Nginx+Tomcat负载均衡、动静分离实验

●Nginx服务器:192.168.108.50

●Tomcat服务器1:192.168.108.30:80

●Tomcat服务器2:192.168.108.40:8080 192.168.108.40:8081

3.1部署Nginx负载均衡器

3.1.1关闭防火墙,将安装nginx所需的软件包传到/opt目录下

 

 

 

 

 

 3.1.2安装依赖包

 

 

 3.1.3创建运行用户、组

 

 

 3.1.4解压安装包

 

 

 3.1.5编译安装Nginx

 

 

 

 

 

 

 

 

 3.1.6添加nginx系统服务

 

 

 3.1.7赋权及开启服务、开启开机自启

 

 

3.2部署2台tomcat应用服务器

配置tomcat服务器1

 3.2.1关闭防火墙和增强机制,将所需依赖包上传到/opt目录下

 

 

 

 

 

 3.2.2安装JDK

 

 

 

 

 

 3.2.3设置JDK环境变量

 

 

 

 

 

 3.2.4安装启动tomcat

 

 

 

 

 

 3.2.5查看端口

 

 

 

 

 

 配置tomct服务器2

3.2.1关闭防火墙和增强机制,将所需依赖包上传

 

 

 

 

 

 3.2.2安装JDK

 

 

 

 

 

 3.2.3设置JDK环境变量

 

 

 

 

 

 3.2.4安装启动tomcat 

 

 

 

 

 

 3.2.5查看端口

 

 

 

3.3动静分离配置

配置tomcat服务器1

3.3.1创建指定首页目录

 

 

 3.3.2创建默认首页文件,并写入内容

 

 

 3.3.3编辑tomcat主配置文件

 

 

 

 

 

 3.3.4重启tomcat服务

 

 

 配置tomcat服务器2

3.3.1创建tomcat1指定首页目录

 

 

 

 

 

 3.3.2编辑tomcat1主配置文件

 

 

 

 

 

 

 

 

 3.3.3重启tomcat1服务

 

 

 3.3.4创建tomcat2指定首页目录

 

 

 

 

 

 3.3.5编辑tomcat2主配置文件 

先修改tomcat2的修改端口号

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 3.3.6重启tomcat2服务

 

 

 

3.4Nginx server 配置

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

 

 

 

 

 

 

 

 

 

3.4.2配置负载均衡的服务器列表 

 

 

 3.4.3重启nginx服务

 

 

 

3.5测试效果

测试静态页面效果
浏览器访问 http://192.168.108.50/
浏览器访问 http://192.168.108.50/hudieren.jpg

 

 

 在配置文件中加入字符集可显示中文

 

 

 

 

 

 

 

 

 测试负载均衡效果,不断刷新浏览器测试
浏览器访问 http://192.168.108.50/index.jsp 

 

 

 

 

 

 

四:Nginx 负载均衡模式

4.1rr 负载均衡模式

每个请求按时间顺序逐一分配到不同的后端服务器,如果超过了最大失败次数后(max_fails,默认1),在失效时间内(fail_timeout,默认10秒),该节点失效权重变为0,超过失效时间后,则恢复正常,或者全部节点都为down后,那么将所有节点都恢复为有效继续探测,一般来说rr可以根据权重来进行均匀分配

4.2least_conn 最少连接

优先将客户端请求调度到当前连接最少的服务器

4.3ip_hash 负载均衡模式

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,但是ip_hash会造成负载不均,有的服务请求接受多,有的服务请求接受少,所以不建议采用ip_hash模式,session 共享问题可用后端服务的 session 共享代替 nginx 的 ip_hash

4.4fair(第三方)负载均衡模式

按后端服务器的响应时间来分配请求,响应时间短的优先分配

4.5url_hash(第三方)负载均衡模式

基于用户请求的uri做hash。和ip_hash算法类似,是对每个请求按url的hash结果分配,使每个URL定向到同一个后端服务器,但是也会造成分配不均的问题,这种模式后端服务器为缓存时比较好

五:总结

在生产环境中我们需要用nginx负载均衡、动静分离的功能来实现我们的工作,所以我们需要熟悉动静分离和负载均衡的原理以及如何进行配置。

 

posted @ 2022-11-17 19:54  原味苦茶  阅读(52)  评论(0编辑  收藏  举报