我需要 Apache LoadBalancer 配置

我需要 Apache LoadBalancer 配置

我需要以下拓扑的负载均衡器配置,我测试了以下配置,但“myappcluster1”部分始终在运行。我无法在部分内附加 ProxyPass,它给出错误“>>ProxyPass 不能在部分内发生”。我在 Windows 2012R2 上使用 Apache httpd-2.4.29-x64-vc11-r3。如何做到这一点,谢谢

<IfModule proxy_ajp_module>
<Proxy balancer://myappcluster1>
        BalancerMember ajp://Server1:8009 route=myapp1
        BalancerMember ajp://Server2:8009 route=myapp2
        BalancerMember ajp://Server3:8009 route=myapp3
</Proxy>
<Proxy balancer://myappcluster2>
        BalancerMember ajp://Server4:8009 route=myapp4
        BalancerMember ajp://Server5:8009 route=myapp5
</Proxy>
<Location "/myapp">
    # I tried these
    # <If "%{REMOTE_ADDR} -ipmatch '172.16.0.11'">
    # <If "-R '172.16.0.0/24'">
    <If "-R '172.16.0.11'"> 
        define clustername myappcluster2
        ProxyPass balancer://${clustername}/
    </If>
    <Else>
        define clustername myappcluster1
    </Else>
    ProxyPass balancer://${clustername}/
</Location>

LoadBalancer 拓扑

答案1

无法定义 ProxyPass指令如果指令。

因此,对于这种情况,您可能需要改用 mod_rewrite。另外,无需使用 Location。

更改整个位置以执行您要的操作,在虚拟主机中定义它,它看起来比您刚才尝试的更简单:

RewriteEngine on
RewriteCond %{REMOTE_ADDR} ^172\.16\.0\.11
RewriteRule ^/myapp/(.*) balancer://myappcluster2/$1 [P,L]
RewriteRule ^/myapp/(.*) balancer://myappcluster1/$1 [P,L]

解释,如果条件匹配则使用 cluster2,否则使用 cluster1。根据需要进行调整。

笔记:您可能需要稍后添加几个 ProxyPassReverse 条目,具体取决于后端发送重定向是否需要更改。

相关内容