1. Nginxは負荷分散の原則を実装するNginxはリバースプロキシを通じて負荷分散を実装します Nginx サーバーはフロントエンドとして使用され、Tomcat サーバーはバックエンドとして使用され、Web ページの要求は Nginx サービスによって転送されます。 ただし、すべての Web 要求を転送するのではなく、静的ページ要求は Nginx サーバー自体によって処理され、動的ページ要求はバックエンドの Tomcat サーバーに転送されて処理されます。 Tomcat は軽量なアプリケーション サーバーであり、受け入れ可能なトラフィックの量が不足する可能性があるため、複数の Tomcat サーバーが必要であり、 Nginx を使用して重みを構成して処理する Tomcat サーバーを選択するという負荷分散戦略が必要です。 Nginx サーバー 1.ホームページで完全一致を使用する 2. 静的ページは通常のマッチングを使用して自分で処理します 3. 動的ページは正規表現を使用して、jspで終わるリクエストを照合し、proxy_passを使用してTomcatサーバーに転送します。 2. Nginxの動的および静的分離の原則サーバーは、静的リソースと動的リソースの両方を含むクライアントからのリクエストを受信します。静的リソースは Nginx によって提供され、動的リソースは Nginx によってバックエンドに転送されます。 Nginx の静的処理の利点
3. Nginx + Tomcat の動的および静的分離、負荷分散構成手順環境準備:Nginx サーバー: 192.168.121.13 Tomcat サーバー 1: 192.168.121.12:8080 192.168.121.12:8081 Tomcat サーバー 2: 192.168.121.10 1. Nginxロードバランシングサーバーを導入する まず、nginx-1.12.0.tar.gz圧縮パッケージを/optディレクトリにアップロードします。systemctl stopfirewalld.service systemctl は、firewalld.service を無効にします。 強制0を設定する yum インストール -y pcre-devel zlib-devel openssl-devel gcc gcc-c++ make ユーザー追加 -M -s /sbin/nologin nginx cd /opt tar zxvf nginx-1.12.0.tar.gz -C /opt/ nginx-1.12.0をインストールします ./configure \ --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx \ --ファイル付きAIO\ --with-http_stub_status_module \ --with-http_gzip_static_module \ --http_flv_module \ で始まる --http_ssl_module を使用する 作成 && インストール ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ vim /lib/systemd/system/nginx.service [ユニット] 説明=nginx 後=ネットワーク.ターゲット [サービス] タイプ=フォーク PIDファイル = /usr/local/nginx/logs/nginx.pid 実行開始=/usr/local/nginx/sbin/nginx ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID プライベートTmp=true [インストール] WantedBy=マルチユーザー.ターゲット chmod 754 /lib/systemd/system/nginx.service systemctl nginx.service を起動します systemctl で nginx.service を有効にする 2. 2つのTomcatアプリケーションサーバーを展開する 必要なインストール パッケージは次のとおりです。 apache-tomcat-9.0.16.tar.gz jdk-8u201-linux-x64.rpm #scp apache-tomcat-9.0.16.tar.gz [email protected]:/opt #必要な圧縮パッケージをTomcat1からTomcat2サーバーにアップロードします。もちろん、圧縮パッケージを/optディレクトリに直接プルすることもできます。systemctl stop firewalld.service systemctl は、firewalld.service を無効にします。 強制0を設定する rpm -qpl jdk-8u201-linux-x64.rpm rpm -ivh jdk-8u201-linux-x64.rpm java バージョン vim /etc/profile.d/java.sh 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 java バージョン cd /opt vim の abc.java パブリッククラスabc { パブリック静的void main(String[] args){ System.out.println("Hello World!") } } [root@localhost?opt]#javac abc.java #JDK環境が正常に設定されているかどうかを検出するために使用されます [root@localhost?opt]#java abc 「こんにちは世界」 cd /opt tar zxvf apache-tomcat-9.0.16.tar.gz Apache Tomcat 9.0.16 を実行します。 ##Tomcat を起動します## ローカルのtomcat netstat -natp | grep 8080 動的および静的分離構成(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> #test1 ページとして指定</head> <本文> <% out.println("動的ページ 1、http://www.test1.com");%> </本文> </html> vim /usr/local/tomcat/conf/server.xml #ホスト名がlocalhostとして設定されているため、以前のHOST設定を削除する必要があります <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <コンテキスト docBase="/usr/local/tomcat/webapps/test" パス="" 再ロード可能="true"> </コンテキスト> </ホスト> シャットダウン ローカルのtomcat (2) Tomcat2サーバーの設定 mkdir /usr/local/tomcat/tomcat1/webapps/test /usr/local/tomcat/tomcat2/webapps/test vim /usr/local/tomcat/tomcat1/webapps/test/index.jsp <%@ ページ言語="java" インポート="java.util.*" ページエンコーディング="UTF-8"%> <html> <ヘッド> <title>JSP test2 ページ</title> #test2 ページとして指定</head> <本文> <% out.println("動的ページ 2、http://www.test2.com");%> </本文> </html> vim /usr/local/tomcat/tomcat1/conf/server.xml #以前のHOST構成を削除します <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <コンテキスト docBase="/usr/local/tomcat/tomcat1/webapps/test" パス="" 再ロード可能="true" /> </ホスト> シャットダウン ローカルのtomcat1/bin/startup.sh vim /usr/local/tomcat/tomcat2/webapps/test/index.jsp <%@ ページ言語="java" インポート="java.util.*" ページエンコーディング="UTF-8"%> <html> <ヘッド> <title>JSP test3 ページ</title> #test3 ページとして指定</head> <本文> <% out.println("動的ページ 3、http://www.test3.com");%> </本文> </html> vim /usr/local/tomcat/tomcat2/conf/server.xml #以前のHOST構成を削除します <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <コンテキスト docBase="/usr/local/tomcat/tomcat2/webapps/test" パス="" 再ロード可能="true" /> </ホスト> シャットダウン ローカル Nginx 負荷分散モードrr 負荷分散モード: 各リクエストは、時系列順に異なるバックエンド サーバーに割り当てられます。最大失敗回数 (max_fails、デフォルトは 1) を超えると、失敗時間 (fail_timeout、デフォルトは 10 秒) 内に、ノードの失敗重みは 0 になります。失敗時間が経過すると、正常に戻ります。または、すべてのノードがダウンした場合は、すべてのノードが有効に復元され、検出を継続します。一般的に、rr は重みに応じて均等に分散できます。 least_conn 最小接続数: 現在接続が最も少ないサーバーにクライアント要求を優先的にディスパッチします。 ip_hash 負荷分散モード: 各リクエストはアクセス IP のハッシュ結果に従って割り当てられるため、各訪問者は固定のバックエンド サーバーにアクセスし、セッションの問題を解決できます。ただし、ip_hash は負荷の不均一を引き起こします。一部のサービスはより多くのリクエストを受け取りますが、他のサービスはより少ないリクエストを受け取ります。したがって、ip_hash モードの使用は推奨されません。セッション共有の問題は、nginx の ip_hash の代わりにバックエンド サービスのセッション共有を使用することで解決できます。 公平な(サードパーティ)負荷分散モード: リクエストはバックエンド サーバーの応答時間に基づいて分散され、応答時間が短いリクエストが優先されます。 url_hash (サードパーティ) 負荷分散モード: ip_hash アルゴリズムと同様に、URL のハッシュ結果に応じて各リクエストを分散し、各 URL が同じバックエンド サーバーに送信されるようにしますが、分散が不均一になるという問題も発生します。このモードは、バックエンド サーバーがキャッシュされている場合に適しています。 要約するNginx の負荷分散と動的および静的分離の原理と構成に関するこの記事はこれで終わりです。Nginx の負荷分散と動的および静的分離に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: CSSは、他のレイヤーを変更せずに、多層ネスト構造の最外層を回転させる効果を実現します。
>>: Facebook によるインターネット サービスのほぼ完璧な再設計
必要なときにサービスを有効にし、必要がないときは無効にします。データベース サービスを管理する方法:...
目次コンテナデータボリュームとはコンテナ データ ボリュームが必要なのはなぜですか?使用データボリュ...
HTML 中心のフロントエンド開発は、ほぼ Web 標準の意味です。共通しているのは「分離」という考...
序文最近、仕事で問題が発生しました。 Centos7 システムでは MySQL にリモート接続できな...
layui テーブルには複数行のデータがあります。外部入力コンテンツを通じて、指定された行を見つけ...
1. mysqlをインストールします。 udo apt-getでmysql-serverをインストー...
必要:バックエンドは配列オブジェクトを返し、それがフロントエンドで配列に結合されます。配列は名前に従...
docker イメージを使用する場合、以下に示すように、REPOSITORY と TAG の両方が ...
オペレーティング·システム: Win10 ホームエディションDockerをインストールします:公式サ...
Firefox、Opera、その他のブラウザは Webdings フォントをサポートしていません。回...
Dockerはmysqlをインストールします docker search mysql 検索 dock...
MySQL データベースでは、テーブルが互いに関連付けられた後は、それらを任意に削除することはできま...
1. イベントが有効になっているかどうかを確認する'%sche%' のような変数を表...
今日、私は公開用の動的なウィンドウ スタイルを設計しましたが、マウスで入力をクリックしたときにブラウ...
ウェブサイトの互換性のデバッグは本当に面倒です。今日のウェブサイト デザイナーは、以前よりもはるかに...