标签: mod-proxy-balancer

Apache + Tomcat - 粘性会话和负载平衡问题

我面临着关于粘性会话的Apache mod_proxy_balancer的一些问题.

我们在Java上开发了一个在Tomcat上运行的restful webservice.实际的后端使用Acegi安全性,使用Auth Basic身份验证.

架构是(抱歉,我是新用户,我无法发布图片):

     --------------------
     |Java Reverse Proxy|
     --------------------
            |
     --------------------
     |Apache load balancer|
     --------------------               
            |
    --------|--------
    |               |
--------        --------    
|tomcat1|       |tomcat2|
--------        --------    
Run Code Online (Sandbox Code Playgroud)

我们有这个"Java反向代理"来执行各种业务.它还在Tomcat(Tomcat1,Tomcat2)上执行基本身份验证.

最终用户调用以下URL:http:/// a/b?username = foo&password = bar&session = xxx

然后,反向代理将请求代理到Apache,并将凭据作为Basic Auth令牌发送.

最终用户有三个不同的网址:

http://<java reverse proxy domain>/service1
http://<java reverse proxy domain>/service2
http://<java reverse proxy domain>/service3
Run Code Online (Sandbox Code Playgroud)

只有service1和service2受Acegi保护.service3是匿名访问的(这是一项要求).

我们在Apache中有以下配置来执行负载平衡:

<Proxy balancer://cluster>
    Header set Cache-Control no-cache
    Header set Pragma no-cache
    BalancerMember http://xxx:9671 route=server1
    BalancerMember http://xxx:9672 route=server2
</Proxy>

ProxyPreserveHost On
ProxyPass / balancer://cluster/ stickysession=JSESSIONID
ProxyPassReverse / balancer://cluster/ stickysession=JSESSIONID …
Run Code Online (Sandbox Code Playgroud)

java apache tomcat load-balancing mod-proxy-balancer

14
推荐指数
1
解决办法
2万
查看次数

httpd mod_proxy_balancer故障转移failonstatus - 透明切换

我使用mod_proxy_balancer来管理后端服务器的故障转移.后端服务器可能会返回错误代码,而不是在某些其他后端服务失败时(例如NFS)超时,我们希望此类服务器也被标记为失败的节点.因此我们使用failonstatus指令.

<Proxy balancer://avatar>
    ProxySet failonstatus=503 
    BalancerMember http://active/ retry=30
    # the hot standby
    BalancerMember http://standby/ status=+H retry=0
</Proxy>
Run Code Online (Sandbox Code Playgroud)

目前,故障转移与一个故障完美配合.当活动节点发生故障时,用户会收到503错误,并且从下一个请求中,备用服务器将接管.

我甚至不希望一个请求失败.无法将mod_proxy故障转移到客户端并返回错误?如果活动节点出现故障,我希望mod_proxy为同一个请求尝试待机,而不仅仅是后续请求!

apache failover reverse-proxy mod-proxy mod-proxy-balancer

9
推荐指数
1
解决办法
1万
查看次数

Apache 2.4 + php-fpm - AH01071:收到错误'主要脚本未知\n'mod_proxy_balancer

我在我的Ubuntu 14.04中使用php-fpm 5.5.9配置Apache 2.4.9.我想要的是为php-fpm请求制作一个平衡器,但它会抛出以下错误:

AH01071: Got error 'Primary script unknown\n'

当我尝试访问我的PHP文件.似乎代理平衡器不会抓取ProxyPassMatch传递给它的文档根目录.我正在使用UDS使apache访问php-fpm套接字而不是使用网络tcp.

如果我配置它没有平衡器,一切正常.

作品

ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/var/run/php5-fpm.sock1|fcgi://./var/www/html
Run Code Online (Sandbox Code Playgroud)

不工作

ProxyPassMatch ^/(.*\.php(/.*)?)$ balancer://localhost/var/www/html
<Proxy balancer://localhost/>
    BalancerMember unix:/var/run/php5-fpm.sock1|fcgi://localhost:9001
    BalancerMember unix:/var/run/php5-fpm.sock2|fcgi://localhost:9002
    BalancerMember unix:/var/run/php5-fpm.sock3|fcgi://localhost:9003
    BalancerMember unix:/var/run/php5-fpm.sock4|fcgi://localhost:9004
</Proxy>
Run Code Online (Sandbox Code Playgroud)

这是平衡器的配置日志:

[Sun Jun 15 12:32:30.839726 2014] [authz_core:debug] [pid 12217:tid 140330025703168] mod_authz_core.c(828): [client 10.1.1.2:52526] AH01628: authorization result: granted (no directives)
[Sun Jun 15 12:32:30.839899 2014] [lbmethod_byrequests:debug] [pid 12217:tid 140330025703168] mod_lbmethod_byrequests.c(97): AH01207: proxy: Entering byrequests for BALANCER (balancer://localhost)
[Sun Jun 15 12:32:30.839915 2014] [lbmethod_byrequests:debug] [pid 12217:tid 140330025703168] mod_lbmethod_byrequests.c(144): AH01208: proxy: byrequests …
Run Code Online (Sandbox Code Playgroud)

php mod-proxy mod-proxy-balancer apache2.4

9
推荐指数
1
解决办法
1万
查看次数

Apache HTTPD/mod_proxy/Tomcat和SSL与客户端身份验证

我确定这是一个FAQ,但我找不到任何我认为是同一个问题的东西.

我在Tomcat中运行了几个web应用程序,其中一些页面例如由SSL保护的登录页面,由web.xmls中的机密性元素定义.其中一个应用程序还通过证书接受客户端身份验证.我还有一个相当广泛的基于JAAS的授权和认证方案,各种webapps之间有各种共享代码和不同的JAAS配置等.

在完成下面的任务时,我真的不想打扰任何一个.

我现在正在添加更多Tomcat实例之前,在Tomcat之前插入带有mod-proxy和mod-proxy-balancer的Apache HTTPD作为负载均衡器.

我想要为HTTPS请求完成的是,它们被"盲目"重定向到Tomcat而没有HTTPD作为SSL端点,即HTTPD只是将密文直接传递给Tomcat,以便TC可以继续执行它已经在使用登录,SSL,Web做的事情.xml保密,最重要的是客户端身份验证.

这可能与我描述的配置有关吗?

我对webapps以及SSL和HTTPS以及Tomcat非常熟悉,但我对Apache HTTPD外围的了解有限.

很高兴在必要时移动它,但它是一种使用配置文件进行编程;)

apache ssl tomcat mod-proxy mod-proxy-balancer

6
推荐指数
1
解决办法
1万
查看次数