一、nginx实现负载均衡原理
nginx服务器作为前端,tomcat服务器作为后端,web页面请求由nginx服务来进行转发。
但是不是把所有的web请求转发,而是将静态页面请求nginx服务器自己来处理,动态页面请求,转发给后端的tomcat服务器来处理。
tomcat是属于轻量级的应用服务器,可接受访问量可能会不足,所以我们需要多台tomcat服务器,然后通过nginx配置权重来进行挑选tomcat服务器去进行处理,负载均衡的一种策略。
nginx服务器
1、首页使用精准匹配
2、静态页面使用正则匹配自己处理
3、动态页面使用正则匹配jsp结尾的请求,使用proxy_pass转发给tomcat服务器
二、nginx动静分离原理
服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由 nginx 提供服务,动态资源由 nginx 转发至后端。
nginx 静态处理优势
- nginx 处理静态页面的效率远高于 tomcat 的处理能力
- 若 tomcat 的请求量为1000次,则 nginx 的请求量为6000次
- tomcat 每秒的吞吐量为0.6m,nginx 的每秒吞吐量为3.6m
- nginx 处理静态资源的能力是 tomcat 处理的6倍
三、nginx + tomcat 动静分离、负载均衡配置步骤
环境准备:
nginx 服务器:192.168.121.13
tomcat 服务器1:192.168.121.12:8080 192.168.121.12:8081
tomcat 服务器2:192.168.121.10
|
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 |
首先将 nginx-1.12.0.tar.gz 压缩包上传到 /opt 目录下
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
yum install -y pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
useradd -m -s /sbin/nologin nginx
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 \\
--with-http_flv_module \\
--with-http_ssl_module
make && make install
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
execreload=/bin/kill -s hup $mainpid
execstop=/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 应用服务器
|
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41 |
所需安装包为:
apache-tomcat-9.0.16.tar.gz
jdk-8u201-linux-x64.rpm
#scp apache-tomcat-9.0.16.tar.gz root@192.168.121.10:/opt #将所需的压缩包在tomcat1上传给tomcat2 server,当然我们也可以自己直接将压缩包拉到/opt目录下
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
rpm -qpl jdk-8u201-linux-x64.rpm
rpm -ivh jdk-8u201-linux-x64.rpm
java -version
vim /etc/profile.d/java.sh
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
source /etc/profile.d/java.sh
java -version
cd /opt
vim abc.java
public class abc {
public static void main(string[] args){
system.out.println("hello world!")
}
}
[root@localhost?opt]#javac abc.java #用来检测jdk环境是否设置成功
[root@localhost?opt]#java abc
hello world!
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat
##启动tomcat##
/usr/local/tomcat/bin/startup.sh
netstat -natp | grep 8080 |
动静分离配置
|
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 |
(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/ |
nginx 负载均衡模式
rr 负载均衡模式:
每个请求按时间顺序逐一分配到不同的后端服务器,如果超过了最大失败次数后(max_fails,默认1),在失效时间内(fail_timeout,默认10秒),该节点失效权重变为0,超过失效时间后,则恢复正常,或者全部节点都为down后,那么将所有节点都恢复为有效继续探测,一般来说rr可以根据权重来进行均匀分配。
least_conn 最少连接:
优先将客户端请求调度到当前连接最少的服务器。
ip_hash 负载均衡模式:
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,但是ip_hash会造成负载不均,有的服务请求接受多,有的服务请求接受少,所以不建议采用ip_hash模式,session 共享问题可用后端服务的 session 共享代替 nginx 的 ip_hash。
fair(第三方)负载均衡模式:
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
url_hash(第三方)负载均衡模式:
和ip_hash算法类似,是对每个请求按url的hash结果分配,使每个url定向到一个同 一个后端服务器,但是也会造成分配不均的问题,这种模式后端服务器为缓存时比较好。
总结
到此这篇关于nginx负载均衡以及动静分离的原理与配置的文章就介绍到这了,更多相关nginx负载均衡及动静分离内容请搜索快网idc以前的文章或继续浏览下面的相关文章希望大家以后多多支持快网idc!
原文链接:https://blog.csdn.net/m0_54585768/article/details/117903932
相关文章
- 个人服务器网站搭建:如何选择适合自己的建站程序或框架? 2025-06-10
- 64M VPS建站:能否支持高流量网站运行? 2025-06-10
- 64M VPS建站:怎样选择合适的域名和SSL证书? 2025-06-10
- 64M VPS建站:怎样优化以提高网站加载速度? 2025-06-10
- 64M VPS建站:是否适合初学者操作和管理? 2025-06-10
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
-
2025-05-27 79
-
2025-05-27 36
-
2025-05-27 101
-
2025-05-25 31
-
2025-05-29 82






