Proxy

按源 IP 進行 Apache 平衡

  • April 18, 2012

我正在使用 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

我的問題是,是否可以決定BalancerMember應該用於請求的源 IP 地址?例如從 1.2.3.4 到成員 1 的請求

不會。代理平衡器模組將僅基於兩個因素將請求傳遞給成員:

  1. 如果請求具有指定成員的粘性 cookie,則請求將轉發給該成員(如果可用)。但是,您似乎沒有配置此功能。
  2. 否則請求將根據分發算法轉發。共有三種可配置算法,它們是簡單循環、最少流量(字節)和最少請求(都有可用的權重)。

您可以通過 cookie 啟用粘性會話。您希望如何執行此操作可能取決於您的後端,除非您希望 Apache 添加另一個 cookie 而不管後端在做什麼。

旁注: HAProxySquidNginx都非常擅長負載平衡和記憶體。不過,Apache 的代理模組通常足以應付輕負載和中負載,而且聽起來您已經熟悉它了。Apache 的缺點是它就像一把瑞士刀:一切都做得相當好,沒有做得特別好,而且有點笨重。使用像CARP這樣的地址冗餘系統將允許 Linux 或 BSD 機器成為高可用性代理平衡器。

引用自:https://serverfault.com/questions/330128