Apache Load Balancer,两个集群

时间:2019-04-17 08:23:35

标签: apache load-balancing mod-proxy mod-proxy-balancer

我希望我能清楚说明我的问题... 在Apache配置中,定义了两个用于负载平衡的集群,我想使用粘性会话始终在集群的第一个成员或第二个成员上路由用户请求。

基础设施 2个Web服务器(apache01和apache02) -OS Linux -Apache 2.2.34

2 X Oracle Satellite(satellite01和satellite02)-缓存应用程序 -OS Solaris

2 X Oracle WCS(wcs01和wcs02)-cms -OS Solaris

有关Oracle Satellite和Oracle WCS的详细信息暂时并不重要。 我的问题是关于Web服务器的,更具体地说是针对Apache和负载平衡的。

一些环境细节。 -任何应用程序服务器之间没有内存/会话复制 -卫星01始终将请求发送到wcs01,卫星02始终将请求发送给wcs02 -Apache正在检查请求并可以发送请求     *直接到wcs服务器,或     * apache可以将请求发送到卫星。如有需要,卫星可以将请求进一步转发给wcs。

用户-> Apache->卫星-> WCS

OR

用户-> Apache-> WCS

当前在Apache配置中,定义了两个集群。 一种用于Satellite服务器,另一种用于WCS服务器。 我的目标是在同一服务器上满足所有用户请求。 例如,如果第一个请求发送到wcs01,则所有其他请求都应从wcs01或satellite01提供服务,反之亦然。

我当前的设置如下

<Proxy balancer://CLUSTER_1>
    Order deny,allow
    Allow from all

    Header add Set-Cookie "ROUTEID=%{UNIQUE_ID}e.%{BALANCER_WORKER_ROUTE}e; path=/; HttpOnly; secure" env=BALANCER_ROUTE_CHANGED
    Header add Set-Cookie "WCSID=%{UNIQUE_ID}e.%{BALANCER_WORKER_ROUTE}e; path=/; HttpOnly; secure" env=BALANCER_ROUTE_CHANGED
    ProxySet lbmethod=byrequests stickysession=ROUTEID nofailover=On timeout=5 maxattempts=5 failonstatus=555

    BalancerMember http://wcs01 route=firstNode connectiontimeout=15 retry=1 acquire=3000 keepalive=On
    BalancerMember http://wcs02 route=secondNode connectiontimeout=15 retry=1 acquire=3000 keepalive=On
</Proxy>

<Proxy balancer://CLUSTER_2>
    Order deny,allow
    Allow from all

    Header add Set-Cookie "ROUTEID=%{UNIQUE_ID}e.%{BALANCER_WORKER_ROUTE}e; path=/; HttpOnly; secure " env=BALANCER_ROUTE_CHANGED
    Header add Set-Cookie "SATELLITEID=%{UNIQUE_ID}e.%{BALANCER_WORKER_ROUTE}e; path=/; HttpOnly; secure"  env=BALANCER_ROUTE_CHANGED
    ProxySet lbmethod=byrequests stickysession=ROUTEID nofailover=On timeout=5 maxattempts=5 failonstatus=555

    BalancerMember http://satellite01 route=firstNode connectiontimeout=15 retry=1 acquire=3000 keepalive=On
    BalancerMember http://satellite02 route=secondNode connectiontimeout=15 retry=1 acquire=3000 keepalive=On
</Proxy>

<LocationMatch ^/(wcs)(.*)$>
    RequestHeader unset Authorization
    RequestHeader unset Proxy-Authorization
    RequestHeader unset WWW-Authenticate

    ProxyPassMatch balancer://CLUSTER_1/$1$2 nofailover=On
    ProxyPassReverse balancer://CLUSTER_1/$1$2
    ProxyPassReverseCookiePath / /
</LocationMatch>

<LocationMatch ^/(satellite)(.*)$>
    RequestHeader unset Authorization
    RequestHeader unset Proxy-Authorization
    RequestHeader unset WWW-Authenticate

    ProxyPassMatch balancer://CLUSTER_2/$1$2 nofailover=On
    ProxyPassReverse balancer://CLUSTER_2/$1$2
    ProxyPassReverseCookiePath / /
</LocationMatch>
据我了解,未使用

SATELLITEID和WCSID cookie。我也检查了应用程序服务器。 我想我现在可以忽略它们。

在上述配置中,我的最新更新是LocationMatch中的On的“ nofailover”,因为我错过了它,但是要测试它需要一些时间。 所以,我的问题是,我还有什么想念的吗?这样设置是否合适,以使请求保持相同的路径?

0 个答案:

没有答案
相关问题