Apacheロードバランサーは常にリダイレクトされます。

Apacheロードバランサーは常にリダイレクトされます。

私はApache 2.4.6(CentOS)でLoadBalancerを設定しましたが、1つを除いてうまくいきます。

ユーザーがApacheサーバーのエイリアスを開くと、ユーザーがWebサイトのどこかをクリックしたときにいつでも別のサーバーにユーザーがリダイレクトされます。 Apacheを次のように設定したいと思います。

誰かがページを開いて(ApacheがあるサーバーからWebページをロードしている場合)、Webサイトのどこかをクリックすると、ページはそのまま残り、別のサーバーにリダイレクトされません。

このようにApacheをどのように設定できますか?

現在の構成は次のとおりです。

<Proxy balancer://mycluster>
        BalancerMember https://server1:443
        BalancerMember https://server2:443
        Require all granted
        ProxySet lbmethod=bytraffic
</Proxy>
<Location /balancer-manager>
        SetHandler balancer-manager
        Require host example.org
 </Location>
ProxyPass /balancer-manager !
ProxyPass / balancer://mycluster/

この設定も試しましたが、まだ期待どおりに機能しません。

ProxyPass "/test" "balancer://mycluster" stickysession=JSESSIONID|jsessionid scolonpathdelim=On
<Proxy "balancer://mycluster">
    BalancerMember "https://server1:443" route=node1
    BalancerMember "https://server2:443" route=node2
Require all granted
</Proxy>


<Location /balancer-manager>
        SetHandler balancer-manager
        Require host example.org
</Location>
ProxyPass /balancer-manager !
ProxyPass / balancer://mycluster/

答え1

jsessionidバックエンドがCookieを設定していないと思いますか?文書バックエンドがCookie自体を設定しない場合は、次の例から始めることをお勧めします。

Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy "balancer://mycluster">
    BalancerMember "http://192.168.1.50:80" route=1
    BalancerMember "http://192.168.1.51:80" route=2
    ProxySet stickysession=ROUTEID
</Proxy>
ProxyPass        "/test" "balancer://mycluster"
ProxyPassReverse "/test" "balancer://mycluster"

(明示的なHeader add Set-Cookie。)

関連情報