問題タブ [mod-proxy-balancer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1061 参照

php - 負荷分散されたサーバー環境でのPHPリクエストファイルのキャッシュ

すべてのトラフィックをフロントコントローラーにルーティングするPHPアプリケーションで基本的なPHPファイルキャッシングドライバーを作成しようとしています。たとえば、apachemod_proxy_balancerを使用した次の簡略化されたセットアップを想定します。

ここに画像の説明を入力してください

単一サーバー環境では、リクエストURIに一致するディレクトリ構造のディスクにリクエスト応答をキャッシュします。次に、次のような単純なapache書き換えルールにより、apacheは静的キャッシュファイル(存在する場合)を返し、PHPプロセスを完全に回避できます。

明らかに、これは負荷分散環境では問題があります。これは、キャッシュファイルが、要求が処理されて結果がキャッシュされた特定のPHPサーバー上のディスクにのみ書き込まれるためです。

問題を解決する..。

したがって、この問題を解決するために、いくつかのコードをノックアウトして、個々のバックエンドPHPサーバーにキャッシュデータをロードバランサーに書き込み/削除させることができると考えました。ただし、mod_proxy_balancerの機能(および実際には他の負荷分散オプション)についてはほとんど知らないため、次の質問に対する外部検証が必要です。

そして質問...

  1. 上記のRewriteRulesのような何らかの形式のチェックを実行して、バックエンドサーバーの1つにリクエストを送信する前に、前面のロードバランサーに静的ファイルを提供させることは可能ですか?
  2. これもお勧めですか?ロードバランサーがトラフィックを排他的にルーティングし、静的コンテンツの提供に煩わされないようにする必要がありますか?
  3. PHPサーバーレベルでキャッシュされたファイルに許容可能なTTLを使用し、許容されたレベルの古いキャッシュの重複を処理する方がよいでしょうか。

最後に、これが広すぎるか、すでに回答されている場合は、お詫びします。負荷分散の問題に関する前述の無知の結果として、何を検索すればよいのかよくわかりません。

0 投票する
3 に答える
25027 参照

java - Apache+Tomcat-スティッキーセッションとロードバランシングの問題

スティッキーセッションに関して、Apachemod_proxy_balancerでいくつかの問題に直面しています。

Tomcatで実行されるJavaでRESTfulWebサービスを開発しました。実際のバックエンドは、AuthBasic認証を使用したAcegiセキュリティを使用しています。

アーキテクチャは次のとおりです(申し訳ありませんが、私は新しいユーザーです。画像を投稿できません):

この「Javaリバースプロキシ」は、さまざまなビジネスを実行するためのものです。また、Tomcat(Tomcat1、Tomcat2)で基本認証認証を行います。

エンドユーザーは次のようなURLを呼び出します:http:/// a / b?username = foo&password = bar&session = xxx

次に、リバースプロキシはリクエストをApacheにプロキシし、資格情報を基本認証トークンとして送信します。

エンドユーザーには3つの異なるURLがあります。

service1とservice2のみがAcegiによって保護されます。service3は匿名でアクセスできます(これは要件です)。

負荷分散を実行するために、Apacheには次の構成があります。

service1への最初の呼び出しで、JSESSIONIDがユーザーに返され、ユーザーはこのセッション情報を要求の一部として(クエリ文字列、セッションパラメーターで)送信します。

バックエンドtomcat(tomcat1、tomcat2)でセッション状態を維持するために、Javaリバースプロキシはクエリ文字列からセッションを取得し、それをJSESSIONIDCookieとしてプロキシされたtomcatに送信します。

認証基本保護されているURLに対しては、すべてが完全に正常に機能します。ただし、ユーザーが3番目のURL(公開されている)を呼び出すと、Apacheは負荷分散を正しく実行しません。

たとえば、サービス1または2を呼び出すと、次のApacheログが取得されます。

リクエストはtomcat2をターゲットにすることを目的としているため、これはまったく問題ありません。

しかし、service3を呼び出すと、次のようになります。

ご覧のとおり、JSESSIONID Cookieは同じですが、Apacheはリクエストを間違ったTomcat(ここではtomcat1)に送信します。

service3のURLがAuthBasic認証を必要としないのは事実でしょうか?service1とservice2は必要です。

私は何か間違ったことをしたと確信していますが、私は長い間見回していて、それを機能させることができません。

あなたの助けは非常にありがたいです。

ありがとう

0 投票する
1 に答える
13120 参照

apache - クライアント認証を使用した Apache HTTPD/mod_proxy/Tomcat および SSL

これはよくある質問だと思いますが、同じ質問であると認識できるものは見つかりませんでした。

Tomcat でいくつかの Web アプリを実行しています。たとえば、web.xml の機密要素で定義されているように、SSL で保護されたログイン ページなどのいくつかのページがあります。アプリの 1 つは、証明書によるクライアント認証も受け入れます。また、かなり広範な JAAS ベースの承認および認証方式を使用しており、さまざまな Web アプリケーション間であらゆる種類の共有コードやさまざまな JAAS 構成などがあります。

以下を達成している間、私は本当にそれを邪魔したくありません。

Tomcat インスタンスを追加する前に、ロード バランサーとして Tomcat の前に mod-proxy および mod-proxy-balancer を使用して Apache HTTPD を挿入する作業を行っています。

私が HTTPS リクエストに対して達成したいことは、HTTPD が SSL エンドポイントでなくても Tomcat に「ブラインド」でリダイレクトされることです。つまり、HTTPD は暗号文を Tomcat に直接渡すだけで、TC がログイン、SSL、Web .xml の機密性が保証され、最も重要なのはクライアント認証です。

これは、私が説明した構成で可能ですか?

私は webapps と SSL と HTTPS と Tomcat に精通していますが、Apache HTTPD の外部範囲に関する知識は限られています。

必要に応じてこれを移動できてうれしいですが、構成ファイルを使用したプログラミングのようなものです ;)

0 投票する
2 に答える
13688 参照

apache - httpd mod_proxy_balancer failover failonstatus - 透過的な切り替え

mod_proxy_balancer を使用してバックエンド サーバーのフェイルオーバーを管理しています。バックエンド サーバーは、NFS などの他のバックエンド サービスが失敗したときに、タイムアウトではなくエラー コードを返す場合があり、そのようなサーバーも失敗したノードとしてマークする必要があります。したがって、failonstatus ディレクティブを使用しています。

現在、フェールオーバーは 1 つの不具合で完全に機能します。アクティブ ノードに障害が発生すると、ユーザーは 503 エラーを受け取り、次の要求からスタンバイ サーバーが引き継ぎます。

ただし、単一のリクエストでも失敗したくありません。クライアントにエラーを返さずに mod_proxy フェイルオーバーできませんか? アクティブ ノードに障害が発生した場合、mod_proxy が後続のリクエストからだけでなく、同じリクエストに対してスタンバイを試行するようにします。

0 投票する
1 に答える
4192 参照

apache - apache mod_proxy_balancer を使用してラウンドロビン負荷分散を行う

mod_proxy_balancer で次のことを行うことは可能ですか:

  • メイン アプリケーション サーバー: IP: 192.168.1.1
  • セカンダリ サーバー: IP: 192.168.1.2

メイン アプリケーション サーバーは、Apache を使用してパブリック DNS からのすべての要求を処理します。

次に mod_proxy_balancer を使用して基本的に言う

つまり、実際には、メイン アプリケーション サーバーがこの要求を処理できるか、それともクラスター内の別のサーバーに渡すことができるかということです。

また、https を使用している場合、各サーバーで各 apache を設定して、署名済み証明書をポイントし、ポート 443 でリッスンするように設定すれば、mod_proxy_balancer がリクエストを通過したときに、当然 https を処理するだけで済みますか?

自分でテストをセットアップできることはわかっていますが、ここで簡単な回答を得ることができれば、2 つの Ubuntu VM のセットアップを台無しにしたくありません。:)

ありがとう

0 投票する
1 に答える
2043 参照

apache2 - 再起動せずにApache2バランサーメンバーを追加/削除する方法

既存の接続が中断されないように、Apache を完全に再起動せずに Apache2 mod_proxy_balancer バランサー メンバーを追加/削除する方法があるかどうかを知りたいですか?

等しいvhost-fileのメンバーを更新し、ソフトリスタートを行うだけの場合

Apache は行った変更を適用しません。提供されたbalancer-managerディレクティブと Web バックエンドを使用すると、再起動せずに特定の blancer-member (例: loadfactor) のパラメーターを変更できますが、この方法で新しいメンバーを追加したり、既存のメンバーを削除したりすることはできません。

0 投票する
1 に答える
219 参照

apache - Apache でのランダム負荷分散

サーバーの負荷分散をセットアップしようとしています。mod_proxy_balancer を使用すると、すべてが非常に簡単に見えます。私の問題は、ランダムバランシング アルゴリズムが必要なことです (なぜそれが必要なのかについては、クライアントの要求です)。

私が見ることができる限り、lbmethod で使用可能なオプションはbyrequests bytraffic byrequests です。独自のモジュールを作成せずにランダムなバランスを取る方法はありますか (それほど難しくはありませんが、それでも避けたいと思います)。

0 投票する
1 に答える
1581 参照

apache2 - 1 つのバランサー メンバーからプロキシ バランサーの URL の一部を取得する

Apache サーバーのクラスターをセットアップしました。この背後には、Apache によって負荷分散される 2 つの Jboss インスタンスがあります。

構成は以下のようになります

URLアクセスでは、URLの特定の部分で、2番目のノード、つまりjbossのnode2からルーティングする必要があります。

たとえば、アクセスhttp://www.example.com/aa/login/login.jspしている場合、このリクエストは node2app02のみで処理する必要があります。

リクエストの残りの部分は、通常のアクセスとして負荷分散する必要があります。それを行うようにApacheを設定するにはどうすればよいですか?

私は多くのを試しましたがrewrite、これまでのところ何も機能していません。<Location>ProxyPassMatch

助けてください。前もって感謝します。

0 投票する
1 に答える
8254 参照

apache - Apache Webserver、Tomcat、AJP、「すべてのワーカーがルートのエラー状態です」

これを前置きするために、私はインターネット上で解決策を見つけようとしてきました。以下は、いくつかの情報を提供している最新のリンクですが、どれも機能していないようです.

https://serverfault.com/questions/19947/apachetomcat-having-problems-communicating-unclear-error-messages-bringing-do

Tomcat が Apache に応答しなくなる

以下に概説する多くの構成変更にもかかわらず、ログに次のように表示されるエラーを防ぐことができませんでした。

ダウンしたユーザーには「Server Unavailable」画面が表示されますが、接続は数分後に復元されます。ただし、同じサーバー接続が何度もアップ/ダウンすることがあります。これは、同じユーザーの動作が原因である可能性があります (私はスティッキー セッションを使用しています) が、これを確認することはできませんでした。

私の構成では、AJP 経由で構成された 4 つの Tomcat ワーカーを使用して、Windows 環境で実行されている単一の Apache Web サーバー インスタンスがあります。現在、すべての Tomcat ワーカーは、別のホスト上の Windows でホストされています。

私のシナリオのすべてのホストは、堅牢な運用環境の VM であり、それぞれに専用の複数のコアがあります。

アパッチのバージョン:

Tomcat はバージョン 7.0.29 です

各 BalancerMember には、次の構成パラメーターがあります。

現在ネイティブ コネクタ (org.apache.coyote.ajp.AjpAprProtocol) を使用している各 Tomcat インスタンス。

コネクタ構成:

アプリケーション自体は、Oracle ojdbc15_g JDBC ドライバー v11.2.0.3.0 を介して Oracle に接続します。

私が観察したこと:

  1. Tomcat サーバーが Apache からの要求でオーバーランしているようには見えません。これは、ログ アクティビティの観察と、jconsole を介したスレッド アクティビティによって強化された Apache Web サーバー サーバー ステータス データによる検証から得られたものです。(実行スレッドの数が、上で設定した制限の近くで増加することはありません)。これは、最大 400 人のユーザーにサービスを提供する内部アプリケーションであり、そのほとんどは同時にオンになっているわけではありません。したがって、負荷は問題になりません。
  2. スレッドのデッドロックの問題はないようです... jconsoleを使用してTomcatインスタンスをリモートで監視している場合、これを確認するためにajp-apr-8009-exec-#スレッドを見て、ほとんどが待機状態にあります積極的に処理していることがわかります。
  3. 実行時間の長いリクエストがいくつかあります。中には、上で概説した 600 秒のタイムアウトを超える場合もあります。これは私が現在調査している分野です。リクエストの長さの理由は通常、非常に大きなデータ ストアでの連合検索であり、通常は数秒以内に返されますが、単純に時間がかかります。時間がかかる場合は、通常、ユーザーによるキーワード検索の構成が不十分であり、Oracle が結果を構築する間にかなりの時間ブロックする原因となっています。現在、これをリファクタリングして、request/apr exec スレッドとは別のスレッドで実行するようにしています。実行に 280 秒 (4 分 40 秒) を超える場合は、スレッドを強制終了し、ユーザーにエラーを返します。 ; このようにして、Tomcat がリクエストを処理するのに時間がかかりすぎることを除外できます。

それに対処するために私が現在行っていることに関しては、構成する能力を使い果たしたと感じています(これには、インフラストラクチャではなくソフトウェアの専門家であるため、考えられるすべてのソリューションをオンラインでグーグル検索することが含まれます)..だから私はプラットフォームを切り替えて別の方法を試しています。Linux マシンで Apache Web サーバーを実行し、DNS ラウンドロビンを使用して、ユーザーの一部を Windows ではなく Linux 経由でルーティングしました。これは役に立たないように見えますが、Tomcat ワーカーはまだ同じ Windows ボックスで実行されています。

私は現在、Tomcat アプリ自体を Linux マシンでも起動しています。安定したら (アプリがホストされる唯一のプラットフォームが Windows であるという仮定のために、いくつかの小さなコード変更が必要です)、それを追加します。ワーカーとして、その特定のインスタンスで同じ問題が発生するかどうかを確認します。

他に何もないとしても、長時間実行されるリクエストについての私の疑いが正しい道であることを確認したいと思います。さまざまな構成変更を試みましたが、役に立ちませんでした。

0 投票する
1 に答える
21499 参照

php - Apache 2.4 + php-fpm - AH01071: 「プライマリ スクリプトが不明です\n」というエラーが発生しました mod_proxy_balancer

Ubuntu 14.04 で php-fpm 5.5.9 を使用して Apache 2.4.9 を構成しています。私が望むのは、php-fpm リクエストのバランサーを作成することですが、次のエラーがスローされます。

AH01071: Got error 'Primary script unknown\n'

私のphpファイルにアクセスしようとすると。プロキシ バランサーは、ProxyPassMatch によって渡されたドキュメント ルートを取得していないようです。ネットワークtcpを使用する代わりにUDSを使用して、apacheがphp-fpmソケットにアクセスできるようにしています。

バランサーなしで構成すると、すべて正常に動作します。

作品

動作しません

これはバランサーの設定ログです: