按源 IP 进行 Apache 平衡

H6.*_*H6. 3 proxy load-balancing apache-2.2

我正在使用 Apache 的代理平衡器来平衡一个子域(例如 subdomain.domain.com)到位于 2 个服务器上的应用程序。这是我的 Apache 配置文件的摘录:

<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

<Proxy balancer://cluster1>
    BalancerMember http://server1:28081 route=w1
    BalancerMember http://server2:28082 route=w2
</Proxy>

ProxyPass /path balancer://cluster1/path
ProxyPassReverse /path balancer://cluster1/path
Run Code Online (Sandbox Code Playgroud)

我的问题是,是否可以决定BalancerMember用于请求的源 IP 地址?例如,从 1.2.3.4 向成员 1 提出请求

Chr*_*s S 5

不会。代理平衡器模块将仅基于两个因素将请求传递给成员:

  1. 如果请求具有指定成员的粘性 cookie,则请求将转发给该成员(如果可用)。但是,看起来您没有配置此选项。
  2. 否则将根据分发算法转发请求。共有三种可配置的算法,它们是简单循环、最少流量(字节)和最少请求(都有可用的权重)。

您可以通过 cookie 启用粘性会话。您想如何执行此操作可能取决于您的后端,除非您希望 Apache 添加另一个 cookie,而不管后端在做什么。

旁注: HAProxySquidNginx都非常擅长负载平衡和缓存。Apache 的代理模块通常足以应付轻负载和中等负载,而且您似乎已经熟悉它。Apache 的缺点是它就像一把瑞士刀:做任何事情都相当好,做任何事情都不是特别好,而且有点笨重。使用像CARP这样的地址冗余系统将允许 Linux 或 BSD 机器也成为一个高可用的代理平衡器。