Nginx+Tomcat负载均衡群集(动静分离)

1.Nginx应用

Nginx是一款非常优秀的HTTP服务器软件
	支持高达50000个并发连接数的响应
	拥有强大的静态资源处理能力
	运行稳定
	内存、CPU等系统资源消耗非常低
目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,提升整个站点的负载并发能力

2.Nginx负载均衡实现原理

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

Nginx配置反向代理的主要参数
upstream 服务池名 { }
配置后端服务器池,以提供响应数据
proxy_pass http://服务池名
配置将访问请求转发给后端服务器池的服务器处理

反向代理原理:
在这里插入图片描述

3.Nginx动静分离实现原理

动静分离原理

服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由nginx提供服务,动态资源nginx转发至后端
在这里插入图片描述

nginx静态处理优势:
nginx处理静态页面的效率远高于Tomcat的处理能力
若Tomcat的请求量为1000次,则nginx的请求量为6000次
Tomct每秒的吞吐量为0.6M,nginx的每秒吞吐量为3.6M
nginx处理静态资源的能力是Tomcat处理的6倍

4.Nginx+Tomcat负载均衡、动静分离实验

案例架构:
本架构同时实现了nginx的负载均衡和动态分离,静态页面由nginx处理,动态页面由nginx进行调度,分配给后端的两台Tomcat网站服务器,权重值为1:1

主机IP地址主要软件
Nginx负载均衡器192.168.100.11nginx
Tomcat网站服务node1192.168.100.12jdk、apache-tomcat
Tomcat网站服务node2192.168.100.13jdk、apache-tomcat
win10客户端192.168.100.14浏览器

1.两台Tomcat服务器节点部署

1.安装jdk环境

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# tar zxf jdk-8u91-linux-x64.tar.gz -C /usr/local/
[root@localhost ~]# vim /etc/profile
最后加入如下内容
export JAVA_HOME=/usr/local/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=$JAVA_HOME/bin:$PATH
[root@localhost ~]# source /etc/profile

2.安装Tomcat软件,创建软连接

tar zxf apache-tomcat-8.5.16.tar.gz -C /usr/local/
cd /usr/local/
mv apache-tomcat-8.5.16/ tomcat

ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/

3.为两台节点创建web目录,并编辑不同网页内容加以区别

[root@localhost local]# mkdir -pv /web/webapp1
mkdir: 已创建目录 "/web"
mkdir: 已创建目录 "/web/webapp1"
[root@localhost local]# vim /web/webapp1/index.jsp
<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/ html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>动态页面</title>
</head>
<body>
<h1>动态页面01</h1>
<p>这是个动态页面01</p>          ##此处节点2编辑为<p>这是个动态页面02</p>,其余相同
</body>
</html>

4.在tomact的主配置文件中添加指定web应用的文档基准目录区段

[root@localhost local]# vim /usr/local/tomcat/conf/server.xml
#在第148行<Host>字段下面添加<Context>字段参数
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
      <Context docBase="/web/webapp1" path="" reloadable="false">
      </Context>
注:docBase:web应用的文档基准目录
        reloadable:设置监视“类”是否变化
        path="":设置默认“类”

2.Nginx服务部署

1.安装依赖包

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

2.为web服务器创建用户nginx,便于管理,再进行编译安装

[root@nginx1 ~]# useradd -M -s /sbin/nologin nginx
[root@nginx1 ~]# tar zxf nginx-1.12.0.tar.gz
[root@nginx1 ~]# cd nginx-1.12.0/
[root@nginx1 nginx-1.12.0]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx
[root@nginx1 nginx-1.12.0]# make && make install

3.在nginx服务器中配置负载均衡和动静分离相关参数,对java文件请求转发到Tomcat处理
在nginx服务器中的主配置文件中修改如下内容

[root@localhost test]# vim /usr/local/nginx/conf/nginx.conf
 #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    upstream tomcat_server {       #配置后端服务器池,以提供响应数据,权重为1:1
         server 192.168.100.12:8080 weight=1;
         server 192.168.100.13:8080 weight=1;
        }
    server {
        listen       80;
     ...省略内容
        location ~ .*.jsp$ { 
            proxy_pass http://tomcat_server;        #将java文件请求转发到Tomcat服务器池处理
            proxy_set_header Host $host;
        }

4.启动服务

[root@nginx1 html]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@nginx1 html]# systemctl stop firewalld.service
[root@nginx1 html]# setenforce 0
[root@nginx1 html]# nginx

5.编辑静态页面

[root@localhost nginx-1.12.0]# vim /usr/local/nginx/html/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>静态页面!</h1>
<p>这是个静态页面</p>
</body>
</html>

5.结果验证
win10浏览器中访问静态页面
http://192.168.100.11
在这里插入图片描述

win10浏览器中访问动态页面(通过刷新页面会显示不同内容)
http://192.168.100.11/index.jsp
在这里插入图片描述
在这里插入图片描述

3.动静分离实验进阶

在前面实验基础上继续验证Tomcat处理动态页面,nginx处理静态图片(Tomcat指路径,nginx放图片)

在这里插入图片描述

1.两台Tomcat服务网页内容上添加如下参数

vim /web/webapp1/index.jsp在<body>中加入<img src='a.jpg'>

2.Nginx服务配置文件添加如下参数

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
    server {
       ...省略内容
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
        root /web/webapp1;
        expires 30d;
        }
[root@localhost ~]# mkdir -pv /web/webapp1
                                          #注意:目录名称和tomcat网页站点存放目录名称要相同
[root@localhost ~]# cd /web/webapp1
[root@localhost webapp1]# ls                     #将对应文件名的图片放入到目录下
image.jpg

3.在浏览器上访问http://192.168.100.11/index.jsp,成功轮询访问,另外图片也会显示出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值