4

いくつかのアプリケーション サーバーの前に Apache httpd ロード バランサーをセットアップするのに苦労しています。これは私の構成です:

ProxyRequests off

<Proxy balancer://mycluster>

    BalancerMember http://127.0.0.1:8080
    BalancerMember http://remote-svr:8080
    ProxySet lbmethod=bybusyness
    ProxySet stickysession=JESSIONIDSSO
</Proxy>

<Location /balancer-manager>
   SetHandler balancer-manager
</Location>

ProxyPass /balancer-manager !
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
ProxyPassReverseCookieDomain http://127.0.0.1:8080 localhost
ProxyPassReverseCookieDomain http://remote-svr:8080 localhost

私がオンラインで見た多くの例の1つがそれらを使用していましたが、最後の2行が何かをするかどうかはわかりません.

問題は、BalancerMember 行のいずれかをコメントアウトした場合です。

    #BalancerMember http://127.0.0.1:8080
    BalancerMember http://remote-svr:8080

その場合、ユーザーの観点からの動作は問題ありませんが、両方のメンバーがアクティブな場合、動作は正しくありません。

アプリケーションは最初にログイン画面を表示しますが、両方のロード バランサーがアクティブな場合、ユーザーがユーザー名とパスワードを送信すると、再びログイン画面にリダイレクトされます。セッションがどこかで失われている可能性があります。誰が問題が何であるか知っていますか?

編集 - 現在動作中

参考までに、このセットアップは機能するようになりました。

ProxyRequests off
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED

<Proxy balancer://mycluster>

    BalancerMember http://127.0.0.1:8080 route=localServer
    BalancerMember http://remote-svr:8080 route=remoteServer
    ProxySet lbmethod=bybusyness
    ProxySet stickysession=ROUTEID
</Proxy>

<Location /balancer-manager>
   SetHandler balancer-manager
</Location>

ProxyPass /balancer-manager !
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/ 

個々のノードの「ルート」属性は、ノード自体に設定する必要があることに注意してください (この場合、サーバーは JBoss を実行するため、server.xml)。JSESSIONID は、個々のアプリケーションのスティッキー セッション Cookie として機能しましたが、各サーバーには複数のアプリケーションがあり、ユーザーはすべてに対して同じノードを使用する必要があります。

4

1 に答える 1