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 件のリクエストを処理します。 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 |
#!/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 をよろしくお願いいたします。
<<: CSS はコンテナ レベル (div...) タグを 1 つの位置 (ページの右端) に固定します。
目次パーサーとプリプロセッサクエリオプティマイザーMySQL クエリの最適化には、解析、前処理、最適...
現在、Docker には中国向けの公式ミラーがあります。詳細については、https://www.do...
mysql 効率的なクエリMySQL は、左結合の速度を上げるために group by を犠牲にし...
Tomcat は Java 言語をベースにした Web サーバー ソフトウェアです。この記事では主に...
この記事では、centos6.6 で php7 + nginx 環境をインストールする方法について説...
水平線<hr /> タグを使用して、現在の位置に水平の分割線を描画します。例: XML/...
この記事では、検証コード機能を実装するためのvue+spring bootの具体的なコードを例として...
MQTT の紹介MQTT (Message Queuing Telemetry Transport)...
目次1. ブロックスコープ1.1. let は var を置き換える1.2. グローバル定数とスレッ...
2018 年の最新 MySQL 5.7 の詳細なインストールと設定は 4 つのステップに分かれており...
目次1. プロキシとは何ですか? 2. 使い方は? 1. プロキシを使用する簡単な例2. 対象オブジ...
目次1. コアコマンド2. 共通コマンド3. コアコマンドの詳細な説明3.1、ps補助3.2 トップ...
この記事では、例を使用して、MySQL マスター/スレーブ レプリケーションと読み取り/書き込み分離...
2008年5月12日に四川省汶川市で発生した地震により、多くの命が失われ、遺憾なことと存じます。国務...
Linux サーバーに Docker をインストールした後、関連する公式 Docker イメージを...