Nginx负载均衡以及动静分离的原理与配置

2025-05-26 0 50

一、nginx实现负载均衡原理

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

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 静态处理优势

  • 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、部署 nginx 负载均衡服务器

?

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

Nginx负载均衡以及动静分离的原理与配置

Nginx负载均衡以及动静分离的原理与配置
Nginx负载均衡以及动静分离的原理与配置

动静分离配置

?

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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Nginx负载均衡以及动静分离的原理与配置 https://www.kuaiidc.com/53088.html

相关文章

发表评论
暂无评论