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 で最大接続数を正しく変更する 3 つの方法

MySQL データベースをインストールすると、デフォルトの MySQL データベースの最大接続数が ...

MySQLステートメントの記述と実行順序を理解するだけです

MySQL ステートメントの書き込み順序と実行順序には大きな違いがあります。書き順、mysql の一...

Vue.js アプリケーションのパフォーマンス最適化分析 + ソリューション

目次1. はじめに2. Vue JS のパフォーマンス最適化が必要な理由は何ですか? 3. Vueの...

Centos7.4 システムに yum ソースから mysql 5.6 をインストールする

システム環境: centos7.4 1. データベースがインストールされているかどうかを確認します。...

Vue で CSS カスタム変数を使用する方法

目次CSS カスタム変数機能は古くから存在していますが、実際の開発ではあまり使用されていません。その...

CSS を使用して、画像に 3D の凸型と凹型のエフェクト (フレーム外に凸型、またはフレーム内に凹型) を実現します。

Ⅰ. 問題の説明: CSS を使用して画像の 3D 凸凹効果を実現します。 Ⅱ実施手順は以下のとお...

MySQLが数十億のトラフィックをサポートする方法

目次1 マスター・スレーブの読み取り・書き込み分離1.1 コア2 マスタースレーブレプリケーション2...

Windows 10でDockerコンテナのポートにアクセスできない問題に対する完璧な解決策

Windows 10 で Docker コンテナのポートにアクセスできない問題を解決する (ポート ...

Nginx コンテンツ キャッシュと共通パラメータ設定の詳細

使用シナリオ:プロジェクトのページでは、頻繁に変更されず、個別のカスタマイズも伴わない大量のデータを...

React+Ant Design開発環境をセットアップするための実装手順

基礎1. スキャフォールディングを使用してプロジェクトを作成し、開始する1.1 足場を設置する: n...

MySQL InnoDB ストレージ エンジンの詳細

序文MySQL では、InnoDB はストレージ エンジン レイヤーに属し、プラグインとしてデータベ...

jQuery はピッカーをシミュレートしてスライド選択効果を実現します

この記事では、スライド選択効果を実現するピッカーをシミュレートするjQueryの具体的なコードを参考...

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

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