問題タブ [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.
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
助けてください。前もって感謝します。
apache - Apache Webserver、Tomcat、AJP、「すべてのワーカーがルートのエラー状態です」
これを前置きするために、私はインターネット上で解決策を見つけようとしてきました。以下は、いくつかの情報を提供している最新のリンクですが、どれも機能していないようです.
以下に概説する多くの構成変更にもかかわらず、ログに次のように表示されるエラーを防ぐことができませんでした。
ダウンしたユーザーには「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 に接続します。
私が観察したこと:
- Tomcat サーバーが Apache からの要求でオーバーランしているようには見えません。これは、ログ アクティビティの観察と、jconsole を介したスレッド アクティビティによって強化された Apache Web サーバー サーバー ステータス データによる検証から得られたものです。(実行スレッドの数が、上で設定した制限の近くで増加することはありません)。これは、最大 400 人のユーザーにサービスを提供する内部アプリケーションであり、そのほとんどは同時にオンになっているわけではありません。したがって、負荷は問題になりません。
- スレッドのデッドロックの問題はないようです... jconsoleを使用してTomcatインスタンスをリモートで監視している場合、これを確認するためにajp-apr-8009-exec-#スレッドを見て、ほとんどが待機状態にあります積極的に処理していることがわかります。
- 実行時間の長いリクエストがいくつかあります。中には、上で概説した 600 秒のタイムアウトを超える場合もあります。これは私が現在調査している分野です。リクエストの長さの理由は通常、非常に大きなデータ ストアでの連合検索であり、通常は数秒以内に返されますが、単純に時間がかかります。時間がかかる場合は、通常、ユーザーによるキーワード検索の構成が不十分であり、Oracle が結果を構築する間にかなりの時間ブロックする原因となっています。現在、これをリファクタリングして、request/apr exec スレッドとは別のスレッドで実行するようにしています。実行に 280 秒 (4 分 40 秒) を超える場合は、スレッドを強制終了し、ユーザーにエラーを返します。 ; このようにして、Tomcat がリクエストを処理するのに時間がかかりすぎることを除外できます。
それに対処するために私が現在行っていることに関しては、構成する能力を使い果たしたと感じています(これには、インフラストラクチャではなくソフトウェアの専門家であるため、考えられるすべてのソリューションをオンラインでグーグル検索することが含まれます)..だから私はプラットフォームを切り替えて別の方法を試しています。Linux マシンで Apache Web サーバーを実行し、DNS ラウンドロビンを使用して、ユーザーの一部を Windows ではなく Linux 経由でルーティングしました。これは役に立たないように見えますが、Tomcat ワーカーはまだ同じ Windows ボックスで実行されています。
私は現在、Tomcat アプリ自体を Linux マシンでも起動しています。安定したら (アプリがホストされる唯一のプラットフォームが Windows であるという仮定のために、いくつかの小さなコード変更が必要です)、それを追加します。ワーカーとして、その特定のインスタンスで同じ問題が発生するかどうかを確認します。
他に何もないとしても、長時間実行されるリクエストについての私の疑いが正しい道であることを確認したいと思います。さまざまな構成変更を試みましたが、役に立ちませんでした。
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ソケットにアクセスできるようにしています。
バランサーなしで構成すると、すべて正常に動作します。
作品
動作しません
これはバランサーの設定ログです:
load-balancing - Apache mod_proxy: パラメータ `acquire` が機能しない
mod_proxy、mod_proxy_balancer、および mod_status で apache2-worker パッケージを使用します。Apache は、WFS サーバーへのロード バランサー/ディスパッチャーとして構成されます。
OS: SuSE SLES 11 SP2
Apache httpd: バージョン 2.2.12
すべてのワーカー (WFS サーバー) は、一度に 1 つの要求しか処理できません。そのため/etc/apache2/server-tuning.conf
、セクション<IfModule worker.c>
では、パラメーターを に置きましServerLimit
た1
。BalancerMember の構成では、パラメーターを使用しましたmax=1
。つまり/etc/apache2/conf.d/proxy.conf
、次のようになります。
パラメータacquire
:
ドキュメントには次のように記載されています。
設定すると、接続プールで空き接続を待機する最大時間 (ミリ秒単位) になります。プールに空き接続がない場合、Apache はクライアントに SERVER_BUSY ステータスを返します。
パラメータの私の理解はacquire
次のとおりであり、私の望ましい動作も次のとおりです。
ロード バランサーは、クライアントからいくつかの要求を受け取ります。ある時点で、すべての労働者は忙しいです。次のリクエストは、ワーカーが解放されるまでロード バランサーによって保留されたままになります。ワーカーがフリーになると、保留中のリクエストがフリー ワーカーに割り当てられ、フリー ワーカーが接続を受け入れます。パラメーターで指定された時間内に空いているワーカーがない場合acquire
、クライアントはエラー応答を受け取ります。
しかし、パラメーターacquire
は期待どおりに機能しません。ロード バランサーは次の要求を忙しいワーカーに割り当てます。その間に別のワーカーが解放されたとしても、リクエストは引き続きビジー ワーカーに割り当てられ、クライアントはビジー ワーカーが現在のリクエストを終了して新しいリクエストを受け入れるまで待たなければなりません。
実行すると/etc/init.d/apache2 reload
、Apache の error_log にエラー メッセージが表示されます。
BalancerMember 取得タイムアウトの形式が正しくありません
そのメッセージの後、httpd は終了します。httpd のみを開始または再起動すると、そのメッセージは表示されず、httpd は有効です。
のように単位も指定してみましたacquire=30000ms
。しかし、エラーは残ります。パラメータを削除するだけで解決しますacquire
が、説明されている動作は同じです。
質問は次のとおりです。
- パラメータをどのように使用する必要があります
acquire
か? 誰かが実用的な例を持っていますか? - 目的の動作を得るために他のパラメーターを使用する必要がありますか?
apache - Apache: mod_proxy_balancer とキープアライブ タイムアウトの設定
システムで使用apache 2.4.10
していますが、modul mod_proxy_balancer でSLES 10
a を設定する方法がわかりません。keep-alive-time
キープアライブ時間を 10 分間に設定したいと考えています。タイムアウトを使用していくつかのテストを行いましたが、グローバル apache パラメータKeepAliveTimeout
とOS-parameter
TCP キープアライブ タイムアウト ( /proc/sys/net/ipv4/tcp_keepalive_time
) は効果がありません。
この Proxy-Balancer タイムアウトのパラメータはありますか、またはキープアライブ時間を 10 分に設定する別の方法を知っていますか?
load-balancing - 通常、ロード バランサが高可用性ペアで実装される理由は?
現在、私はロードバランサについていくつかの研究を行っています。
Wikipedia で、このリンクhttp://en.wikipedia.org/wiki/Load_balancing_(computing)を参照してください。
「通常、ロードバランサーは高可用性ペアで実装され、特定のアプリケーションで必要に応じてセッション永続データを複製することもあります。」
また、検索エンジンを使用して、システムで 2 つのロード バランサーを使用する必要がある理由とケースに関する関連記事をいくつか見つけましたが、適切な情報が見つかりませんでした。
では、ほとんどの場合、なぜ 2 つのロード バランサーが必要なのですか? また、1 つではなく 2 つ以上のロード バランサーを使用する必要があるのはどのような場合ですか?
apache - Apache HTTPD Websocket トンネル プラグイン エラー
断続的に Apache ws トンネル プラグインを介して接続すると、Websocket 接続が失敗します。アプリサーバーに直接アクセスすると、接続は常に機能します。
以下のエラーが表示されます。WebSocket ハンドシェイク中のエラー: 無効なステータス行
'ws://host' への WebSocket 接続が失敗しました: 1 つ以上の予約済みビットがオンになっています: 予約済み 1 = 1、予約済み 2 = 0、予約済み 3 = 0、および場合によっては 'ws://host' への WebSocket 接続が失敗しました: 認識できないフレーム オペコード: 12
WebSocket ハンドシェイク中のエラー: ステータス行が CRLF ui-toolkit-vendor.js:21965 で終わらない
mod_proxy_wstunnel および mod_proxy_balancer モジュールを備えたインフラストラクチャ Apache HTTPD 2.4.9
apache - mod-cluster および Apache HTTPD2.2 を使用する tomcat7 ホットスタンバイ ノード
RHEL6.7 で mod-cluster1.2.9 および Apache HTTPD2.2 で tomcat7.0.63 を使用しています。
専用のバランサ構成を持つ複数の Tomcat インスタンスが、専用の Virtualhost:6666 を使用して Apache HTTPD を共有しています。1 つの Tomcat インスタンスのみがマスター ノードとホットスタンバイ ノードを持つ必要があります。server.xmlでModClusterListenerの有無にかかわらず、mod-proxy-balancer、BalancerMemberを試しました。しかし、共有 Apache HTTPD での mod-cluster との共存が機能していないことがわかります... または、私は間違いを犯しています。
JBoss EAP および Wildfly には、lbfactor/loadfactor があります。
これにより、1 つのノードがホットスタンバイ ノードになります。
load = 0
(スタンバイ)をに送信するmod-cluster Tomcatシステムプロパティなど、tomcat7でそうする方法はありますVirtualhost:6666
か?
よろしく、hplar