我有一个Jboss场,通过Apache HTTP + mod_proxy_balancer和mod_proxy_ajp进行负载平衡,具有以下configuration:
<VirtualHost *:80> ServerName web-gui-acceptance.myorg.com ServerAlias web-gui-acceptance ProxyRequests Off ProxyPass /web-gui balancer://jbosscluster/web-gui stickysession=JSESSIONID nofailover=On ProxyPassReverse /web-gui http://srvlnx01.myorg.com:8080/web-gui ProxyPassReverse /web-gui http://srvlnx02.myorg.com:8080/web-gui <Proxy *> AuthType Kerberos [...] </Proxy> <Proxy balancer://jbosscluster> BalancerMember ajp://srvlnx01.myorg.com:8009 route=SRVLNX01_node1 BalancerMember ajp://srvlnx01.myorg.com:8009 route=SRVLNX02_node1 ProxySet lbmethod=byrequests </Proxy> </VirtualHost>
当第一个JBoss节点失败时(主机虚拟机closures),我现有的连接不会在第二个节点上失败……第一个路由被保存(在表/ .shm中),并且提供了503个错误。
有人能告诉我我错过了什么吗?
我可能find了一个解决方法,也处理部署/ undeployement: http ://www.jboss.org/mod_cluster
与其他基于httpd的负载均衡器相比,mod_cluster具有以下优点:
httpd worker的dynamicconfiguration
传统的基于httpd的负载平衡器需要显式configuration可用于代理的worker。 在mod_cluster中,代理configuration的大部分驻留在应用程序服务器上。 应用服务器将要与之通信的一组代理由静态列表或通过广告机制使用dynamic发现来确定。 应用程序服务器将生命周期事件(例如,服务器启动/closures)转发给代理,以允许它们自行有效地进行自动configuration。 值得注意的是,服务器的正常closures不会导致代理的故障切换响应,就像传统的基于httpd的负载均衡器一样。
服务器端负载平衡因子计算
与传统的基于httpd的负载均衡器相反,mod_cluster使用由应用服务器计算和提供的负载均衡因子,而不是在代理中计算这些负载均衡因子。 因此,mod_cluster提供了比代理可用的更加健壮和准确的负载指标集。 (有关更多信息,请参阅Load Metrics)
细粒度的Web应用程序生命周期控制
传统的基于httpd的负载均衡器不能很好地处理Web应用程序的取消部署。 从代理的angular度来看,对未被部署的Web应用程序的请求与对于不存在的资源的请求是不可区分的,将导致404错误。 在mod_cluster中,每个服务器将任何Web应用程序上下文生命周期事件(例如web-app deploy / undeploy)转发给代理,通知它启动/停止将给定上下文的请求路由到该服务器。
AJP是可选的
与mod_jk不同,mod_cluster不需要AJP。 到应用程序服务器节点的httpd连接可以使用HTTP,HTTPS或AJP。 最初的概念在wiki中描述。
我希望这会有所帮助。