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 つの位置 (ページの右端) に固定します。
インターフェースの役割:インターフェース (英語: interface) の機能は、簡単に言えば、コ...
目次getApp()ページエントリファイルの先頭に変数を定義しますwx.createSelector...
ゲーム史上最高スコアトップ100をチェックSQLコード cdb_playsgame ps から ps...
HTML 開発の歴史: HTML は英語で Hypertext Marked Language の...
目次前面に書かれた解決策 1: グローバル スタイル オーバーライドを使用する (フロントエンドに共...
私たちのベテランの先人たちは、数え切れないほどのコードを書き、数え切れないほどの落とし穴に陥ってきま...
1. イメージをプルするまず、次のコマンドを実行して、イメージをローカル コンピューターにダウンロー...
目次シナリオ解決してみる解決するシナリオ今日、コンポーネントの双方向データバインディングにv-mod...
歴史ルート履歴モードとは、HTML5 の履歴 API を使用してクライアント側ルーティングを実装する...
MyCATとはエンタープライズアプリケーション開発のための完全にオープンソースの大規模データベースク...
SQL を使用してデータを抽出する場合、テーブル内で重複した値に遭遇することがよくあります。たとえ...
Navicat を使用して IP 経由で直接接続すると、次のようなさまざまなエラーが報告されます: ...
CSS オーバーフローのメカニズムを詳細に学ぶ必要があるのはなぜですか?実際の開発プロセスでは、コン...
目次forEach() メソッドjs の Array.forEach のループから抜け出す方法解決:...
MySQL は、コミュニティ エディション (コミュニティ サーバー) とエンタープライズ エディシ...