web-dev-qa-db-ja.com

Apacheとmod_proxy_balancerの既存の接続は2番目のJBossノードにフェイルオーバーしません

次の設定で、Apache HTTP + mod_proxy_balancerとmod_proxy_ajpによって負荷分散されたJbossファームがあります。

<VirtualHost *:80>

    ServerName web-gui-acceptance.myorg.com
    ServerAlias web-gui-acceptance


    ProxyRequests Off
    ProxyPass /web-gui balancer://jbosscluster/web-gui stickysession=JSESSIONID nofailover=On
    ProxyPassReverse /web-gui http://srvlnx01.myorg.com:8080/web-gui
    ProxyPassReverse /web-gui http://srvlnx02.myorg.com:8080/web-gui

    <Proxy *>
      AuthType Kerberos
      [...]
    </Proxy>

    <Proxy balancer://jbosscluster>
        BalancerMember ajp://srvlnx01.myorg.com:8009 route=SRVLNX01_node1
        BalancerMember ajp://srvlnx01.myorg.com:8009 route=SRVLNX02_node1
        ProxySet lbmethod=byrequests
    </Proxy>

</VirtualHost>

最初のJBossノードに障害が発生した場合(ホスティングVMがダウン)、既存の接続は2番目のノードにフェイルオーバーしません...最初のルートは保持されます(テーブル/ .shm?)そしてそれは私に503エラーを提供します。

誰かが私が逃したものを教えてもらえますか?

1
Jean-Rémy Revy

デプロイ/アンデプロイも処理する回避策を見つけた可能性があります: http://www.jboss.org/mod_cluster

利点

mod_clusterは、他のhttpdベースのロードバランサーに比べて次の利点があります。

httpdワーカーの動的構成

従来のhttpdベースのロードバランサーでは、プロキシで使用可能なワーカーを明示的に構成する必要があります。 mod_clusterでは、プロキシの構成の大部分はアプリケーションサーバーにあります。アプリケーションサーバーが通信するプロキシのセットは、静的リストによって、またはアドバタイズメカニズムを介した動的検出を使用して決定されます。アプリケーションサーバーは、ライフサイクルイベント(サーバーの起動/シャットダウンなど)をプロキシに中継して、プロキシが効果的に自動構成できるようにします。特に、サーバーを正常にシャットダウンしても、従来のhttpdベースのロードバランサーの場合のように、プロキシによるフェイルオーバー応答は発生しません。

サーバー側の負荷分散係数の計算

従来のhttpdベースのロードバランサーとは対照的に、mod_clusterは、プロキシでこれらを計算するのではなく、アプリケーションサーバーによって計算および提供される負荷分散係数を使用します。その結果、mod_clusterは、プロキシから利用できるよりも堅牢で正確な負荷メトリックのセットを提供します。 (詳細については、負荷メトリックを参照してください)

きめ細かいWebアプリのライフサイクル制御

従来のhttpdベースのロードバランサーは、Webアプリケーションのアンデプロイを特にうまく処理しません。プロキシの観点からは、デプロイされていないWebアプリケーションへのリクエストは、存在しないリソースのリクエストと区別がつかず、404エラーが発生します。 mod_clusterでは、各サーバーはWebアプリケーションコンテキストのライフサイクルイベント(Webアプリのデプロイ/アンデプロイなど)をプロキシに転送し、特定のコンテキストのルーティング要求をそのサーバーに開始/停止するように通知します。

AJPはオプションです

Mod_jkとは異なり、mod_clusterはAJPを必要としません。アプリケーションサーバーノードへのhttpd接続では、HTTP、HTTPS、またはAJPを使用できます。元の概念はwikiで説明されています。

それがお役に立てば幸いです。

0
Jean-Rémy Revy