2014-11-05 44 views
0

我已经在Ubuntu 12.04(#apt-get install -y -q apache2)上安装了apache 2.2。 我有两个部署了运行javascript的war应用程序的tomcat实例。如何配置apache 2.2作为负载平衡器来管理运行javascript应用程序的tomcat实例

The apacheLB IP is: http://public_ip:80/app 
The tomcat applications private url are: http://177.86.0.115:80/app and http://177.86.0.116:80/app 

我已启用以下模块如下:

pushd /etc/apache2/mods-enabled 
sudo ln -f -s ../mods-available/proxy_balancer.conf proxy_balancer.conf 
sudo ln -f -s ../mods-available/proxy_balancer.load proxy_balancer.load 
sudo ln -f -s ../mods-available/proxy.conf proxy.conf 
sudo ln -f -s ../mods-available/proxy.load proxy.load 
sudo ln -f -s ../mods-available/proxy_http.load 
popd 

我有配置proxy_balancer.conf如下:

<IfModule mod_proxy_balancer.c>  
<IfModule mod_status.c> 

<Proxy balancer://mycluster>  
BalancerMember http://177.86.0.115:80/app  
BalancerMember http://177.86.0.116:80/app  
</Proxy> 

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

ProxyPassReverse /app balancer://mycluster  
ProxyPassMatch ^/(.*)$ balancer://mycluster/$1 

<Location /balancer-manager>  
     SetHandler balancer-manager  
     Allow from all  
</Location>  
</IfModule>  
</IfModule> 

如果我通过浏览器连接到负载平衡器URL我无法查看图像。 在Chrome的开发者工具,我认为:

login;jsessionid=18D12D6A45D6BE7379FDDABD1A445A2B:10 Uncaught SyntaxError: Unexpected token < 
login;jsessionid=133E61276DABF0CD328F9555FA941AD2:10 Uncaught SyntaxError: Unexpected token < 
login;jsessionid=28F0F9AAE7A6A0931093B6B344D17266:10 Uncaught SyntaxError: Unexpected token < 
login;jsessionid=679B3A919757EB4C9C8C82587ABD39EA:10 Uncaught SyntaxError: Unexpected token < 
jquery.validate.js:1243 Uncaught ReferenceError: jQuery is not defined 
login;jsessionid=2BB3E3044205EB49C5745D0B2FA16F68:10 Uncaught SyntaxError: Unexpected token < 
login;jsessionid=25502F3D232720E088AD939D3543B5D2:87 Uncaught ReferenceError: $ is not defined 
login;jsessionid=25502F3D232720E088AD939D3543B5D2:196 Uncaught ReferenceError: $ is not defined 

你能帮助我吗? 谢谢, G.

+0

换句话说,你的资产没有正确路由。其他一切工作,只是不是静态资产? – 2014-11-05 16:30:48

+0

是的,它的确如此。例如,我可以通过负载平衡器登录到应用程序,但是我看到该菜单被列出而不是显示为图像。 – Joe 2014-11-06 07:31:55

回答

0

我已经做了这些步骤:

  1. 连接在平衡情况下运行的应用程序URL:ES。 http://public_IP/app/login

  2. 在Chrome浏览器上单击F12并单击网络:我可以看到应用程序在请求标头中生成了Cookie:JSESSIONID = xxxxxxxxxx。

  3. 连接到负载均衡器URL:es。 http://public_ip_load_balancer/app/login

  4. 在Chrome浏览器上点击F12,然后点击网络:我可以看到该网页没有JSESSIONID标头,而我可以看到JSESSIONID附加在所有网址资源处。

换句话说,而分析负载平衡器网页的SORCE代码,我看到:

<title>Login</title> 
<link rel="icon" href="/app/resources/img/img.png;jsessionid=71CFE3AB5E3BAEF5187AE123E79C052D" type="image/x-icon"> 
<link rel="shortcut icon" sizes="196x196" href="/app/resources/img/img.png;jsessionid=71CFE3AB5E3BAEF5187AE123E79C052D"> 
<link rel="stylesheet" href="/app/resources/css/foundation.css;jsessionid=71CFE3AB5E3BAEF5187AE123E79C052D" /> 
<link rel="stylesheet" href="/app/resources/css/app.css;jsessionid=71CFE3AB5E3BAEF5187AE123E79C052D" /> 

同时而分析应用网页的SORCE代码,我看到:

<title>Login</title> 
<link rel="icon" href="/app/resources/img/img.png" type="image/x-icon"> 
<link rel="shortcut icon" sizes="196x196" href="/app/resources/img/img.png"> 
<link rel="stylesheet" href="/app/resources/css/foundation.css" /> 
<link rel="stylesheet" href="/app/resources/css/app.css" /> 

我不知道为什么会发生这种情况。