如何配置apache 2.2作为负载均衡器来管理运行javascript应用程序的tomcat实例

时间:2014-11-05 16:25:22

标签: javascript load-balancing apache2.2

我在Ubuntu 12.04上安装了apache 2.2(#apt-get install -y -q apache2)。 我有两个tomcat实例,我在其中部署了一个运行javascript的war应用程序。

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。

1 个答案:

答案 0 :(得分: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附加在所有网址资源上。
  5. 换句话说,分析负载均衡器网页的代码,我看到了:

    <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" />
    

    在分析应用程序网页的代码时,我看到:

    <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" />
    

    我不知道为什么会这样。