Nginx+Tomcat负载均衡和动静分离

一、什么是负载均衡

负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

负载均衡有三种部署方式:路由模式、桥接模式、服务直接返回模式。路由模式部署灵活,约60%的用户采用这种方式部署;桥接模式不改变现有的网络架构;服务直接返回(DSR)比较适合吞吐量大特别是内容分发的网络应用。约30%的用户采用这种模式。

负载平衡也称负载共享,是指对系统中的负载情况进行动态调整,以尽量消除或减少系统中各节点负载不均衡的现象。具体实现方法是将过载节点上的任务转移到其他轻载节点上,尽可能实现系统各节点的负载平衡,从而提高系统的吞吐量。负载共享有利于统筹管理分布式系统中的各种资源,便于利用共享信息及其服务机制扩大系统的处理能力。
动态负载共享策略是指把系统中各节点上已有的负载作为参考信息,在运行过程中,根据系统中各节点的负载状况,随时调整负载的分配,使各节点尽可能保持负载的平衡。
负载:负载共享算法中的关键问题是如何确定负载。根据任务负载可以判断某一任务在特定节点的响应时间,确定在该节点上的执行性能。曾经被研究及使用的负载包括CPU队列长度、某时间内的平均CPU队列长度、CPU利用率等。Kunz发现负载的选取对系统性能有着重要的影响,而最有效的负载计算方式是CPU队列长度。
动机:用户将任务提交给系统处理,由于任务到达的随机性导致了某些处理机处于过载而某些处理处于空闲或轻载状态。负载共享能够通过将过载处理机上的任务迁移到轻载处理机上执行来提高性能。
性能:从静态角度看,高性能是指各处理机上的负载基本平衡。从动态角度看,性能的尺度是任务的平均响应时间,而任务的响应时间是指任务从提交到开始执行的持续时间。
负载平衡策略:
动态负载平衡策略包含四个部分:转移策略、选择策略、定位策略和信息策略。

在这里插入图片描述

二、负载均衡的分类

1、软件负载均衡解决方案是指在一台或多台服务器相应的操作系统上安装一个或多个附加软件来实现负载均衡,如DNS Load Balance,CheckPoint Firewall-1 ConnectControl等,它的优点是基于特定环境,配置简单,使用灵活,成本低廉,可以满足一般的负载均衡需求。

2、硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,这种设备通常称之为负载均衡器,由于专门的设备完成专门的任务,独立于操作系统,整体性能得到大量提高,加上多样化的负载均衡策略,智能化的流量管理,可达到最佳的负载均衡需求。

三、什么是动静分离

动静分离是指在web服务器架构中,将静态页面与动态页面或者静态内容接口和动态内容接口分开不同系统访问的架构设计方法,进而提升整个服务访问性能和可维护性。

四、为什么动静分离?

因为NGINX处理静态页面的效率远远高于Tomcat的处理能力(大概处理能力比值在6:1左右);同时动态资源和静态资源分开,服务器结构会更加清晰明了。

五、动静分离的大概流程:

服务端接收来自客户端的请求中,有一部分是静态资源的请求,例如html,css,js和图片资源等等,有一部分是动态数据的请求。因为tomcat处理静态资源的速度比较慢,所以我们可以考虑把所有静态资源独立开来,交给处理静态资源更快的服务器例如nginx处理,而把动态请求交给tomcat处理。

在这里插入图片描述

准备一台Centos 7 的服务器

准备jdk环境、Tomcat源码包、Nginx源码包
[root@ localhost ~]# cd /usr/src/
[root@ localhost src]# ll
total 147860
-r-xr-xr-x  1 root root   8234674 2019-12-02 16:05 apache-tomcat-7.0.47.tar.gz
drwxr-xr-x. 2 root root         6 2016-11-05 23:38 debug
-r-xr-xr-x  1 root root       467 2019-12-02 16:05 http_conf.txt
-r-xr-xr-x  1 root root 142183549 2019-12-02 16:05 jdk-8u20-linux-x64.rpm
drwxr-xr-x. 3 root root        35 2019-09-17 22:13 kernels
-r-xr-xr-x  1 root root    980831 2019-12-02 16:05 nginx-1.12.0.tar.gz
[root@ localhost src]# 

安装部署

安装NGINX

根据具体情况安装一下依赖包
# 安装Nginx的依赖环境包
yum -y install pcre* zlib-devel gcc gcc-c++
# 解压Nginx包至指定路径
tar zxf nginx-1.12.0.tar.gz -C /usr/src/
# 进入Nginx的目录
cd nginx-1.12.0/
#配置编译安装
./configure --prefix=/usr/local/nginx && make && make install

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

#  返回上一级目录
cd ..
#   安装jdk环境
rpm -ivh jdk-8u20-linux-x64.rpm 
# 为jdk配置环境变量,并测试
vim /etc/profile

# 在文件最底部添加如下三行,修改完保存退出
export JAVA_HOME=/usr/java/jdk1.8.0_20
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

#使环境变量生效
source /etc/profile

#查看java的版本
java -version
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)
#  解压Tomcat源码包
tar zxf apache-tomcat-7.0.47.tar.gz 
mv apache-tomcat-7.0.47 /opt/tomcat
# 查看Tomcat根目录下的文件内容
[root@ localhost src]# ll /opt/tomcat/webapps/ROOT/
total 196
-rw-r--r-- 1 root root 17811 2013-10-18 18:19 asf-logo.png
-rw-r--r-- 1 root root  5866 2013-10-18 18:19 asf-logo-wide.gif
-rw-r--r-- 1 root root   713 2013-10-18 18:19 bg-button.png
-rw-r--r-- 1 root root  1918 2013-10-18 18:19 bg-middle.png
-rw-r--r-- 1 root root  1392 2013-10-18 18:19 bg-nav-item.png
-rw-r--r-- 1 root root  1401 2013-10-18 18:19 bg-nav.png
-rw-r--r-- 1 root root  3103 2013-10-18 18:19 bg-upper.png
-rw-r--r-- 1 root root  3376 2013-10-18 18:21 build.xml
-rw-r--r-- 1 root root 21630 2013-10-18 18:19 favicon.ico
-rw-r--r-- 1 root root 12308 2013-10-18 18:21 index.jsp
-rw-r--r-- 1 root root  8826 2013-10-18 18:21 RELEASE-NOTES.txt
-rw-r--r-- 1 root root  5576 2013-10-18 18:21 tomcat.css
-rw-r--r-- 1 root root  2066 2013-10-18 18:19 tomcat.gif
-rw-r--r-- 1 root root  5103 2013-10-18 18:19 tomcat.png
-rw-r--r-- 1 root root  2376 2013-10-18 18:19 tomcat-power.gif
-rw-r--r-- 1 root root 67198 2013-10-18 18:21 tomcat.svg
drwxr-xr-x 2 root root    21 2019-12-02 16:28 WEB-INF
#  启动Nginx服务
[root@ localhost src]# /usr/local/nginx/sbin/nginx
#  启动Tomcat服务 
[root@ localhost src]# /opt/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
[root@ localhost src]# 

再安装一个Tomcat

cd /usr/src/
tar zxf apache-tomcat-7.0.47.tar.gz 
mv apache-tomcat-7.0.47 /opt/tomcat1
cd /opt/tomcat1/webapps/ROOT/
vim index.jsp 

在这里插入图片描述

修改成为以下内容

在这里插入图片描述

 cd /opt/tomcat1/conf/
 vim server.xml 
8005
关闭tomcat通信接口, port:指定一个端口,这个端口负责监听关闭Tomcat的请求 shutdown:向以上端口发送的关闭服务器的命令字符串
8009 
接受其他服务器转发过来的请求
8080
建立http连接 用,如浏览器访问
vim server.xml
#  修改以下三个端口 

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

#   修改完保存退出,启动Tomcat服务
[root@ localhost conf]# /opt/tomcat1/bin/startup.sh 
Using CATALINA_BASE:   /opt/tomcat1
Using CATALINA_HOME:   /opt/tomcat1
Using CATALINA_TMPDIR: /opt/tomcat1/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /opt/tomcat1/bin/bootstrap.jar:/opt/tomcat1/bin/tomcat-juli.jar
#   查看tomcat进程
[root@ localhost conf]# ps -ef |grep java
root      20653      1  0 16:49 pts/2    00:00:20 /usr/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/opt/tomcat/endorsed -classpath /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/opt/tomcat -Dcatalina.home=/opt/tomcat -Djava.io.tmpdir=/opt/tomcat/temp org.apache.catalina.startup.Bootstrap start
root      21053      1  2 17:30 pts/2    00:00:12 /usr/bin/java -Djava.util.logging.config.file=/opt/tomcat1/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/opt/tomcat1/endorsed -classpath /opt/tomcat1/bin/bootstrap.jar:/opt/tomcat1/bin/tomcat-juli.jar -Dcatalina.base=/opt/tomcat1 -Dcatalina.home=/opt/tomcat1 -Djava.io.tmpdir=/opt/tomcat1/temp org.apache.catalina.startup.Bootstrap start
root      21101   2700  0 17:37 pts/2    00:00:00 grep --color=auto java
[root@ localhost conf]# 

开始修改nginx的配置文件 配置使用Nginx反向代理,转发JSP的请求给Tomcat

实现负载均衡效果
 vim /usr/local/nginx/conf/nginx.conf

在这里插入图片描述

访问测试负载均衡效果

在这里插入图片描述

在这里插入图片描述

实现负载均衡+动静分离的效果

#  编辑修改Nginx配置文件
vim /usr/local/nginx/conf/nginx.conf

在这里插入图片描述

访问到Nginx静态页面

在这里插入图片描述

访问到Tomcat页面

在这里插入图片描述

访问到第二个Tomcat页面

在这里插入图片描述

测试访问到Tomcat动态页面

在这里插入图片描述

在这里插入图片描述

拷贝一张图片至Nginx的首页根目录下

cp tomcat.png /usr/local/nginx/html/

刷新页面即可

在这里插入图片描述

至此,Nginx+Tomcat负载均衡和动静分离部署完毕。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值