Windows での Apache+Tomcat7 負荷分散構成方法の詳細な説明

Windows での Apache+Tomcat7 負荷分散構成方法の詳細な説明

準備

Windows Server 2008 R2 Enterprise (2.40GH、8GB、64ビット、192.168.10.212)
2 Ubuntu 10.04.4 (192.168.10.98, 192.168.10.137)
JDK1.7.80
トムキャット7.0.68
アパッチ2.4.4

1. Apache 2.4.4をインストールする

インストールプロセス中に注意すべきことは何もありません。「次へ」をクリックし続けるだけです。インストールが完了すると、Apache サービスがデフォルトで有効になります。ブラウザに localhost または 127.0.0.1 と入力すると、「It works」という文字が表示されます。

2. Java環境

Ubuntuの設定はインターネット上にたくさんあるので、ここでは詳しくは説明しませんが、JAVA_HOMEとPATHの設定を忘れないようにしてください。

3.Tomcatのインストール

ディレクトリ内で解凍するだけです。私のディレクトリは /opt/tomcat7/ です。両方の Ubuntu で解凍しました。権限不足の問題に遭遇する可能性があります。このとき、コマンドを入力する必要があります。最も単純かつ最も強力なのは、sudo chmod 777 directory です。セキュリティ上の問題により、適切に認証する必要があるため、ここでは言及しません。

構成を開始する

Apache の設定

1. まず、conf/httpdファイルで、必要なモジュールコメントを開きます(先頭の#記号を削除するだけです)。

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
ロードモジュール slotmem_shm_module モジュール/mod_slotmem_shm.so
ロードモジュール lbmethod_byrequests_module モジュール/mod_lbmethod_byrequests.so

ここでは最後の 2 つについて説明します。最初のいくつかを開いただけで、Apache を起動できませんでした。

ログを確認すると、「'slotmem' のプロバイダー 'shm' の検索に失敗しました: mod_slotmem_shm がロードされていますか?」というエラーが報告され続けていることがわかりました。確認したところ、モジュールが有効になっていませんでした。# 記号を削除すると、エラーは報告されなくなります。

もう 1 つの理由は、エラー (22) 無効な引数: AH01183: バランサーを共有できません が報告されることです。このモジュールを開くと、エラーは報告されなくなります。

2. conf/httpdファイル内の仮想ホストのコメントを解除する

Includeの前の#を削除します

3. conf/extra/httpd-vhosts.confに設定を追加する

まずは私自身の設定を投稿させてください。

<仮想ホスト *:80>
  サーバー管理者 [email protected]
  ProxyPass / balancer://cluster/ スティッキーセッション=JSESSIONID|jsessionid nofailover=オン
  ProxyPassReverse / バランサ://cluster/
  サーバー名 192.168.10.212
  エラーログ "logs/error.log"
  CustomLog "logs/access.log" 共通
</仮想ホスト>
プロキシリクエストオフ
<プロキシ バランサー://クラスター>
  バランサメンバー ajp://192.168.10.98:8009 負荷係数=1 ルート=jvm1 smax=5 最大=20 ttl=120 再試行=300 タイムアウト=15
  バランサメンバー ajp://192.168.10.137:8009 負荷係数=1 ルート=jvm2 smax=5 最大=20 ttl=120 再試行=300 タイムアウト=15
</プロキシ>

ProxyPass: リモートサーバーをローカルサーバーのURL空間にマッピングします

balancer:// : プロキシ命令タイプ

sticksession: バランサーのスティッキーセッション名。この値は、セッションをサポートするバックエンド アプリケーション サーバーに応じて、JSESSIONID や PHPSESSIONID などに設定されることが多いです。バックエンド サーバーが異なる Cookie 名または URL エンコードされた ID (サーブレット コンテナーなど) を使用する場合は、| を使用してそれらを区切ります。最初の部分は Cookie 用、2 番目の部分はパス用です。

nofailover : 「オン」に設定すると、ワーカーが無効になったりエラーが発生したりしたときにセッションが直ちに終了します。バックエンド サーバーがセッション レプリケーションをサポートしていない場合は、この値をオンに設定できます。

ProxyRequests: ProxyPass ディレクティブを使用する場合は、通常、ProxyRequests ディレクティブをオフにする必要があります。

BalancerMember: Balancer メンバー

loadfactor: 作業単位の負荷係数。 BalancerMember に使用されます。これは、この作業者に適用される正規化された重量負荷を定義する 1 ~ 100 の数値です。

route : ロードバランサーで使用されるワーカーのルート。ルートはセッション ID に追加される値です。

smax: 必要に応じて、最大数のリンク (ソフト最大値、または smax) を作成します。 smax 数を超えるリンクには、有効期間 (ttl) が割り当てられます。

max: デフォルト値は、現在の MPM 内のプロセスあたりのスレッド数です。 Prefork MPM ではこの値は常に 1 であり、Worker MPM ではこの値は ThreadsPerChild によって制御されます。

ttl: smax 接続数を超える非アクティブ リンクの存続時間 (TTL) (秒単位)。 Apache はこの間に使用されていない接続をすべて閉じます。

retry: スレッド プール ワーカーの再試行のタイムアウト (秒単位)。バックエンド サーバーへのスレッド プール ワーカーのステータスがエラーの場合、Apache はタイムアウトが経過するまでサーバーにリクエストを送信しません。 これにより、バックエンド サーバーをメンテナンスのために停止し、後でオンラインに戻すことができます。値が 0 の場合、エラーが発生したときに待機せずにワーカーを常に再試行することを意味します。

timeout: リンクのタイムアウト(秒単位)。設定されていない場合、Apache は接続が利用可能になるまで待機します。このディレクティブは、バックエンド サーバーへの接続を制限するために、max パラメータと一緒に使用されることが多いです。

これで設定はほぼ完了です。Apache サービスを再起動するだけです。

注: localhost または 127.0.0.1 を入力すると、「It works」という文字は表示されなくなります。代わりに、503 エラーが報告されます。これは、Apache が負荷分散機能を有効にし、ターゲット IP を AJP 経由で Tomcat に送信したが、Tomcat がまだ起動していないため、正常な動作です。

Tomcat の設定

192.168.10.98のサーバーを例に挙げます

Vim を使用して conf の下の server.xml を開きます (Vim を知らない場合は想像力を働かせてください ╮(╯▽╰)╭)。ここで紹介する負荷分散は、Apache が AJP プロトコルを介して Tomcat に接続するため、Apache で設定されたポート番号が Tomcat の AJP のポート番号になります。

さらに、エンジンでjvmRouteを設定する必要があります

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

ここでの jvmRoute は Apache のルートに対応します。 (これを削除したところ、まだ機能していることがわかりました。素晴らしいと思いますが、設定する必要があります。)

ついに、

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

このメモは

この時点で設定は完了です。同様に、192.168.10.137 でも設定します。

テスト用に小さなtest.jspを書く

<%@ ページコンテンツタイプ="text/html;charset=UTF-8" %>
<%@ ページインポート="java.util.*"%>
<html>
  <ヘッド>
    <title>ApacheTomcatテスト</title>
  </head>
  <本文>
    <%
      out.println("<br> セッションID:" + session.getId() + "</br>");
    %>
  </本文>
</html>

Tomcat の webapps ディレクトリの下に balance フォルダを作成し、そのフォルダに test.jsp を置いて、Tomcat を起動します。

最後に、ブラウザに192.168.10.212/balance/test.jspと入力します。
セッションIDの値が2つの数字の間で変化していることがわかります。

これは負荷分散の具体化です。もちろん、192.168.10.212 を入力すると、「It works」ではなく、従来の Tomcat ホームページが表示されます。

ちなみに、上記は3つのサーバーに基づいています

Apache+Tomcat7の負荷分散構成の詳細については、次の関連リンクをクリックしてください。

以下もご興味があるかもしれません:
  • Apache、wsgi、django プログラムのデプロイメント設定方法の詳細な説明
  • LinuxベースのApacheウェブサイトサービス構成の詳細な説明
  • Ubuntu 上の Apache で SSL (https 証明書) を設定する正しい方法の詳細な説明
  • Apache Web サーバーを使用して 2 つ以上のサイトを構成する方法
  • Apache での ModSecurity のインストール、有効化、および構成
  • CentOS 7 での Apache Web サーバーのインストールと設定のチュートリアル
  • Alibaba Cloud Server Apache は SSL 証明書を構成して Https を正常に有効にします (さまざまな落とし穴を記録します)
  • Win10 Apache が仮想ホストを設定した後にローカルホストが利用できなくなる問題の解決方法
  • Apache 経由で複数の仮想ホストをローカルに設定する方法

<<:  MySQL の厄介な Aborted 警告をケーススタディで分析する

>>:  この記事はPReact10.5.13のソースコードを理解するのに役立ちます

推薦する

Vueコンポーネントの7つの通信方法についての深い理解

目次1. props/$emit導入コードサンプル2.Vスロット導入コードサンプル3.$refs/ ...

画像をMySQLデータベースに保存し、フロントエンドページに表示するための実装コード

目次1. まず、pycharmを使用してDjangoプロジェクトを作成し、関連する環境を設定します。...

MYSQL8.0.13 無料インストール版 設定チュートリアル例 詳細説明

1. ダウンロード、例として8.0を取り上げますダウンロードアドレス: https://dev.my...

MySQL ベースのストレージエンジンとログの説明 (包括的な説明)

1.1 ストレージエンジンの概要 1.1.1 ファイルシステムストレージファイル システム: オペ...

Spring Boot 階層化パッケージング Docker イメージの実践と分析 (推奨)

目次1. Springbootプロジェクトを準備する2. 関連する設定を実行する3.パッケージ4.D...

MySQL 作成ルーチン権限に関する注意事項

1. ユーザーにルーチン作成権限がある場合は、プロシージャ | 関数を作成できます。 2. ユーザー...

Vueでシングルサインオンを実装する方法のまとめ

最近プロジェクトが中断され、RageFrame の研究は一時的に終了しました。この記事では、シングル...

Docker で Tomcat を使用して Web アプリケーションを迅速にデプロイする方法の例

Docker の基本的な操作を学習した後、コンテナにいくつかの基本的なアプリケーションをデプロイして...

Vue はシームレスなカルーセル効果を実現

この記事では、シームレスなカルーセル効果を実現するためのVueの具体的なコードを参考までに紹介します...

ブラウザ(IEシリーズ)を判別するための条件付きコメント

<!--[if IE 6]> IE6 のみが認識可能 <![endif]-->...

JSはキャンバス技術を使用してeChartsの棒グラフを模倣します

Canvas は HTML5 の新しいタグです。js を使用して Canvas 描画 API を操作...

独自の YUM リポジトリを作成する手順

簡単に言うと、ウェアハウスとして使用される仮想マシンの IP は 192.168.149.129 で...

Ubuntuのバックアップ方法(4種類)のまとめ

方法1:リスピンを使用するには、次の手順に従ってください。 sudo add-apt-reposit...

MySQL 8.0.15 winx64 解凍版のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.15 winx64解凍版のインストールと設定方法を紹介します。具体...

入力できない無効な値はアクションレイヤーに渡すことができません

フォームを入力不可にしたい場合は、フォームを次のように設定します。コードをコピーコードは次のとおりで...