Apache-2.2

使用 Apache Proxy Balancer 為多個站點提供服務

  • March 5, 2010

我有一種情況,我用 Apache2 和 mod-balancer 設置了一個負載平衡器,它將對兩個 Apache2 Web 伺服器進行負載平衡。我希望我的負載均衡器能夠為多個站點提供服務,但目前我創建的每個虛擬主機似乎都在為同一個站點提供服務。

在負載均衡器 (lb1) 上,我default啟用了虛擬主機,因此當您瀏覽到負載均衡器 IP 地址時,您會看到標準的 Apache2 消息。

以下是我用於負載均衡器可以服務的所有後續域的虛擬主機佈局(mydomain.com當然要替換實際域名):

<VirtualHost *>
       ServerName www.mydomain.com
       ServerAlias mydomain.com

       ProxyRequests Off

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

       <Proxy balancer://mydomain.com.cluster>
               BalancerMember http://web1.mycluster.com:80 route=web1 retry=5
               BalancerMember http://web2.mycluster.com:80 route=web2 retry=5
               ProxySet lbmethod=byrequests
       </Proxy>

       ProxyPass / balancer://mydomain.com.cluster/ stickysession=BALANCEID n$

       ProxyPassReverse / http://web1.mycluster.com/
       ProxyPassReverse / http://web2.mycluster.com/
</VirtualHost>

這就是 Web 伺服器 ( web1& web2) 端的虛擬主機的樣子。兩個 Web 伺服器都啟用了相同的虛擬主機。虛擬主機之間的唯一區別是對其中一個web1web2分別的引用(我在這裡展示了虛擬主機web1):

<VirtualHost *>
       ServerName www.mydomain.com
       ServerAlias mydomain.com

       RewriteEngine On
       RewriteRule .* - [CO=BALANCEID:balancer.web1:.mydomain.com]

       DocumentRoot /mnt/share/mydomain.com/www/public_html

       <Directory />
               Order allow,deny
               Allow from all
       </Directory>
</VirtualHost>

這似乎適用於mydomain.com. 如果我創建另一個具有相同佈局的虛擬主機,例如,myotherdomain.com然後瀏覽myotherdomain.com將實際服務mydomain.com

我做錯了什麼?

您可能需要在某處使用 NameVirtualHost 指令,否則請求僅與伺服器 IP 地址匹配,並且與此 IP 匹配的第一個 VirtualHost 將“獲勝”(因此第一個總是獲勝)。

至少,幾年前它是這樣工作的,那時我更多地與 Apache 打交道。

Jaccek Konieczny是對的,我終於發現了問題所在。我想詳細說明一下。看來這與我如何配置我的虛擬主機有關,並且它總是在任一負載平衡伺服器上選擇預設主機。這就是我最終設置虛擬主機的方式:

對於預設虛擬主機:

NameVirtualHost *:80
<VirtualHost *:80>

 # vhost stuff

</VirtualHost>

然後對於其他虛擬主機:

<VirtualHost *:80>
 ServerName mydomain.com
 ServerAlias www.mydomain.com

 # forward proxy stuff

</VirtualHost>

除了設置了 BALANCEID cookie 之外,所有 Web 伺服器節點都被配置為獨立機器。

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