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 学習チュートリアル クラスター化インデックス

推薦する

MySQLの指定順序ソートクエリについての簡単な説明

最近、空港や駅でフライト情報を表示するものと似た大型スクリーンディスプレイのプロジェクトに取り組んで...

JSはUUIDとNanoIDというユニークなIDメソッドを生成します

目次1. NanoIDがUUIDに取って代わる理由2. jsを生成する方法3. ナノID方式序文:ユ...

HTML ウェブページの基本コンポーネントの概要

<br />Web ページ上の情報は主にテキストベースです。 Web ページでは、フォン...

Linux系でよく使われる運用・保守コマンド(まとめ)

目次1. システム監視2. ファイル操作3. ネットワーク通信4. システム管理仕事で必要なLinu...

MySQL PHP 構文の簡単な分析

まずcharAt関数の基本的な構文を見てみましょう文字 = str.charAt(インデックス) c...

MySQLデータクエリが多すぎるとOOMが発生するかどうかについての簡単な議論

目次サーバー層でのフルテーブルスキャンの影響InnoDB におけるフルテーブルスキャンの影響Inno...

MySQL は低速クエリを可能にします (EXPLAIN SQL ステートメントの使用の概要)

今日、データベース操作はますますアプリケーション全体のパフォーマンスのボトルネックになりつつあり、こ...

Dockerデータ管理とネットワーク通信の使用

Docker をインストールし、Docker コアとインストールを通じて簡単な操作を実行できます。 ...

IDEAでVUEプロジェクトをデバッグするための詳細な手順

js コードをデバッグするには、コード内にデバッガーを記述するか、Chrome で毎回ブレークポイン...

JS配列重複排除の詳細

目次1 テストケース2 JS配列重複排除4種類2.1 要素の比較2.1.1 二重層 for ループ比...

Vueはツリーテーブルを実装する

この記事では、ツリーテーブルを実装するためのVueの具体的なコードを例として紹介します。具体的な内容...

Linuxの読み取りコマンドの使用

1. コマンドの紹介read コマンドは、シェルの組み込みコマンドで、標準入力または -u オプショ...

Docker で Confluence をデプロイする

1. 環境要件1. Docker 17以上がインストールされている2. コンテナ操作docker r...

ウェブデザイナーが持つべき資質と能力

Web デザインは、インターネットの出現後に誕生した新興の周辺産業です。 Web ページは店頭のよう...

Vue マルチ選択リスト コンポーネントの詳細な説明

マルチ選択は、すべてのオプションを一覧表示し、ユーザーが Ctrl/Shift キーを使用して複数選...