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

推薦する

VirtualBox で作成された Debian 仮想マシンは Windows ホストとファイルを共有します

用語: 1. VM: 仮想マシンステップ: 1. Windows 10 に VirtualBox 6...

VueのRender関数

目次1. ノード、ツリー、仮想DOM 2. 仮想DOM 2.1 データオブジェクトの詳細2.2 制約...

CentOS で MySQL を完全にアンインストールする方法

この記事では、CentOSでのMySQLの完全アンインストールについて記録しています。具体的な内容は...

MySQL の制限使用法とページングクエリステートメントのパフォーマンス分析の詳細な説明

使用制限クエリ ステートメントを使用する場合、多くの場合、データの最初の数行または中間行を返す必要が...

データページング効果を実現する js オブジェクト

この記事の例では、データのページング効果を実現するためのjsオブジェクトの具体的なコードを参考までに...

CSS3 を使用したテキスト折り紙効果のサンプルコード

序文この記事では主に、CSS3 を使用してテキスト折り紙効果を実現する例を紹介します。これは、参考と...

Linux オペレーティング システムでよく使用される MySQL コマンドの概要

以下に、一般的な MySQL コマンドをいくつか示します。 -- データベース サービスを開始します...

MySQL マスタースレーブレプリケーションプロセスの詳細な説明

1. マスタースレーブレプリケーションとは何ですか?マスター データベースの DDL および DML...

Ubuntu 20.04 デスクトップのインストールとルート権限の有効化および SSH インストールの詳細

記事は主にUbuntu 20.04の簡単なインストールプロセスを記録し、インストール後に国内ソースを...

Vue.js での VNode の使用

VNodeとはvue.js には VNode クラスがあり、これを使用してさまざまな種類の vnod...

CocosCreator Huarongdaoデジタルパズルの詳しい説明

目次序文文章1. パネル2. 華容島ソリューション3. コード4. 注記序文華容路とは何ですか? 誰...

Dockerコンテナ終了エラーコードの手順

実行後、一部の Docker コンテナが終了することがあります。原因を調べるには、Docker コン...

vue-cli で stimulsoft.reports.js を使用する詳細なチュートリアル

vue-cli は stimulsoft.reports.js を使用します (ナニーレベルのチュー...

MySQLのロックについて理解しておくべきこと

1. はじめにMySQL ロックは、その範囲に応じて、グローバル ロック、テーブル ロック、行ロック...

仮想マシンクローン Linux centos6.5 システム ネットワーク カード構成グラフィック チュートリアル

Linux システムに触れたばかりの初心者として、VMware 仮想マシンに CentOS6.5 シ...