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 つの位置 (ページの右端) に固定します。
正規表現は、特定のパターンに一致するテキストを検索および置換するためによく使用されます。たとえば、テ...
目次1: フロントエンドの手書きページング(データ量が少ない場合) 2: バックエンドのページング、...
目次コードの最適化v-for でキーを使用するv-if/v-else-if/v-else でキーを使...
最近、会社でアプリを開発する準備をしており、最終的に開発には uni-app フレームワークを使用す...
目次プラグインとはプラグインの作成プラグインの使用要約するプラグインとはVue フレームワークでは、...
目次序文antd はどのようにしてコンポーネントをカプセル化するのでしょうか?ディバイダーコンポーネ...
ping は成功したがポートにアクセスできない場合のポート可用性検出の説明ポート可用性検出ツールの紹...
この記事の例では、Reactカプセル化グローバルポップアップボックスの具体的なコードを参考までに共有...
目次1. ジョイントインデックスの故障の条件2. インデックス失敗の条件1. ジョイントインデックス...
輸出: docker save -o centos.tar centos:latest #cento...
実行中のコンテナIDを見つける ドッカーps上記のコンテナの物理的な場所を見つける /var/lib...
1. フォワードプロキシとリバースプロキシの違いフォワード プロキシはクライアントのプロキシとして機...
一つの目的Html ページでローカル フォルダーを選択すると、フォルダーとそのサブフォルダー内のすべ...
目次機能紹介関数関数の作成コンストラクタは関数を作成する関数宣言は関数を作成する関数式関数を作成する...
MySQLバイナリのインストール方法mysqlをダウンロード参考: 1. パッケージを解凍する ta...