web-dev-qa-db-ja.com

mod_proxyとmod_proxy_ajpとmod_jk

次の環境からの移行の準備をしています。

Apache 2.0.2 --AJP-> JBoss4.2.2

Apache 2.2.3-???-> JBoss 5.1.0

2つをどのように結合しますか?

オプションは次のとおりです。

  1. クラシックAJP(Apache用のmod_jkの構築を意味します)
  2. mod_proxy(HTTPリクエストをJBossに転送)
  3. mod_proxy_ajp

オプション2は現時点で最も人気のあるソリューションです。AJPからのJBossの応答を変換する必要がなくなるため、処理が減るように思われ、CPU時間はインフラストラクチャで注意深く監視する必要があるものです。オプション2および3には、Red HatがサポートするApacheビルドも付属しています。

現時点では、オプション3で「無料」でAJPを取得しているため、オプション1に進むことはできません。

したがって、オプション2と3の長所と短所は何ですか? CPU負荷に関する懸念は本当に心配する必要があるのでしょうか?バイナリデータ(AJPトラフィック)の処理で失われるものは、帯域幅とIOの削減で回復できますか?

私たちのインフラストラクチャは、Apacheの前面p-to 9の高度に調整されたJBosses(通常は約半分)であり、すべてプライベートクラウドで仮想化されている同じRHEL 5マシン上にあります。

ポインタ/アドバイスを事前に感謝します。

リッチ

9
Rich

2 mod_proxy_http、クライアントからのHostヘッダーが必要でない限り。

クラシックmod_jkは、その機能がmod_proxy_ajpに置き換えられており、ご自身の言うとおり、そのモジュールを自分で構築および保守する必要があるため、お勧めしません。

Mod_proxy_httpは非常にクリーンなソリューションであり、それはajpを画像から取り除きます。ただし、ajpからhttpに移行する場合の注意点に注意してください。 Apacheが受け取ったとおりにサーバーヘッダーにアクセスする必要がある場合(ホストヘッダーを含む)、ajpを使用する必要があります。 JBossは、元のクライアントではなく、Apacheからの新しいhttpリクエストを認識します。クライアントのリモートIPのみが必要な場合でも、Apacheが新しいリクエストに設定できる特別なヘッダーを使用してこれを取得できます。ただし、アプリケーションレイヤーから仮想ホスティングを行う場合は、ajpを使用することをお勧めします。

パフォーマンスに関する限り、ajpまたはhttpのいずれかは、JBossおよびいくつかのローカルソケットによる処理を必要としますTCPトラフィック。どちらがより効率的かを確認するには、両方を試す必要がありますが、全体としては、サーバー全体の負荷のごく一部です。Httpはより複雑なプロトコルであり、ajpは特にWeb層とアプリ層の間を効率的に設計するため、理論的にはajpの方がおそらく優れています。 Tomcatアプリサーバーラインの外側。

私はmod_proxy_ajpとmod_proxy_httpを使用していますが、まったく問題はありませんでした。

8
e_tothe_ipi