Nginx + Tomcat負荷分散+動的および静的分離

Tomcatの概要

Tomcatサーバーは、無料のオープンソースWebアプリケーションサーバーであり、軽量のアプリケーションサーバーです。中小規模のシステムで、同時ユーザーが多くない場合に一般的に使用されます。JSPプログラムを開発およびデバッグするための最初の選択肢です。初心者にとっては、Apacheサーバーがマシン上で構成されている場合、それを使用してHTML(標準のユニバーサルマークアップ言語のアプリケーション)ページアクセス要求に応答することができます。実際、TomcatはApacheサーバーの拡張機能ですが、実行時に独立して実行されるため、Tomcatを実行すると、実際にはApacheとは別のプロセスとして実行されます。

Ngiinxの概要

Nginxは、軽量のWebサーバー/リバースプロキシサーバーおよび電子メール(IMAP / POP3)プロキシサーバーで、BSDのようなプロトコルでリリースされています。その特徴は、メモリ使用量が少なく、同時実行機能が強力であることです。実際、nginxの同時実行機能は、同じタイプのWebサーバーでより優れたパフォーマンスを発揮します。中国本土のnginx Webサイトのユーザーには、Baidu、JD、Sina、NetEase、Tencent、Taobaoなどがあります。

特徴

  • 最大50,000の同時接続応答をサポート
  • 強力な静的リソース処理機能を備えています
  • スムーズに実行
  • ハードウェアリソースの使用量が少ない

Nginx負荷分散の実装原理

Ngxin構成パラメーター概略
ここに画像の説明を挿入

上流サーバープール{}

  • バックエンドサーバーを構成した後、それ自体に応答データ
    proxy_pass http:// server addressを提供します。
  • アクセス要求をバックエンドサーバープールに転送するサーバー処理を構成する

Nginx動的および静的分離の実装原理

サービス料金はクライアントからのリクエストを受け取ります。基本の友達の静的リソースには動的リソースもあります。静的リソースはnginxによって提供され、動的リソースはnginxによってバックエンドサーバーに転送されてサービスを提供します。

Tomcatと比較したnginx処理の静的ページの利点

  • 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サーバーを構築する


2つの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ページが一致すると、ポーリングは2つのWebサーバーを指しますが、作業中は2つのホストのページが同じである必要があります。

実験②

実験的要件: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