100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Nginx+Tomcat负载均衡 动静分离

Nginx+Tomcat负载均衡 动静分离

时间:2022-06-05 08:04:09

相关推荐

Nginx+Tomcat负载均衡 动静分离

目录

一:Nginx实现负载均衡原理

二:Nginx动静分离原理

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

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主配置文件

3.3.6重启tomcat2服务

3.4Nginx server 配置

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

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

3.4.3重启nginx服务

3.5测试效果

四:Nginx 负载均衡模式

4.1rr 负载均衡模式

4.2least_conn 最少连接

4.3ip_hash 负载均衡模式

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

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

五:总结

前言:本章我们学习Nginx负载均衡原理以及动静分离原理并且如何实现负载均衡和动静分离

一: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.137.15

●Tomcat服务器1:192.168.137.10:80

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

3.1部署Nginx负载均衡器

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

systemctl stop firewalldsystemctl disable firewalldsetenforce 0

3.1.2安装依赖包

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

3.1.3创建运行用户、组

useradd -M -s /sbin/nologin nginx

3.1.4解压安装包

tar zxvf nginx-1.12.0.tar.gz -C /opt/

3.1.5编译安装Nginx

./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层调度make -j2 && make installln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/#让系统识别nginx的操作命令

3.1.6添加nginx系统服务

vim /lib/systemd/system/nginx.service[Unit]Description=nginxAfter=network.target[Service]Type=forkingPIDFile=/usr/local/nginx/logs/nginx.pidExecStart=/usr/local/nginx/sbin/nginxExecrReload=/bin/kill -s HUP $MAINPIDExecrStop=/bin/kill -s QUIT $MAINPIDPrivateTmp=true[Install]WantedBy=multi-user.target

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

chmod 754 /lib/systemd/system/nginx.servicesystemctl start nginx.servicesystemctl enable nginx.service

3.2部署2台tomcat应用服务器

配置tomcat服务器1

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

systemctl stop firewalldsystemctl disable firewalldsetenforce 0

3.2.2安装JDK

cd /optrpm -qpl jdk-8u201-linux-x64.rpm rpm -ivh jdk-8u201-linux-x64.rpm java -version

3.2.3设置JDK环境变量

vim /etc/profile.d/java.shexport JAVA_HOME=/usr/java/jdk1.8.0_201-amd64export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jarexport PATH=$JAVA_HOME/bin:$PATHsource /etc/profile

3.2.4安装启动tomcat

tar zxvf apache-tomcat-9.0.16.tar.gzmv /opt/apache-tomcat-9.0.16/ /usr/local/tomcat/usr/local/tomcat/bin/shutdown.sh /usr/local/tomcat/bin/startup.sh

3.2.5查看端口

netstat -anpt | grep 8080java -version

配置tomct服务器2

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

systemctl stop firewalldsystemctl disable firewalldsetenforce 0

3.2.2安装JDK

cd /optrpm -qpl jdk-8u201-linux-x64.rpm rpm -ivh jdk-8u201-linux-x64.rpm java -version

3.2.3设置JDK环境变量

vim /etc/profile.d/java.shexport JAVA_HOME=/usr/java/jdk1.8.0_201-amd64export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jarexport PATH=$JAVA_HOME/bin:$PATHsource /etc/profile

3.2.4安装启动tomcat

tar zxvf apache-tomcat-9.0.16.tar.gz -C /usr/localmv /usr/local/apache-tomcat-9.0.16/ /usr/local/tomcat1cp -rp /usr/local/tomcat1/ /usr/local/tomcat2/usr/local/tomcat1/bin/shutdown.sh /usr/local/tomcat1/bin/startup.sh/usr/local/tomcat2/bin/shutdown.sh /usr/local/tomcat2/bin/startup.sh

3.2.5查看端口

netstat -anpt | grep 8080java -version

3.3动静分离配置

配置tomcat服务器1

3.3.1创建指定首页目录

mkdir /usr/local/tomcat/webapps/xiao

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

vim /usr/local/tomcat/webapps/xiao/index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html><head><title>JSP xiao page</title> #指定为 xiao 页面</head><body><% out.println("动态页面:名侦探柯南");%></body></html>

3.3.3编辑tomcat主配置文件

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/xiao" path="" reloadable="true" /></Host>/usr/local/tomcat/bin/shutdown.sh /usr/local/tomcat/bin/startup.sh

3.3.4重启tomcat服务

配置tomcat服务器2

3.3.1创建tomcat1指定首页目录

mkdir /usr/local/tomcat1/webapps/xiaovim /usr/local/tomcat1/webapps/xiao/index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html><head><title>JSP hudie page</title></head><body><% out.println("动态页面 1:鬼灭之刃");%></body></html>

3.3.2编辑tomcat1主配置文件

cd /usr/local/tomcat1cd conf/cp server.xml server.xml.bak

vim server.xml<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat1/webapps/hudie" path="" reloadable="true"></Context></Host>

3.3.3重启tomcat1服务

/usr/local/tomcat1/bin/shutdown.sh /usr/local/tomcat1/bin/startup.sh

3.3.4创建tomcat2指定首页目录

cd ../../tomcat2/mkdir /usr/local/tomcat2/webapps/mifengvim /usr/local/tomcat2/webapps/mifeng/index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html><head><title>JSP mifeng page</title></head><body><% out.println("动态页面 2 猫和老鼠");%></body></html>

3.3.5编辑tomcat2主配置文件

vim conf/server.xml<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat2/webapps/mifeng" path="" reloadable="true"></Context></Host>

先修改tomcat2的修改端口号

3.3.6重启tomcat2服务

/usr/local/tomcat2/bin/shutdown.sh /usr/local/tomcat2/bin/startup.sh

3.4Nginx server 配置

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

echo '<html><body><h1>ming zhen tan ke nan</h1></body></html>' > /usr/local/nginx/html/index.htmlmkdir /usr/local/nginx/html/img

mkdir /usr/local/nginx/html/imgcd /usr/local/nginx/html/imgrz -E

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

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

cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bakvim /usr/local/nginx/conf/nginx.conf

3.4.3重启nginx服务

systemctl restart nginx.service

3.5测试效果

测试静态页面效果

浏览器访问 http://192.168.137.15/

浏览器访问 http://192.168.137.15/hudieren.jpg

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

测试负载均衡效果,不断刷新浏览器测试

浏览器访问 http://192.168.137.15/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负载均衡、动静分离的功能来实现我们的工作,所以我们需要熟悉动静分离和负载均衡的原理以及如何进行配置。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。