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 によるインターネット サービスのほぼ完璧な再設計
導入:この記事では主に、Linux システムで IPV6 接続をサポートするように MySQL を構...
目次G2チャートについて使用テンプレートで使用される完全なコード (棒グラフ)世界地図を追加するG2...
先週、先生が私に数字当てゲームをするちょっとした宿題を出しました。とても面白いと思ったので、適当に書...
目次1 データベース インデックスを作成するための一般的なルールは次のとおりです。 2. 数千万件の...
jsx/tsxファイルを直接作成できます今回のプロジェクト構成は以下のとおりです。 vueファイルで...
HTML を学習したり使用したりしたことがある人なら、<a> タグについてよく知っている...
まず、例を見てみましょう。記事テーブルにはタイプフィールドがあり、1 見出し、2 おすすめ、3 ホッ...
マシンに初めて MySQL をインストールします。オペレーティングシステムはwin7ですmysqlの...
目次導入ダウンロードしてインストールする設定docker-composeをインストールする導入Doc...
目次1. 概念をすぐに認識する: 2. ローカルフィルター: 3. グローバルフィルター: 4. 拡...
css-vars-ポニーフィルCSS 変数を使用して Web ページのスキニングを実現すると、互換...
ルートジャンプ this.$router.push('/course'); this...
<base> タグは、ページ上のすべてのリンクのデフォルトのアドレスまたはデフォルトのタ...
基本構造:コードをコピーコードは次のとおりです。 <ダウンロード> <dt>...
目次背景問題の場所さらなる分析要約する背景私のコース「Vue 3 エンタープライズレベルの音楽アプリ...