負荷分散と動的・静的分離を実現するNginx+Tomcatの原理の分析

負荷分散と動的・静的分離を実現するNginx+Tomcatの原理の分析

1. Nginx ロードバランシングの実装原理

1. Nginxはリバースプロキシを通じて負荷分散を実装する

リバースプロキシとは、プロキシサーバー(Nginxなど)を使用してインターネット上の接続要求を受け付け、その要求を内部ネットワーク上のサーバー(Tomcatなど)に転送し、サーバーから取得した結果をインターネット上の接続要求元のクライアントに返すことを指します。このとき、プロキシサーバー(Nginxなど)は外部からはリバースプロキシサーバーのように見えます。
クライアントの観点から見ると、クライアントは実際にはどのサーバーが実際のサービス プロバイダーであるかを認識していません。クライアントが認識しているのは、リバース プロキシ サーバーを要求したことだけです。そのため、リバースプロキシ方式では実サーバーのアドレスを外部から隠蔽し、セキュリティリスクをある程度軽減します。

2. Nginx リバース プロキシ構成の主なパラメータ アップストリーム サービス プール名 {}

役割: 応答データを提供するためのバックエンド サーバー プールを構成する

proxy_pass http:// サービスプール名

機能: アクセス要求をバックエンドサーバープールに転送するサーバー処理を構成する

2. Nginxの動的および静的分離の実装原則

1. 動的および静的分離原理

サーバーは、静的リソースと動的リソースの両方を含むクライアントからのリクエストを受信します。静的リソースは Nginx によって提供され、動的リソースは Nginx によってバックエンドに転送されます。

2. Nginxの静的処理の利点

Nginx は Tomcat よりも静的ページの処理がはるかに効率的です。Tomcat が 1,000 件のリクエストを処理する場合、Nginx は 6,000 件のリクエストを処理します。
Tomcatのスループットは毎秒0.6M、Nginxのスループットは毎秒3.6Mです。
Nginxの静的リソース処理能力はTomcatの6倍です

3. Nginx + Tomcat の動的および静的分離、負荷分散構成手順、環境準備

ホストオペレーティング·システムIPアドレス必要なソフトウェア
Nginx サーバーCentOS7 192.168.109.7 nginx-1.12.0.tar.gz
Tomcat サーバー1 CentOS7 192.168.109.22 apache-tomcat-9.0.16.tar.gz、jdk-8u201-linux-x64.rpm
Tomcat サーバー2 CentOS7 192.168.109.23 apache-tomcat-9.0.16.tar.gz、jdk-8u201-linux-x64.rpm
1. Nginxロードバランシングサーバーを導入する

ここに画像の説明を挿入

#!/bin/bash
#スクリプトの説明: nginx サービスをコンパイルしてインストールします #注意: 使用する前に nginx-1.12.0.tar.gz を /opt ディレクトリに置いてください #ファイアウォールをシャットダウンします systemctl stop firewalld
systemctl ファイアウォールを無効にする
強制0を設定する

#必要な開発パッケージ、コンパイル環境、コンパイラをインストールします yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make

#アクセスを正確に制御するためのプログラムユーザーを作成します useradd -M -s /sbin/nologin nginx

#インストールパッケージを解凍します cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/

#nginx をコンパイルしてインストールします。インストール パス、ユーザー名、グループ名を指定し、統計をサポートするモジュールを有効にします cd /opt/nginx-1.12.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-file-aio --with-http_gzip_static_module --with-http_flv_module --with-http_ssl_module

作成 && インストール

#ソフトリンクにより、システムが nginx 操作コマンド ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ を識別しやすくなります。

#nginx システムサービス echo '[Unit] を追加
説明=nginx
後=ネットワーク.ターゲット
[サービス]
タイプ=フォーク
PIDファイル=/usr/local/nginx/logs/nginx.pid
実行開始=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
プライベートTmp=true
[インストール]
WantedBy=multi-user.target' > /lib/systemd/system/nginx.service

#サービスを有効にして、自動起動を有効にする chmod 754 /lib/systemd/system/nginx.service
systemctl nginx.service を再起動します。
systemctl で nginx.service を有効にする

ここに画像の説明を挿入
ここに画像の説明を挿入

2. 2つのTomcatアプリケーションサーバーを展開する

ここに画像の説明を挿入

#!/bin/bash
#Tomcat サービスをインストールする#ファイアウォールをシャットダウンするsystemctl stop firewalld
systemctl ファイアウォールを無効にする
強制0を設定する

#JDKをインストールする
cd /opt
rpm -ivh jdk-8u201-linux-x64.rpm

#JDK環境変数を設定する echo 'export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
エクスポート CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
PATH=$JAVA_HOME/bin:$PATH をエクスポートします > /etc/profile.d/java.sh

ソース /etc/profile

#Tomcatをインストールして起動する
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
Apache Tomcat 9.0.16 を実行します。
ローカルのtomcat 

ここに画像の説明を挿入

3. 動的および静的分離構成

tomcatを参照してください

1) Tomcat1 サーバーの構成

mkdir /usr/local/tomcat/webapps/test

#動的ページを構成する vim /usr/local/tomcat/webapps/test/index.jsp

<%@ ページ言語="java" インポート="java.util.*" ページエンコーディング="UTF-8"%>
<html>
<ヘッド>
<title>JSP test1 ページ</title>
</head>
<本文>
<% out.println("動的ページ 1: www.test1.com");%>
</本文>
</html> 

ここに画像の説明を挿入

#設定ファイルvim /usr/local/tomcat/conf/server.xmlを変更します
<ホスト名="192" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
	<コンテキスト docBase="/usr/local/tomcat/webapps/test" パス="" 再ロード可能="true" />
</ホスト>

シャットダウン
ローカルのtomcat 

ここに画像の説明を挿入
ここに画像の説明を挿入

2) Tomcat2サーバーの構成

mkdir /usr/local/tomcat/webapps/test

vim /usr/local/tomcat/webapps/test/index.jsp

<%@ ページ言語="java" インポート="java.util.*" ページエンコーディング="UTF-8"%>
<html>
<ヘッド>
<title>JSP test2 ページ</title>
</head>
<本文>
<% out.println("動的ページ 1: www.test2.com");%>
</本文>
</html> 

ここに画像の説明を挿入

#設定ファイルvim /usr/local/tomcat/conf/server.xmlを変更します
<ホスト名="192" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
	<コンテキスト docBase="/usr/local/tomcat/webapps/test" パス="" 再ロード可能="true" />
</ホスト>

シャットダウン
ローカルのtomcat 

ここに画像の説明を挿入
ここに画像の説明を挿入

3) Nginxサーバーの設定

#静的ページと静的画像を準備する echo '<html><body><h1>this is static</h1></body></html>' > /usr/local/nginx/html/index.html
mkdir /usr/local/nginx/html/long
/usr/local/nginx/html/long をコピーします

ここに画像の説明を挿入

vim /usr/local/nginx/conf/nginx.conf
......
http {
......
#gzip オン;

アップストリーム tomcat_server {
  サーバー 192.168.109.22:8080 重み=1;
  サーバー 192.168.109.23:8080 重み=1;
}

サーバー{
	聞く 80;
	サーバー名 www.long.com;

  #文字セット koi8-r;

	#access_log ログ/host.access.log メイン;

    # 動的ページリクエストを処理し、.jsp ファイルリクエストを処理場所として Tomcat サーバーに転送するように Nginx を設定します ~ .*\.jsp$ {
		proxy_pass http://tomcat_server;
		
		proxy_set_header HOST $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	}
    
  # 静的画像リクエストを処理するように Nginx を構成する location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
		ルート /usr/local/nginx/html/img/;
		有効期限は10日です。
	}
    位置 / {
      ルートhtml;
      インデックス index.html index.htm;
    }


systemctl nginx.service を再起動します。 

ここに画像の説明を挿入
ここに画像の説明を挿入

ここに画像の説明を挿入

4. アクセステスト

静的ページの効果をテストします。ブラウザアクセス http://192.168.109.7/
ブラウザアクセス http://192.168.109.7/long.jpg

ここに画像の説明を挿入

負荷分散効果をテストし、ブラウザを継続的に更新してブラウザアクセスをテストします http://192.168.109.7/test/index.jsp

ここに画像の説明を挿入
ここに画像の説明を挿入

これで、Nginx+Tomcat で実現される負荷分散と動的および静的分離の原理の分析に関するこの記事は終了です。Nginx の負荷分散と動的および静的分離に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • 動的および静的分離のための Apache または Tomcat を使用した Nginx の基本構成例
  • Nginx+uWsgi を使用して Python の Django フレームワーク サイトの動的部分と静的部分を分離する
  • nginx + tomcatリバースプロキシと動的および静的分離のシンプルな実装
  • 静的Tomcatと動的Tomcatを分離するnginxの詳細な説明
  • nginxは負荷分散と動的および静的分離を実現します
  • 動的および静的分離を実装するための Nginx サンプル コード
  • Nginx+Apache の動的および静的分離の導入の詳細な例
  • 動的および静的分離を実現する nginx のサンプルコード
  • Nginx は動的と静的の分離を実装します 例の説明
  • Nginx の動的および静的分離実装ケースのコード分析
  • Springmvc nginxで動的と静的の分離を実現するプロセスの詳細な説明
  • 負荷分散と動的および静的分離操作を実現するDocker NginxコンテナとTomcatコンテナ
  • Nginx の負荷分散と動的および静的分離の原理と構成
  • nginx が動的と静的の分離を実装する方法の例
  • インストールから設定までの nginx の詳細な手順 (インストール、セキュリティ設定、ホットリンク防止、動的および静的分離、HTTPS 設定、パフォーマンスの最適化)
  • Nginx+Tomcat 負荷分散と動的および静的分離クラスタの実装
  • 動的および静的分離を実現するサーバー負荷分散 nginx+tomcat
  • Nginx の動的および静的分離構成の実装と説明

<<:  CSS はコンテナ レベル (div...) タグを 1 つの位置 (ページの右端) に固定します。

>>:  JavaScript クロージャの説明

推薦する

TypeScript インターフェース定義ケースチュートリアル

インターフェースの役割:インターフェース (英語: interface) の機能は、簡単に言えば、コ...

WeChatアプレット開発で遭遇したことのない落とし穴のまとめ

目次getApp()ページエントリファイルの先頭に変数を定義しますwx.createSelector...

MYSQL サブクエリとネストされたクエリの最適化例の分析

ゲーム史上最高スコアトップ100をチェックSQLコード cdb_playsgame ps から ps...

HTMLとは何ですか?

HTML 開発の歴史: HTML は英語で Hypertext Marked Language の...

VueとElementUIを組み合わせたスキン変更ソリューション

目次前面に書かれた解決策 1: グローバル スタイル オーバーライドを使用する (フロントエンドに共...

Javascript の奇妙な点をご存知ですか?

私たちのベテランの先人たちは、数え切れないほどのコードを書き、数え切れないほどの落とし穴に陥ってきま...

Docker デプロイメント RabbitMQ コンテナ実装プロセス分析

1. イメージをプルするまず、次のコマンドを実行して、イメージをローカル コンピューターにダウンロー...

Vue で親子コンポーネントの値を双方向バインドするために v-model を使用するときに発生する問題と解決策

目次シナリオ解決してみる解決するシナリオ今日、コンポーネントの双方向データバインディングにv-mod...

vue-router 履歴モード サーバー側設定プロセス記録

歴史ルート履歴モードとは、HTML5 の履歴 API を使用してクライアント側ルーティングを実装する...

mycat を使用して MySQL データベースの読み取りと書き込みの分離を実装する例

MyCATとはエンタープライズアプリケーション開発のための完全にオープンソースの大規模データベースク...

SQL重複排除方法の概要

SQL を使用してデータを抽出する場合、テーブル内で重複した値に遭遇することがよくあります。たとえ...

Navicat 経由で MySQL にリモート接続する方法

Navicat を使用して IP 経由で直接接続すると、次のようなさまざまなエラーが報告されます: ...

CSSオーバーフローメカニズムについての簡単な説明

CSS オーバーフローのメカニズムを詳細に学ぶ必要があるのはなぜですか?実際の開発プロセスでは、コン...

js の Array.forEach でループを終了する方法の例

目次forEach() メソッドjs の Array.forEach のループから抜け出す方法解決:...

mysql5.7.14 解凍版インストールグラフィックチュートリアル

MySQL は、コミュニティ エディション (コミュニティ サーバー) とエンタープライズ エディシ...