負荷分散と動的・静的分離を実現する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 クロージャの説明

推薦する

MySql で正規表現クエリを使用する方法

正規表現は、特定のパターンに一致するテキストを検索および置換するためによく使用されます。たとえば、テ...

この記事では、Vueのフロントエンドページングとバックエンドページングを実装する方法を説明します。

目次1: フロントエンドの手書きページング(データ量が少ない場合) 2: バックエンドのページング、...

22 Vue 最適化のヒント (プロジェクトの実践)

目次コードの最適化v-for でキーを使用するv-if/v-else-if/v-else でキーを使...

uni-app を使用して上部のナビゲーション バーにボタンと検索ボックスを表示する方法

最近、会社でアプリを開発する準備をしており、最終的に開発には uni-app フレームワークを使用す...

Vueプラグインの書き方を説明する記事

目次プラグインとはプラグインの作成プラグインの使用要約するプラグインとはVue フレームワークでは、...

Reactベースのコンポーネントのカプセル化の実装手順

目次序文antd はどのようにしてコンポーネントをカプセル化するのでしょうか?ディバイダーコンポーネ...

Linux で ping は成功するがポートが利用できない問題を解決する方法

ping は成功したがポートにアクセスできない場合のポート可用性検出の説明ポート可用性検出ツールの紹...

Reactはグローバル箇条書きボックスメソッドをカプセル化します

この記事の例では、Reactカプセル化グローバルポップアップボックスの具体的なコードを参考までに共有...

MySQL のインデックス有効条件とインデックス無効条件の結合

目次1. ジョイントインデックスの故障の条件2. インデックス失敗の条件1. ジョイントインデックス...

Dockerコンテナを停止および削除できない問題の解決策

実行中のコンテナIDを見つける ドッカーps上記のコンテナの物理的な場所を見つける /var/lib...

Nginx フォワードプロキシとリバースプロキシの違いと原理分析

1. フォワードプロキシとリバースプロキシの違いフォワード プロキシはクライアントのプロキシとして機...

ローカル フォルダー内の画像を読み込んで表示するための HTML サンプル コード

一つの目的Html ページでローカル フォルダーを選択すると、フォルダーとそのサブフォルダー内のすべ...

JavaScript関数導入の詳しい説明

目次機能紹介関数関数の作成コンストラクタは関数を作成する関数宣言は関数を作成する関数式関数を作成する...

Centos 7にmysql5.7.24バイナリバージョンをインストールする方法と解決方法

MySQLバイナリのインストール方法mysqlをダウンロード参考: 1. パッケージを解凍する ta...