理论+实验·Nginx+Toncat负载均衡、动静分离群集

理论+实验·Nginx+Toncat负载均衡、动静分离群集

一、Tomcat简介

1.1 Tomcat简介

  • 最初是由Sun的软件架构师詹姆斯·邓肯·戴维森开发
  • 安装Tomcat后,安装路径下面的目录和文件,是使用或者配置Tomcat的重要文件

1.2 Tomcat重要目录

  • bin:存放启动和关闭Tomcat脚本
  • conf:存放Tomcat不同的配置文件
  • doc:存放Tomcat文档
  • lib:存放Tomcat运行需要的库文件
  • logs:存放Tomcat执行时的LOG文件
  • src:存放TOmcat的源代码
  • webapps:Tomcat的主要Web发布目录
  • work:存放jsp编译后产生的class文件

1.3 Nginx应用

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

二、Nginx负载均衡原理

  • Nginx实现负载均衡是通过反向代理实现
  • Nginx配置反向代理的主要参数
    • upstream 服务池名{} //四层//
      • 配置后端服务器池,以提供响应数据
    • proxy_pass http://服务池名
      • 配置将访问请求转发给后端服务器池的服务器处理

三、Nginx动静分离原理

  • 动静分离原理
    • 服务端接受来自客户端的请求中,既有静态资源也有动态资源,静态资源由Nginx提供服务,动态资源Nginx转发至后端
  • Nginx静态处理优势
    • Nginx处理静态页面的效率远高于Tomcat的处理能力
    • 若Tomcat的请求量为1000次,则Nginx的请求量为6000次
    • Tomcat每秒的吞吐量为0.6M,Nginx的每秒吞吐量为3.6M
    • Nginx处理静态资源的能力是Tomcat处理的6倍

四、部署Tomcat

  • 实验环境

Tomcat01 20.0.0.20

Tomcat02 20.0.0.30

两台web服务器同样的配置

需要软件包apache-tomcat-8.5.16.tar.gz与jdk-8u91-linux-x64.tar.gz

//部署Tomcat//
//关闭防火墙//
[root@tomcat01 ~]# setenforce 0
[root@tomcat01 ~]# systemctl stop firewalld
//搭建JDK环境//
[root@tomcat01 ~]# tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
[root@tomcat01 ~]# 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@tomcat01 ~]# source /etc/profile
//安装Tomcat//
[root@tomcat01 ~]# tar zxvf apache-tomcat-8.5.16.tar.gz -C /usr/local/
[root@tomcat01 ~]# cd /usr/local/
[root@tomcat01 local]# mv apache-tomcat-8.5.16/ tomcat
[root@tomcat02 local]# ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
[root@tomcat02 local]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/
//搭建tomcat完成//
//部署nginx//    需要源码包nginx
//关闭防火墙//
[root@nginx ~]# setenforce 0
[root@nginx ~]# systemctl stop firewalld
//搭建预环境//
[root@nginx ~]# yum -y install pcre-devel zlib-devel gcc-c++
[root@nginx ~]# useradd -M -s /sbin/nologin nginx
//编译安装Nginx//
[root@nginx ~]# tar zxvf nginx-1.12.0.tar.gz -C /opt
[root@nginx ~]# cd /opt/nginx-1.12.0
[root@nginx nginx-1.12.0]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
[root@nginx nginx-1.12.0]# make && make install
[root@nginx nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
//搭建nginx完成//

五、配置Nginx负载均衡

//在tomcat里面加入测试页面//  两台tomcat服务器同样的操作
[root@tomcat01 local]# cd /usr/local/tomcat/webapps/
[root@tomcat01 webapps]# mkdir web
[root@tomcat01 webapps]# vim web/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
 <head>
  <title>JSP test1 page</title>
 </head>
 <body>
  <% out.println("Welcome Tomcat01 Web");%>
 </body>
</html>
[root@tomcat01 webapps]# vim /usr/local/tomcat/conf/server.xml
...
      <Host name="localhost"  appBase="webapps"			//148行//
            unpackWARs="true" autoDeploy="true">

        <Context dicBase="/web" path="" reloadable="false"> 	//添加这两行//
        </Context>
[root@tomcat01 webapps]# startup.sh 					//开启tomcat//
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.8.0_91/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

//nginx配置//
[root@nginx nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.conf
...
    #gzip  on;

    upstream tomcat_server {
        server 20.0.0.20:8080 weight=1;
        server 20.0.0.30:8080 weight=1;
    }

    server {
       ...
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://tomcat_server;
        }
...
[root@nginx nginx-1.12.0]# nginx -t				//检查语法问题//
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@nginx nginx-1.12.0]# nginx				//开启nginx服务//

六、配置Nginx动静分离

//ngixn修改配置文件//
[root@nginx nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.conf
...
server {
    ...
    localtion ~.*.jsp$ {
        proxy_pass http://20.0.0.20:8080;
        proxy_set_header Host $host;
    }
    
//创建静态页面//
[root@nginx ~]# vim /usr/local/nginx/html/index.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>静态页面</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>静态页面</h1>
<p>这是个静态页面</p>
</body>
</html>
//创建动态页面//
[root@tomcat01 ~]# mkdir /usr/local/tomcat/webapps/test
[root@tomcat01 ~]# vim /usr/local/tomcat/webapps/test/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>
<div>动态页面</div>
<p>这是个动态页面</p>
</body>
</html>
//浏览器输入20.0.0.10//
会显示静态网页的内容
//浏览器输入20.0.0.10/test/index.jsp//
会显示动态网页的内容
//nginx处理静态图片//
#修改tomcat配置信息
[root@tomcat01 ~]# vim /usr/local/tomcat/webapps/test/index.jsp 
...
<div>动态页面</div><img src="test.png">				//添加静态图片的代码//
...
#修改nginx配置
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
...
server {
...
        location ~.*.jsp$ {
            proxy_pass http://20.0.0.20:8080;
            proxy_set_header Host $host;
        }

        location ~.*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
          root html;
          expires 30d;
        }
...
[root@nginx ~]# mkdir /usr/local/nginx/html/test  //需要创建跟tomcat站点目录一样的名称并将图片放入nginx的这个目录下//
[root@nginx test]# pkill nginx
[root@nginx test]# nginx

浏览器输入"20.0.0.10/test/index.jsp"图片是让nginx去负责的
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值