ApacheとTomcatによるクラスタ環境構築プロセスの分析

ApacheとTomcatによるクラスタ環境構築プロセスの分析

実際、Apacheクラスタを構築するのは難しくありません。私もインターネットで情報を見つけて自分で設定しました。もちろん、最高のパフォーマンスを得るために自分で設定する必要があるパラメータがいくつかあります。

クラスタを構築するための最初のステップは、ソフトウェアをダウンロードすることです。会社側のサーバーは Win2003 なので、いくつかの操作は省略できます。

Apacheのダウンロードアドレス: http://httpd.apache.org/ Apache httpd 2.2.27をダウンロードしました。

Tomcatのダウンロードアドレス: http://tomcat.apache.org/download-60.cgi 6.0.39の解凍バージョンをダウンロードしました

最初のステップは Tomcat を構成することです。Tomcat はクラスターの各ノードであるため、まず各ノードが正常に実行できることを確認する必要があります。
2 つのノードを作成し、Tomcat フォルダーを解凍して、それぞれ tomcat-node1 と tomcat-node2 という名前を付けます。
変更する必要がある構成ファイル:

Tomcat 起動メモリ:

bin ディレクトリでは catalina.bat が使われています。Win2003 なので Linux では catalina.sh です。ファイルの先頭に以下を追加します。

JAVA_OPTS=-Xms256m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:-UseGCOverheadLimit -XX:+UseConcMarkSweepGC -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 を設定します。

Linux の場合は、書き方が少し異なります。

JAVA_OPTS="-server -Xms256m -Xmx1030m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:-UseGCOverheadLimit -XX:+UseConcMarkSweepGC -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"

各パラメータの具体的な意味と具体的な最適化プランについては、Google で「トマト起動メモリ」を検索してください。ここで指摘しておくべきことは、Windows では、JVM の最大起動メモリはデバイス メモリの 1/4 であるということです。私のマシンでは、どれだけ大きく設定しても 1300M です。

Tomcat ログ構成:

conf の下のlogging.propertiesは無視できますが、設定されていない場合は、サービスが長時間実行されるとログがディスクをいっぱいにしてダウンタイムが発生する可能性があることに注意してください。私は以前にこれに遭遇したので、これ以上は説明しません。
ログを設定する際には、いくつか注意すべき点があります: 1: ログ出力アドレス。 2: ログ出力レベル。 3: ログ出力サイズを自分で設定してみてください。設定しなくても読み込みに影響はないと思います。

Tomcat 監視構成:

conf には、次の内容が含まれています。

<?xml バージョン = '1.0' エンコーディング = 'utf-8'?>
<tomcat ユーザー>
</tomcat-ユーザー>

つまり、コメントを除いてです。ユーザーを追加するには、次のようにします。

<?xml バージョン = '1.0' エンコーディング = 'utf-8'?>
<tomcat ユーザー>
<ロール ロール名="マネージャー"/>
<ユーザー ユーザー名="admin" パスワード="admin_cui" 役割="マネージャー"/>
</tomcat-ユーザー>

もっと凝った構成は、まあ、ご存じのとおりです。設定後、http://localhost:8011/manager/html にアクセスすると、現在の接続処理ステータスを確認できます。

コア、フォーカス、server.xml

3 つのポート、1 つの名前:

管理ポート:shutdown="SHUTDOWN"の前にポートがあります。最初のポートを8012に、2番目のポートを22に設定しました。

<サーバーポート="8012" シャットダウン="シャットダウン">

サービスポート:

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="300" minSpareThreads="50" maxIdleTime="120000" />
<コネクタ executor="tomcatThreadPool" アドレス="0.0.0.0" ポート="8011" プロトコル="org.apache.coyote.http11.Http11NioProtocol" 接続タイムアウト="120000"
maxKeepAliveRequests="1" リダイレクトポート="443" maxHttpHeaderSize="8192" URIEncoding="UTF-8" enableLookups="false" acceptCount="500" 圧縮="オン"
圧縮最小サイズ="2048" 圧縮可能MimeType="text/html、text/xml、text/javascript、text/css、text/plain" 無効化アップロードタイムアウト="true"/>

これらはすべて、NIO、接続プール、エンコード、圧縮など、最適化された構成であることがわかります。各パラメータの意味については詳しく説明されていません。
AJP ポート:

<コネクタ ポート="8039" プロトコル="AJP/1.3" リダイレクト ポート="8443" />

クラスタリング時に使用される jvmRoute 名:

<エンジン名="Catalina" defaultHost="localhost" jvmRoute="jvm3">

以下の構成もリリースされています。

<クラスタークラス名="org.apache.catalina.ha.tcp.SimpleTcpCluster" />

Tomcat を起動して 8011 にアクセスできる場合、このノードは構成されています。他のノードは同じです。3 つのポートと 1 つの名前はノードごとに異なる必要があることに注意してください。

Apache の設定

設定ファイル httpd.conf は最も重要な設定ファイルです。設定する際には、以下の点に注意してください。
プロキシ モジュールの読み込みを解除します。

LoadModule proxy_module モジュール/mod_proxy.so
ロードモジュール proxy_ajp_module モジュール/mod_proxy_ajp.so
ロードモジュール proxy_balancer_module モジュール/mod_proxy_balancer.so
ロードモジュール proxy_connect_module モジュール/mod_proxy_connect.so
LoadModule proxy_ftp_module モジュール/mod_proxy_ftp.so
ロードモジュール proxy_http_module モジュール/mod_proxy_http.so
ロードモジュール proxy_scgi_module モジュール/mod_proxy_scgi.so

ウェブサイトへのアクセスを開放します。ここでは詳細には触れません。ただ開放するだけです。

全員から拒否

すべて変更

すべてを許可する

次の構成ファイルのロックを解除し、その前の # を削除します。

  • conf/extra/httpd-mpm.conf をインクルードします。マルチチャネル処理モジュール (MPM) を構成するための補助構成ファイルです。
  • conf/extra/httpd-vhosts.conf 仮想ホストを設定するための補助設定ファイルを含める
  • conf/extra/httpd-default.conf を含めると、Apache サービス自体に関連する補助的な設定ファイルを設定します。

httpd-mpm.confとhttpd-default.confはデフォルトのものです。実際の状況に応じて関連する設定を行う場合は、前の記事を参照してください。
httpd-vhosts.conf では、クラスター ノードのサービス タグを設定し、ServerAlias をローカル IP に設定します。

<仮想ホスト *:80>
サーバー管理者 [email protected]
サーバー名 192.168.1.102
サーバーエイリアス 192.168.1.102
ProxyPass / バランサー://cluster/ スティッキーセッション=jsessionid nofailover=オン
ProxyPassReverse / バランサ://cluster/
エラーログ "logs/lbtest-error.log"
CustomLog "logs/lbtest-access.log" 共通
</仮想ホスト>

httpd.confの下部に次の設定を追加します。

プロキシリクエストオフ
<プロキシ バランサー://クラスター>
バランサメンバー ajp://127.0.0.1:8019 負荷係数=1 ルート=jvm1
バランサメンバー ajp://127.0.0.1:8029 負荷係数=1 ルート=jvm2
</プロキシ>

リバース プロキシを有効にし、アクセスに AJP プロキシを使用します。Loadfactor は分散重みであり、route は Tomcat で定義された名前です。これは Tomcat サービス ポートではなく、AJP ポートであることに注意してください。

Tomcat パフォーマンス チューニングと Apache 構成ファイルのカスタマイズは、クラスターのパフォーマンスに影響を与える 2 つの重要な要素です。
この時点で、構成は実際に完了しています。 1 つ言及する必要があるのは、セッション共有の場合は、各プロジェクトの web.xml に <distributable/> 構成を追加するだけであるということです。

Tomcat と Apache を起動し、実際のプロジェクトにアクセスします。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Apache と Tomcat でクラスターを構築する (負荷分散)
  • Docker を使用してスタンドアロン Pulsar とクラスター化された Redis をデプロイする方法 (開発アーティファクト)
  • Apache Pulsar クラスタの構築と展開の詳細なプロセス

<<:  非表示のフォームテキストを表示するJavaScript

>>:  MySQL 学習チュートリアル クラスター化インデックス

推薦する

Windows 10 での MySQL 5.7.17 のインストールと設定方法のグラフィック チュートリアル

この記事では、最新バージョンの MySQL データベース、つまり MySQL 5.7.17 圧縮バー...

nginx高可用性クラスタの実装プロセス

この記事は主に、nginx 高可用性クラスタの実装プロセスを紹介します。この記事のサンプルコードは非...

CSS3はブラウザのスクロールバーのスタイルを変更します

注意: この方法は、Webkit ベースのブラウザにのみ適用されます。ブラウザのスクロールバーが広す...

Vuex全体のケースの詳細な説明

目次1. はじめに2. 利点3. 使用手順1. Vuexをインストールする2. Vuexを参照する3...

CSS3 で虫眼鏡効果を模倣するいくつかの方法の原理の分析

記事のタイトルが「模造虫眼鏡」なのはなぜですか?今日お話ししたいのは、一般的に言われているような、マ...

MySQL ビューの原理と基本操作例

この記事では、例を使用して、MySQL ビューの原理と基本操作を説明します。ご参考までに、詳細は以下...

yum から docker インストール パッケージをダウンロードし、オフライン マシンにインストールする例の詳細なコード

1. ネットワークマシンでは、デフォルトのcentosyumソースを使用します [root@kole...

mysql 8.0.18.zip のインストールと構成方法のグラフィック チュートリアル (Windows 64 ビット)

以前にインストールされたバージョンのデータベースをアンインストールする方法については、この記事を参照...

JavaScript スロットリングとアンチシェイクに関する簡単な説明

目次スロットルと手ぶれ防止コンセプト:違いスロットリングの実装スロットル機能手ぶれ補正の実装手ぶれ防...

Amap を使用した React 実装例 (react-amap)

React の PC 版は Amap を使用するようにリファクタリングされました。情報を検索したと...

MySQLがOracleのnvlと同様の機能を持つことができるかどうかについての簡単な議論

isnullの代わりにifnullを使用するisnull は、null かどうかを判断するために使用...

vmware14Pro で Ubuntu システム インターフェイスが小さすぎる問題の解決方法の詳細な説明

1. 動作環境vmware14proウブントゥ 16.04LTS 2. 問題の説明vmware14P...

Vue Element UI カスタム説明リストコンポーネント

この記事の例では、Vue Element UIカスタム説明リストコンポーネントの具体的なコードを参考...

Swiper.jsプラグインを使用すると、カルーセル画像を非常に簡単に実装できます。

Swiper は、携帯電話やタブレットなどのモバイル端末向けに設計された、純粋な JavaScri...

Ubuntu Dockerのインストールと使い方

目次1. 公式インストールスクリプトを使用した自動インストール手動インストール古いバージョンをアンイ...