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

Tomcat概述

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

Ngiinx概述

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

特点

  • 支持高达50000个并发连接响应
  • 拥有强大的静态资源处理能力
  • 运行稳定
  • 硬件资源占用很低

Nginx负载均衡实现原理

示意图
在这里插入图片描述Ngxin配置参数

upstream 服务器池 { }

  • 配置之后的后端服务器,让其为自己提供响应数据
    proxy_pass http://服务器地址
  • 配置将访问请求转发给后端服务器池的服务器处理

Nginx动静分离实现原理

服务费接收来自客户端的请求中基友静态资源也有动态资源,静态资源由nginx提供,动态资源由nginx转发给后端服务器提供服务。

nginx处理静态页面对比tomcat优势

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

来吧!展示!!

nginx服务ip:20.0.0.11
cat01:20.0.0.3
cat02:20.0.0.4

实验①

搭建 Nginx 服务器

安装环境依赖包
[root@nginx bao]# yum -y install \
> pcre-devel \
> zlib-devel \
> gcc gcc-c++ \
> make
[root@nginx bao]# useradd -M -s /sbin/nologin nginx
[root@nginx bao]# tar zxvf nginx-1.12.2.tar.gz
[root@nginx bao]# cd nginx-1.12.2/
[root@nginx nginx-1.12.2]# ./configure \
> --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx \
> --with-http_stub_status_module \  ##统计模块
> --with-http_gzip_static_module \  ##压缩模块
> --with-http_flv_module			##视频模块
[root@nginx nginx-1.12.2]# make && make install
[root@nginx nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

编辑配置文件

[root@nginx nginx-1.12.2]# vim /usr/local/nginx/conf/nginx.conf
    #gzip  on;   ##找到这行,在下面添加
        upstream catserver {
    
              ##设置节点服务器,你们做的时候名字起的正规点啊哈哈哈
                        server 20.0.0.3:8080 weight=1;  ##指向cat01 IP,weight指的是权重
                        server 20.0.0.4:8080 weight=1;  ##看上面自己理解吧
                    }
    server {
    
    
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
    
    
            root   html;
            index  index.html index.htm;
        }
        location ~.*.jsp$ {
    
      ##往下加,匹配到以 jsp 结尾的网页再两台节点服务器中轮询          
          proxy_pass http://catserver;
        }
[root@nginx nginx-1.12.2]# systemctl stop firewalld
[root@nginx nginx-1.12.2]# setenforce 0

搭建 Tomcat 服务器

安装、配置tomcat
两台通样操作

[root@cat01 bao]# tar zxvf jdk-8u91-linux-x64.tar.gz
[root@cat01 bao]# mv jdk1.8.0_91/ /usr/local/
[root@cat01 bao]# 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@cat01 bao]# source /etc/profile
[root@cat01 bao]# java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

[root@cat01 bao]# tar zxvf apache-tomcat-8.5.16.tar.gz
[root@cat01 bao]# mv apache-tomcat-8.5.16 /usr/local/tomcat
[root@cat01 bao]# cd /usr/local/tomcat/
[root@cat01 tomcat]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin
[root@cat01 tomcat]# ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin
[root@cat01 bao]# mkdir -p /web/cat01 
[root@cat01 bao]# vim /web/cat01/index.jsp   ##cat02 改成 /web/cat02
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
 <head>
    <title>CAT01 web</title>
 </head>
 <body>
    <% out.println("This is CAT01.");%>   ##另一台配置 This is CAT02.
 </body>
</html>

[root@cat01 bao]# vim /usr/local/tomcat/conf/server.xml
148       <Host name="localhost"  appBase="webapps"   
149             unpackWARs="true" autoDeploy="true">  ##主配置文件里找到这个服字段,在下面添加,意思差不多是重新定义主页位置
150       <Context docBase="/web/cat01" path="" reloadable="false">
151       </Context>
[root@cat01 bao]# startup.sh 
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.
[root@cat01 bao]# netstat -ntap |grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      74552/java   

验证实验

在这里插入图片描述
在这里插入图片描述
实验成功,当匹配到动态网页时轮询指向两台web服务器,但是注意工作中两台主机的页面必须一样

实验②

实验需求:nginx处理静态图片,Tomcat处理动态页面配置
Tomcat指路径,nginx放图片
目录名称需要和Java项目名称相同

Tomcat01 配置

02我就不改了,麻烦

[root@cat01 bao]# vim /web/cat01/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="nginx/html; charset=UTF-8">  ##位置和图的位置一样,nginx/html
<title>CAT01 web</title>
</head>
<body>
<div>This is CAT01.</div><br>
<img src="FDL.jpg">
</body>
</html>

Nginx 配置

[root@nginx /]# cd /usr/local/nginx/html/
[root@nginx html]# rz -E
rz waiting to receive.
[root@nginx html]# ls
50x.html  FDL.jpg  index.html

[root@nginx html]# vim /usr/local/nginx/conf/nginx.conf
    server {
    
    
        listen       80;
        server_name  localhost;
        ##添加下面
        location ~.*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
    
    
          root html;
          expires 30s;

测试实验

在这里插入图片描述实验成功

猜你喜欢

转载自blog.csdn.net/Ora_G/article/details/108385796