Apache httpd作为jboss的负载均衡器以及另一台Apache服务器

时间:2013-04-12 09:27:12

标签: apache jboss6.x

我有一个apache httpd服务器,说 server1 *(公开公开),它使用mod_cluster充当某些jboss服务器(防火墙后面)的负载均衡器。现在我想在几台apache服务器上安装静态内容(images / css / htmls)和一些cg脚本,比如** server2 server3 (防火墙后面)。

现在我希望 server1 充当这些server2和server3的负载均衡器以及jboss服务器。

通过这种安排,对jboss上部署的应用程序的任何请求都需要路由到jboss,任何静态内容请求都应该转到 server2 server3

以下是我正在使用的版本

Linux服务器 apache httpd - 2.2.22 JBOSS-EAP-6

我需要在 server1 中使用哪种机制/配置才能实现? 请看看是否有人可以提供帮助。

2 个答案:

答案 0 :(得分:1)

好吧,你只需添加一个ProxyPass设置。 mod_cluster与ProxyPass兼容,因此您可以同时使用它们。

例如,如果我希望gif图像由httpd而不是AS7提供,我可以添加:

ProxyPassMatch ^(/.*\.gif)$ !  

此外,如果你设置

CreateBalancers 1

mod_cluster不会为您创建代理,您必须自己创建代理。这为您提供了额外的控制。例如:

ProxyPassMatch ^/static/ !
ProxyPass / balancer://qacluster stickysession=JSESSIONID|jsessionid nofailover=on
ProxyPassReverse / balancer://qacluster
ProxyPreserveHost on

在上述示例中,我们向工作人员代理除/ static / content之外的任何内容。

  • 注意:如果您遇到任何与Cookie相关的问题,您可能需要使用ProxyPassReverseCookieDomain和ProxyPassReverseCookiePath。

  • 在我的配置中注意 qacluster 。默认为 mycluster ,因此,为了命名我的balancer qacluster,我将其添加到mod_cluster配置(在VirtualHost之外):

    ManagerBalancerName qacluster
    

如果不清楚,只需回复,我可以尝试进一步详细说明。

答案 1 :(得分:0)

我遇到了同样的问题,我们使用Apache HTTP服务器获取静态内容,使用JBOSS AS 7服务器获取动态内容(JSF Web应用程序)。

因此,在Load模块的末尾添加以下属性告诉

CreateBalancers 0   

告诉“0:在httpd中定义的所有VirtualHosts中创建。”

更多信息:http://docs.jboss.org/mod_cluster/1.2.0/html/native.config.html#d0e485

以下配置解决了图像和样式表无法显示的问题。

<VirtualHost *:80>
  ServerName dev.rama.com
  DocumentRoot "/var/www/assests"
  UseAlias 1
  ProxyPassMatch ^(.*\.bmp)$ !
  ProxyPassMatch ^(.*\.css)$ !
  ProxyPassMatch ^(.*\.gif)$ !
  ProxyPassMatch ^(.*\.jpg)$ !
  ProxyPassMatch ^(.*\.js)$ !
  ProxyPassMatch ^(.*\.png)$ !
 <Directory /var/www/assests>
   Options Indexes FollowSymLinks
   AllowOverride None
   Order allow,deny
   Allow from all
 </Directory>

注意: 我们对Web应用程序的所有声明都在HTTP服务器上 / var / www / assests和我访问的url是端口80上的dev.rama.com

所以当它看到 ProxyPassMatch ^(。*。css)$!时 网络服务器知道css文件是http服务器的本地文件,我们不需要去Jboss App服务器。

http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass

的更多信息