負荷分散と動的・静的分離を実現する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クエリ最適化プロセスを理解する

目次パーサーとプリプロセッサクエリオプティマイザーMySQL クエリの最適化には、解析、前処理、最適...

docker イメージのプル速度が遅い問題の解決策

現在、Docker には中国向けの公式ミラーがあります。詳細については、https://www.do...

MySQL の効率的なクエリの左結合とグループ化 (プラス インデックス)

mysql 効率的なクエリMySQL は、左結合の速度を上げるために group by を犠牲にし...

Centos7.5 構成 Java 環境のインストール Tomcat の説明

Tomcat は Java 言語をベースにした Web サーバー ソフトウェアです。この記事では主に...

Centos6.6 で php7 + nginx 環境をインストールする方法

この記事では、centos6.6 で php7 + nginx 環境をインストールする方法について説...

HTMLの水平線注釈とコードコメントの使い方をマスターするだけです

水平線<hr /> タグを使用して、現在の位置に水平の分割線を描画します。例: XML/...

Vue+Spring Bootで検証コード機能を実現

この記事では、検証コード機能を実装するためのvue+spring bootの具体的なコードを例として...

Docker MQTT のインストールと使用のチュートリアル

MQTT の紹介MQTT (Message Queuing Telemetry Transport)...

JS ES6コーディング標準の詳細な説明

目次1. ブロックスコープ1.1. let は var を置き換える1.2. グローバル定数とスレッ...

最新の MySQL 5.7.23 のインストールと設定のグラフィックチュートリアル

2018 年の最新 MySQL 5.7 の詳細なインストールと設定は 4 つのステップに分かれており...

JavaScript Proxyオブジェクトの詳細な説明

目次1. プロキシとは何ですか? 2. 使い方は? 1. プロキシを使用する簡単な例2. 対象オブジ...

Linux チェックアップ、Linux の状態 (ネットワーク IO、ディスク、CPU、メモリ) を把握

目次1. コアコマンド2. 共通コマンド3. コアコマンドの詳細な説明3.1、ps補助3.2 トップ...

MySQL のマスタースレーブレプリケーションと読み取り書き込み分離の原理と使用法の詳細な説明

この記事では、例を使用して、MySQL マスター/スレーブ レプリケーションと読み取り/書き込み分離...

ウェブサイトを黒、白、グレーにする4つのコードの詳細な説明

2008年5月12日に四川省汶川市で発生した地震により、多くの命が失われ、遺憾なことと存じます。国務...

Docker を使用して ELK 環境を迅速にデプロイする方法の詳細な説明 (最新バージョン 5.5.1)

Linux サーバーに Docker をインストールした後、関連する公式 Docker イメージを...