使用proxy_balancer进行Apache负载平衡

时间:2017-10-01 19:23:23

标签: apache vhosts mod-proxy-balancer

我在配置apache 2.4时遇到困难,无法使用它的proxy_balancer mod。我的用例非常简单。请求到达apache节点,该节点应该负载平衡到群集。这是我的... websocketServer.on('connection', (connection, req) => { ... connection.on('message', (message) => { let user = global.users[JSON.parse(message).username] if (user) { user.websocketConnection = connection ... } ... } ... } ...

config

导航到<VirtualHost *:80> ProxyRequests off ServerName localhost <Proxy balancer://geocode> BalancerMember "http://192.168.2.11:8080/ors/status" BalancerMember "http://192.168.2.35:8080/ors/status" Require all granted ProxySet lbmethod=byrequests </Proxy> <Location /balancer-manager> SetHandler balancer-manager Require all granted </Location> ProxyPass /balancer-manager ! ProxyPass "/geocodelb" "balancer://geocode" ProxyPass "/geocode" "http://192.168.2.35:8080/ors/status" </VirtualHost> 时,我收到localhost:80/geocodelb

404 Not Found

129.206.205.50 - - [01/Oct/2017:19:39:55 +0000] "GET /geocodelb HTTP/1.1" 404 164 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:56.0) Gecko/20100101 Firefox/56.0" 有效:

localhost:80/geocode

129.206.205.50 - - [01/Oct/2017:19:40:07 +0000] "GET /geocode HTTP/1.1" 200 757 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:56.0) Gecko/20100101 Firefox/56.0" 指向一个tomcat实例并返回一个json对象)

如果我用一些任意的东西替换BalancerMembers的url - 比如../status - 它有效。

我也可以通过google.com联系平衡器经理并获取正确的信息。如果我没有弄错的话,它告诉我一切看起来都不错(见截图)。我在这里缺少什么?

enter image description here

1 个答案:

答案 0 :(得分:0)

这不起作用的原因是balancermember必须是服务器的url,没有路径。该路径将添加到ProxyPass指令中,如此balancer://orsbackend/ors/geocode。这是工作配置:

<VirtualHost *:80>

        ProxyRequests off

        ServerName localhost

        <Proxy balancer://orsbackend>
                BalancerMember "http://192.168.2.11:8080"
                BalancerMember "http://192.168.2.35:8080"
                ProxySet lbmethod=byrequests
        </Proxy>

        <Location /balancer-manager>
                SetHandler balancer-manager

                Require all granted
        </Location>

        ProxyPass /balancer-manager !

        ProxyPass "/geocode" "balancer://orsbackend/ors/geocode"

</VirtualHost>