Proxy
按源 IP 進行 Apache 平衡
我正在使用 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 的請求?
不會。代理平衡器模組將僅基於兩個因素將請求傳遞給成員:
- 如果請求具有指定成員的粘性 cookie,則請求將轉發給該成員(如果可用)。但是,您似乎沒有配置此功能。
- 否則請求將根據分發算法轉發。共有三種可配置算法,它們是簡單循環、最少流量(字節)和最少請求(都有可用的權重)。
您可以通過 cookie 啟用粘性會話。您希望如何執行此操作可能取決於您的後端,除非您希望 Apache 添加另一個 cookie 而不管後端在做什麼。
旁注: HAProxy、Squid和Nginx都非常擅長負載平衡和記憶體。不過,Apache 的代理模組通常足以應付輕負載和中負載,而且聽起來您已經熟悉它了。Apache 的缺點是它就像一把瑞士刀:一切都做得相當好,沒有做得特別好,而且有點笨重。使用像CARP這樣的地址冗餘系統將允許 Linux 或 BSD 機器成為高可用性代理平衡器。