如何将apache2.2配置为负载均衡器来管理运行javascript应用程序的tomcat实例

How to configure apache 2.2 as load balancer to manage tomcat instances running javascript application

本文关键字:javascript 运行 管理 应用程序 实例 tomcat 均衡器 apache2 配置 负载      更新时间:2023-09-26

我在Ubuntu 12.04上安装了apache2.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. 连接到平衡实例上运行的应用程序URL:e.http://public_IP/app/login

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

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

  4. 在Chrome浏览器上单击F12,然后单击Network:我可以看到网页没有JSESSIONID标题,而我可以看到JSESSIONID附加在所有URL资源的和处

换句话说,分析负载均衡器网页的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" />

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