Nginx + Tomcat 实现负载均衡,动静分离集群部署

简介: 1、Nginx实现负载均衡原理2、Nginx配置反向代理主要参数3、实验

1、Nginx实现负载均衡原理:


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

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

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

如图所示:


2387773-20210817204834070-1636519123.png


Nginx静态处理优势 :

  • Nginx处理静态页面的效率远高于Tomcat的处理能力
  • 若Tomcat的请求量为1000次,则Nginx的请求量为6000次
  • Tomcat每秒的吞吐量为0.6M,Nginx的每秒吞吐量为3 .6M
  • Nginx处理静态资源的能力是Tomcat处理的6倍

 

Nginx动静分离原理:

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

如图:


2387773-20210817205305635-1601809736.png



2、Nginx配置反向代理主要参数:


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

upstream 服务器名 {}


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

proxy_pass http://服务器名


3、实验:


a)Nginx+Tomcat负载均衡、动静分离

b)Nginx作为负载均衡器,Tomcat作为应用服务器

环境配置:

三台主机,一台nginx服务  两台tomcat服务


2387773-20210818104804642-623750596.png


1:部署nginx负载均衡器

将安装包拖到opt目录下


2387773-20210819115911241-1468332864.png


用shell脚本一键部署nginx , 使用source 执行脚本

2387773-20210819120005752-36615498.png

2387773-20210819120135811-322747441.png

2:部署2台tomcat应用服务器

vim tomcat.sh


#!/bin/bash
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
#安装JDK
cd /opt
rpm -qpl jdk-8u201-linux-x64.rpm
rpm -ivh jdk-8u201-linux-x64.rpm
java -version
#设置JDK环境变量
echo 'export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar                      
export PATH=$JAVA_HOME/bin:$PATH' > /etc/profile.d/java.sh
source /etc/profile
#安装启动Tomcat
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat
/usr/local/tomcat/bin/startup.sh


source tomcat.sh
netstat -natp | grep 8080
java -version

2387773-20210819120350934-619065149.png

2387773-20210819120404683-1593900975.png

2387773-20210819120411583-1924297076.png

2387773-20210819120418641-236502374.png

3:动静分离配置

tomcat server1 配置

mkdir /usr/local/tomcat/webapps/lic
vim /usr/local/tomcat/webapps/lic/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test2 page</title>
</head>
<body>
<% out.println("动态页面:天青色等烟雨");%>
</body>
</html>
vim /usr/local/tomcat/conf/server.xml
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    <Context docBase="/usr/local/tomcat/webapps/lic" path="" reloadable="true" />
</Host>
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

2387773-20210819120536983-1755141619.png

2387773-20210819120638329-710029563.png

2387773-20210819120647933-932651900.png


tonmcat server2 配置


mkdir /usr/local/tomcat/webapps/lic
vim /usr/local/tomcat/webapps/lic/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test2 page</title>
</head>
<body>
<% out.println("动态页面:长襟落落秋风");%>
</body>
</html>
vim /usr/local/tomcat/conf/server.xml
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    <Context docBase="/usr/local/tomcat/webapps/lic" path="" reloadable="true" />
</Host>
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

2387773-20210819120757853-126185090.png

2387773-20210819120809559-1492844489.png

2387773-20210819120828734-1385365749.png


nginx server配置  

#准备静态页面和静态图片
echo '<html><body><h1>这是默认目录静态页面</h1></body></html>' > /usr/local/nginx/html/index.html
mkdir /usr/local/nginx/html/ki


#配置负载均衡的服务器列表,weight参数表示权重,权重越高,被分配到的概率越大

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

......
http {
......
#gzip on;
upstream tomcat_server {
    server 192.168.184.20:8080 weight=1;
    server 192.168.184.30:8080 weight=1;
}
server {
    listen 80;
    server_name www.lic.com;
    charset utf-8;
    #access_log logs/host.access.log main;
#配置Nginx处理动态页面请求,将 .jsp文件请求转发到Tomcat 服务器处理
    location ~ .*.jsp$ {
        proxy_pass http://tomcat_server;   
        proxy_set_header HOST $host;       
        proxy_set_header X-Real-IP $remote_addr;                   
        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/kiki;
        expires 10d;
    }
    location / {
        root html;
        index index.html index.htm;
    }
......

2387773-20210819121129869-1666438711.png

2387773-20210819121136600-2058589851.png

2387773-20210819121143073-702441500.png


7层代理与4层代理区别

image.png

Nginx负载均衡模式/调度算法

image.png




相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
22天前
|
运维 前端开发 应用服务中间件
LNMP详解(八)——Nginx动静分离实战配置
LNMP详解(八)——Nginx动静分离实战配置
24 0
|
2月前
|
缓存 前端开发 JavaScript
tomcat核心技术+Nginx性能调优技术
而Tomcat的基本配置,每个配置项也基本上对应了Tomcat的组件结构,如果要用一张图来形象展现一下Tomcat组成的话
37 1
|
2月前
|
Java 应用服务中间件 Apache
简介Nginx,Tomcat和 Apache
简介Nginx,Tomcat和 Apache
简介Nginx,Tomcat和 Apache
|
3月前
|
负载均衡 应用服务中间件 nginx
百度搜索:蓝易云【Nginx和tomcat实现负载均衡教程】
至此,你已经成功地使用Nginx和Tomcat实现了负载均衡。Nginx将根据配置的负载均衡策略将客户端请求分发到多个Tomcat服务器上,以提高系统的性能和可用性。请注意,在实际生产环境中,还需要进行其他配置和优化,如健康检查、会话保持等,以满足具体的需求。
34 0
|
3月前
|
负载均衡 安全 前端开发
百度搜索:蓝易云【Nginx与Tomcat负载均衡-动静分离教程】
这些是将Nginx与Tomcat结合使用实现负载均衡和动静分离的基本步骤。根据您的需求和具体环境,可能还需要进行其他配置和调整。请确保在进行任何与网络连接和安全相关的操作之前,详细了解您的网络环境和安全需求,并采取适当的安全措施。
48 1
|
3月前
|
负载均衡 应用服务中间件 nginx
nginx-tomcat反向代理以及负载均衡测试
nginx-tomcat反向代理以及负载均衡测试
|
3月前
|
负载均衡 算法 前端开发
Ngnix之反向代理、负载均衡、动静分离
Nginx是一个高性能的开源Web服务器,它还可以用作反向代理、负载均衡器以及动静分离的工具。
|
3月前
|
缓存 应用服务中间件 nginx
【Nginx】动静分离
【1月更文挑战第25天】【Nginx】动静分离
|
4月前
|
负载均衡 前端开发 应用服务中间件
百度搜索:蓝易云【Nginx使用之反向代理、负载均衡、动静分离教程。】
通过这样的配置,Nginx将根据请求的URL路径选择是将请求转发到后端服务器还是直接返回静态资源文件。
139 0
|
4月前
|
负载均衡 安全 应用服务中间件
Nginx + Tomcat+HTTP/HTTPS实现负载均衡实例
Nginx + Tomcat+HTTP/HTTPS实现负载均衡实例
179 0