【问题标题】:Apache mod-proxy load balancer maintenanceApache mod-proxy 负载均衡器维护
【发布时间】:2010-10-30 20:59:16
【问题描述】:

我将 mod-proxy 和 mod-proxy-balancer 设置为负载平衡反向代理。像这样的:

<Proxy balancer://example>
    BalancerMember http://hostname:8000 keepalive=on
    BalancerMember http://hostname:8001 keepalive=on
</Proxy>

ProxyPass / balancer://example/
ProxyPassReverse / balancer://example/
ProxyPreserveHost on
ProxyRequests Off

有没有一种简单的方法来设置它以在平衡器组的所有成员都关闭时显示静态维护页面?我以前用硬件负载平衡器做过这个,它非常有用。

【问题讨论】:

    标签: apache mod-proxy


    【解决方案1】:

    由于您的代理似乎是唯一的页面(可能在 VirtualHost 中),您可以简单地覆盖错误页面。 Apache 会产生 503 错误,因此如下所示:

    # Document root is required because error documents use relative paths 
    DocumentRoot /var/www/html/
    # Allow access to document root directory
    <Directory /var/www/html/>
      Order allow,deny
      allow from all
    </Directory>
    # Actual change: If service is unavailable (no member available), show this page
    ErrorDocument 503 /maintenance.html
    

    如果您想在维护 html 中使用图片,请不要使用绝对路径(例如 /image.jpg)会加载 /var/www/html/image.jpg。

    【讨论】:

      【解决方案2】:

      作为 RewriteRule 的替代方法,您可以使用适当的 ErrorDocument 指令执行相同的操作。我们做了这样的事情,其中​​代理服务器本身托管静态错误页面,“热备用”主机是http://localhost/some-app/

      【讨论】:

        【解决方案3】:

        也许您可以使用热备份。下面的示例来自ProxyPass Directive 部分,其中显示“设置热备用,仅在没有其他成员可用时使用”

        ProxyPass / balancer://hotcluster/
        <Proxy balancer://hotcluster>
        BalancerMember http://1.2.3.4:8009 loadfactor=1
        BalancerMember http://1.2.3.5:8009 loadfactor=2
        # The below is the hot standby
        BalancerMember http://1.2.3.6:8009 status=+H
        ProxySet lbmethod=bytraffic </Proxy>
        

        【讨论】:

        • 这是个好主意,但要充分发挥作用,它必须与“备用”成员忽略 URL 路径的重写规则相结合。
        猜你喜欢
        • 1970-01-01
        • 2015-11-27
        • 2021-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-12
        • 2017-05-09
        • 2014-09-12
        相关资源
        最近更新 更多