使用粘性负载平衡apache,应用程序上下文正在丢失

时间:2015-07-01 13:18:42

标签: java apache unix tomcat

以下是Apache2的粘性负载平衡配置。它正确地进行粘性和负载平衡。

<VirtualHost *:80>
    <Location "/balancer-manager">
        SetHandler balancer-manager
    </Location>
    ServerName 10.10.87.177
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy "balancer://mycluster">
    AddDefaultCharset off
        Order deny,allow
        allow from all
    BalancerMember "ajp://10.10.87.177:8009/myapp" route=node1
    BalancerMember "ajp://10.10.87.241:8009/myapp" route=node2
    #ProxySet stickysession=ROUTEID
     ProxySet stickysession=JSESSIONID|jsessionid
</Proxy>
ProxyPass "/myapp" "balancer://mycluster" 
ProxyPassReverse "/myapp" "balancer://mycluster"
</VirtualHost>

但问题是当我遇到http://10.10.87.177/myapp时,回复正确为home page。但是当我提交主页时,它的动作是t.jsp,服务器点击url是http://t.jsp?param1=val1。在这里我失去了上下文 / myapp ,不知道原因。点击网址应为http://10.10.87.177/myapp/t.jsp?param1=val1

请帮我解决问题。

这是html:

<form action="t.jsp">Enter your name: <input type="text" name="name">
<p>
<input type="submit" value="OK">
</form>

如果我正在访问没有负载均衡器的应用程序,它可以正常工作,但是当使用上面配置的负载均衡器时会丢失上下文。

1 个答案:

答案 0 :(得分:0)

在代码中进行以下更改:

BalancerMember&#34; ajp://10.10.87.177:8009 / myapp /&#34;路由节点1 = BalancerMember&#34; ajp://10.10.87.241:8009 / myapp /&#34;路线=节点2

ProxyPass&#34; / myapp /&#34; &#34;平衡器:// myCluster中/&#34; ProxyPassReverse&#34; / myapp /&#34; &#34;平衡器:// myCluster中/&#34;

-VV