mod_proxyとmod_proxy_ajpとmod_jk


9

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

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の低下で回復できますか

私たちのインフラストラクチャーは、プライベートクラウドで仮想化された同じRHEL 5マシン上で、Apache から最大 9つの高度に調整されたJBosses(通常はその約半分)に向かいます。

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

リッチ

回答:


8

2 mod_proxy_http(クライアントからのHostヘッダーが必要でない場合)。

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

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

パフォーマンスに関する限り、ajpまたはhttpは、JBossおよびローカルソケットTCPトラフィックによる処理を必要とします。あなたはどちらがより効率的であるかを確認するために両方を試す必要がありますが、私は全体的にそれは合計サーバー負荷の非常に小さな割合だと思います。Httpはより複雑なプロトコルであり、ajpはWeb層とアプリ層の間で効率的に動作するように特別に設計されているため、理論的にはajpがおそらくより優れています。とは言っても、Tomcatアプリサーバーライン以外では、httpがサポートされることが多いことがわかりました。

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


使用するとHostヘッダーが正しく渡されますProxyPreserveHost On
Derf

Apache mod_proxyを使用する場合は、httpd.apache.org / docs / 2.4 / mod / mod_proxy.html #x-headersを参照してください。あなたのTomcatサーブレットアプリケーションのコードの一部としてRemoteIpValveを設定した場合、ほとんどの情報は、透過的に取得することができます tomcat.apache.org/tomcat-8.0-doc/config/...
スコットMarkwell
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.