ホームページ  >  記事  >  運用・保守  >  Nginx と Tomcat が動的および静的な分離と負荷分散をどのように実現するか

Nginx と Tomcat が動的および静的な分離と負荷分散をどのように実現するか

王林
王林転載
2023-05-18 17:10:06920ブラウズ

######1つ。 nginx の概要:

nginx は、安定性の高い高性能 http およびリバース プロキシ サーバーであり、ホット デプロイメントと簡単なモジュール拡張をサポートしています。アクセスのピークに遭遇したり、誰かが悪意を持って遅い接続を開始したりすると、サーバーの物理メモリが枯渇して頻繁に交換され、応答が失われる可能性があります。サーバーは再起動することしかできません。nginx は段階的なリソースを採用しています。静的ファイルを処理するための割り当てテクノロジーとキャッシュフリー リバース プロキシ アクセラレーションにより、ロード バランシングとフォールト トレランスが実現され、同時アクセスが多い状況でも高い同時処理に耐えることができます。 ############二。 nginx のインストールと構成


最初のステップ: nginx インストール パッケージをダウンロードします。

2 番目のステップ: nginx を Linux にインストールします

#tar zxvf nginx-1.7.8.tar.gz //解压

#cd nginx-1.7.8

#./configure --with-http_stub_status_module --with-http_ssl_module//启动server状态页和https模块
では、pcre ライブラリが見つからないというエラーが報告されます, 図に示すように、

このとき、まず 3 番目の手順で pcre をインストールし、それから 3 を実行すれば完了です

4 .make && make install //コンパイルしてインストール

Nginx と Tomcat が動的および静的な分離と負荷分散をどのように実現するか5. インストール構成が正しいかテストします。nginx は /usr/local/nginx

#/usr にインストールされます/local/nginx/sbin/ nginx -t、図に示すように:

ステップ 3: linux

#tar zxvf pcre-8.10.tar.gz //解压

cd pcre-8.10

./configure

make && make install//编译并安装

# に pcre をインストールする##三つ。 nginx tomcat は動的と静的分離を実装します

Nginx と Tomcat が動的および静的な分離と負荷分散をどのように実現するか

動的と静的分離とは、nginx がクライアントから要求された静的ページ (html ページ) または画像を処理し、tomcat がクライアントから要求された動的ページ (jsp ページ) を処理することを意味します。 nginx が処理するため、静的ページの効率は Tomcat よりも高いです。

ステップ 1: nginx ファイルを設定する必要があります #vi /usr/local/nginx/conf/nginx.conf

 #user nobody; 
worker_processes 1; 
error_log logs/error.log; 
pid    logs/nginx.pid; 
 
events { 
  use epoll; 
  worker_connections 1024; 
} 
 
 
http { 
  include    mime.types; 
  default_type application/octet-stream; 
  log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 
           '$status $body_bytes_sent "$http_referer" ' 
           '"$http_user_agent" "$http_x_forwarded_for"'; 
 
  access_log logs/access.log main; 
  sendfile    on; 
keepalive_timeout 65; 
gzip on;  
gzip_min_length 1k;  
gzip_buffers   4 16k;  
gzip_http_version 1.0;  
gzip_comp_level 2;  
gzip_types text/plain application/x-javascript text/css application/xml;  
gzip_vary on;  
  server { 
    listen    80 default; 
    server_name localhost; 
    <span style="color:#ff0000;"> location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ //由nginx处理静态页面</span> 
       {  
         root  /usr/tomcat/apache-tomcat-8081/webapps/root;  
          expires   30d; //缓存到客户端30天 
        }  
    error_page 404       /404.html; 
 
    #redirect server error pages to the static page /50x.html 
     
    error_page  500 502 503 504 /50x.html; 
    location = /50x.html { 
      root  html; 
    } 
     <span style="color:#ff0000;"> location ~ \.(jsp|do)$ {//所有jsp的动态请求都交给tomcat处理 </span> 
      <span style="color:#ff0000;"> proxy_pass http://192.168.74.129:8081; //来自jsp或者do的后缀的请求交给tomcat处理</span> 
      proxy_redirect off; 
      proxy_set_header host $host;  //后端的web服务器可以通过x-forwarded-for获取用户真实ip 
      proxy_set_header x-real-ip $remote_addr; 
      proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; 
      client_max_body_size 10m;  //允许客户端请求的最大单文件字节数 
      client_body_buffer_size 128k; //缓冲区代理缓冲用户端请求的最大字节数 
       proxy_connect_timeout 90;  //nginx跟后端服务器连接超时时间 
       proxy_read_timeout 90;   //连接成功后,后端服务器响应时间 
       proxy_buffer_size 4k;   //设置代理服务器(nginx)保存用户头信息的缓冲区大小 
       proxy_buffers 6 32k;    //proxy_buffers缓冲区,网页平均在32k以下的话,这样设置 
      proxy_busy_buffers_size 64k;//高负荷下缓冲大小(proxy_buffers*2) 
      proxy_temp_file_write_size 64k; //设定缓存文件夹大小,大于这个值,将从upstream服务器传 
    } 
    
  }  
 
}

ステップ 2:図に示すように、tomcat の webapps/root に新しいindex.html 静的ページを作成します。

#ステップ 3: nginx サービスを開始します


#sbin/nginx 図に示すように:

Nginx と Tomcat が動的および静的な分離と負荷分散をどのように実現するか

ステップ 4: ページにアクセスすると、図に示すように通常のコンテンツを表示できます:

Nginx と Tomcat が動的および静的な分離と負荷分散をどのように実現するか

ステップ 5: 高い同時実行下で静的ページを処理する際の nginx と Tomcat のパフォーマンスをテストしますか?


Linux ab Web サイトのストレス テスト コマンドを使用してパフォーマンスをテストしました

1. 静的ページの処理で nginx のパフォーマンスをテストしましたNginx と Tomcat が動的および静的な分離と負荷分散をどのように実現するか

ab -c 100 -n 1000

これは、図

2 に示すように、100 のリクエストを同時に処理し、index.html ファイルを 1000 回実行することを意味します。 tomcat の静的ページの処理パフォーマンス


ab -c 100 -n 1000

これは、図に示すように、100 個のリクエストを同時に処理し、index.html ファイルを 1000 回実行することを意味します。 Nginx と Tomcat が動的および静的な分離と負荷分散をどのように実現するか

##同じ静的ファイルの処理では、nginx 処理の静的パフォーマンスは Tomcat よりも優れています。 nginx は 1 秒あたり 5388 回リクエストできますが、tomcat は 2609 回しかリクエストできません。

概要: nginx 設定ファイルでは、静的設定を処理のために nginx に渡し、動的リクエストを Tomcat に渡してパフォーマンスを向上させます。 #########四。 nginx tomcat のロード バランシングとフォールト トレランス

同時実行性が高い場合、サーバーのパフォーマンスを向上させ、単一サーバーでの同時実行のプレッシャーを軽減するために、クラスター デプロイメントを採用します。サーバーがハングアップしてサービスにアクセスできない場合、フォールト トレランスの問題が解決されます。 Nginx と Tomcat が動的および静的な分離と負荷分散をどのように実現するか

最初のステップ: ここで Tomcat サーバーを 2 日間、192.168.74.129:8081 と 192.168.74.129:8082

にデプロイしました。第 2 ステップ: nginx がプロキシ サーバーとして機能し、クライアント リクエスト サーバー側では、負荷分散を使用して処理が行われるため、カスタマー サービス リクエストが毎日サーバーに均等に分散され、サーバー側の負担が軽減されます。 nginx で nginx.conf ファイルを構成します。

#vi /usr/local/nginx/conf/nginx.conf

 #user nobody; 
worker_processes 1; 
error_log logs/error.log; 
pid    logs/nginx.pid; 
 
events { 
  use epoll; 
  worker_connections 1024; 
} 
 
 
http { 
  include    mime.types; 
  default_type application/octet-stream; 
  log_format main &#39;$remote_addr - $remote_user [$time_local] "$request" &#39; 
           &#39;$status $body_bytes_sent "$http_referer" &#39; 
           &#39;"$http_user_agent" "$http_x_forwarded_for"&#39;; 
 
  access_log logs/access.log main; 
  sendfile    on; 
keepalive_timeout 65; 
gzip on;  
gzip_min_length 1k;  
gzip_buffers   4 16k;  
gzip_http_version 1.0;  
gzip_comp_level 2;  
gzip_types text/plain application/x-javascript text/css application/xml;  
gzip_vary on;  
<span style="color:#ff0000;">upstream localhost_server { 
    ip_hash; 
    server 192.168.74.129:8081; 
    server 192.168.74.129:8082; 
  }</span> 
 
  server { 
    listen    80 default; 
    server_name localhost; 
    <span style="color:#ff0000;"> location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ //由nginx处理静态页面</span> 
       {  
         root  /usr/tomcat/apache-tomcat-8081/webapps/root;  
          expires   30d; //缓存到客户端30天 
        }  
    error_page 404       /404.html; 
 
    #redirect server error pages to the static page /50x.html 
     
    error_page  500 502 503 504 /50x.html; 
    location = /50x.html { 
      root  html; 
    } 
     <span style="color:#ff0000;">location ~ \.(jsp|do)$ {//所有jsp的动态请求都交给tomcat处理 </span> 
      <span style="color:#ff0000;">proxy_pass http://localhost_server; //来自jsp或者do的后缀的请求交给tomcat处理</span> 
      proxy_redirect off; 
      proxy_set_header host $host;  //后端的web服务器可以通过x-forwarded-for获取用户真实ip 
      proxy_set_header x-real-ip $remote_addr; 
      proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; 
      client_max_body_size 10m;  //允许客户端请求的最大单文件字节数 
      client_body_buffer_size 128k; //缓冲区代理缓冲用户端请求的最大字节数 
       proxy_connect_timeout 90;  //nginx跟后端服务器连接超时时间 
       proxy_read_timeout 90;   //连接成功后,后端服务器响应时间 
       proxy_buffer_size 4k;   //设置代理服务器(nginx)保存用户头信息的缓冲区大小 
       proxy_buffers 6 32k;    //proxy_buffers缓冲区,网页平均在32k以下的话,这样设置 
      proxy_busy_buffers_size 64k;//高负荷下缓冲大小(proxy_buffers*2) 
      proxy_temp_file_write_size 64k; //设定缓存文件夹大小,大于这个值,将从upstream服务器传 
    } 
    
  }  
 
}
説明:

1. 上流のサーバーは、サーバー IP (ドメイン名) とポート、その後にパラメーター

1)weight: サーバーの転送重みをデフォルト値の 1 に設定します。

2)max_fails: これは、fail_timeout と組み合わせて使用​​されます。これは、fail_timeout 期間内に、サーバー転送失敗の数が max_fails で設定された値を超えると、サーバーが使用できなくなることを意味します。デフォルトmax_fails の値は 1

です

3)fail_timeout: この期間内に転送が何回失敗すると、サーバーが利用できないとみなされるかを示します。

4)down: このサーバーが使用できないことを示します。

5) バックアップ: このサーバーでは ip_hash 設定が無効であることを示します。リクエストは、バックアップ以外のサーバーがすべて失敗した後にのみサーバーに転送されます。

2. ip_hash 設定はクラスター サーバーにあります。同じクライアント リクエストが複数のサーバーに転送される場合、各サーバーは同じ情報をキャッシュする可能性があり、リソースの無駄が発生します。ip_hash 設定は次の場合に使用されます。同じクライアントが同じ情報を 2 回目に要求すると、その情報は最初に要求したサーバーに転送されます。ただし、ip_hash をweightと併用することはできません。

以上がNginx と Tomcat が動的および静的な分離と負荷分散をどのように実現するかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。