いくつかのアプリケーション サーバーの前に 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 として機能しましたが、各サーバーには複数のアプリケーションがあり、ユーザーはすべてに対して同じノードを使用する必要があります。