透過Apache的Proxy模組設定IIS的NLB

1. 至http://httpd.apache.org/download.cgi下載Apache HTTP Server (以2.2.4版為例).
2. 安裝Apache HTTP Server.
3. 修改Apache2.2confhttpd.conf, 將以下的#刪除, 使其在啟動後運作.
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#引用Apache的Virtual Hosts設定
Include conf/extra/httpd-vhosts.conf
4. 編輯Apache2.2confextrahttpd-vhosts.conf, 如下:
NameVirtualHost *
<VirtualHost *>
ServerName www.example.com
ServerAlias example.com
DocumentRoot C:JavaApache2.2conf
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
#Proxy的Pattern, 以下將把"/", 交由"balancer://iiscluster/"處理
#詳細說明可至:http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
ProxyPass / balancer://iiscluster/ stickysession=MYCOOKIE nofailover=On
ProxyPassReverse / balancer://iiscluster
<Proxy balancer://iiscluster>
#load balance的主機URL
  #route是load balance的worker name, 及後續要在IIS設定Session ID的參數
  #loadfactor是數字1-100的權重, 數字越大loading將越重
BalancerMember http://192.168.1.2 route=node1 loadfactor=1
BalancerMember http://192.168.1.3 route=node2 loadfactor=1
#load balance的方式(byrequests, bytraffic)
ProxySet lbmethod=byrequests
</Proxy>
#加入此設定, 將來可至http://…../balancer-manager/下, 監視load balance的狀態
<Location /balancer-manager>
SetHandler balancer-manager
Order deny,allow
Allow from all
</Location>
</VirtualHost>
5. 設定IIS的Header:
5.1 開啟IIS管理畫面, 在[網站]或其下的[WebApplication]點選[內容].
5.2 在[HTTP標頭]頁籤中, 按下[自訂HTTP標頭]的[新增]按鈕.
5.3 [自訂標頭名稱]輸入:"Set-Cookie"
5.4 [自訂標頭值]輸入:"MYCOOKIE=iiscluster.node1; path=/;"
*請對照第4步ProxyPass的stickysession=MYCOOKIE, 以及<Proxy>中的
route=node1, route=node2分別設定192.168.1.2與192.168.1.3的IIS
6.重新啟動IIS與Apache即可.
7.若要Debug, 可在<VirtualHost *> 中加入:
LogLevel debug