本小節說明 HTTP 負載平衡外掛程式。其中包含以下主題︰
負載平衡器嘗試在多個應用程式伺服器實例 (獨立或叢集) 之間平均分散工作負荷量,從而增加了系統的總流量。
使用負載平衡器還可以滿足從一個伺服器實例容錯移轉到另一個伺服器實例的請求。對於要持續的 HTTP 階段作業資訊,請配置 HTTP 階段作業持續性。如需更多資訊,請參閱第 8 章, 配置高可用性階段作業持續性和容錯移轉。
如需有關配置負載平衡的完整說明,請參閱「Sun Java System Application Server 高可用性管理指南」。
使用 asadmin 工具而非管理主控台配置 HTTP 負載平衡。
另請參閱:
首次從 HTTP 用戶端傳入負載平衡器的請求為新階段作業的請求。新階段作業的請求稱為未指定的請求。負載平衡器會根據循環演算法將此請求路由到叢集中的應用程式伺服器實例。
在某個應用程式伺服器實例中建立階段作業後,負載平衡器會將此階段作業的所有後續請求都路由到該特定實例而且僅路由到該實例。現有階段作業的請求稱為指定的請求或居留式請求。
Sun Java System Application Server 負載平衡器使用居留式循環演算法對內送 HTTP 和 HTTPS 請求進行負載平衡。給定階段作業的所有請求都將會傳送到同一個應用程式伺服器實例。使用居留式負載平衡器,階段作業資料將快取在單一應用程式伺服器上,而不會分布到叢集中的所有實例。
因此,居留式循環方案能夠帶來顯著的效能優勢,這種優勢通常超過了使用純循環方案所獲得的使負載更加平均分佈的優勢。
新 HTTP 請求傳送到負載平衡外掛程式後,系統將基於簡單的循環方案將該請求轉寄至某個應用程式伺服器實例。隨後,透過使用 Cookie 或明確的 URL 重新寫入將該請求「居留」在此特定的應用程式伺服器實例上。
從居留式資訊中,負載平衡器外掛程式將首先確定請求先前轉寄到的實例。如果發現該實例正常工作,負載平衡器外掛程式會將請求轉寄至該特定應用程式伺服器實例。因此,給定階段作業的所有請求都將會傳送到同一個應用程式伺服器實例。
負載平衡器外掛程式使用以下方法來確定階段作業居留性:
Cookie 方法︰負載平衡器外掛程式使用一個單獨的 Cookie 來記錄路由資訊。若要使用基於 Cookie 的方法,HTTP 用戶端必須支援 Cookie。
明確的 URL 重新寫入︰居留式資訊會附加至 URL。即使 HTTP 用戶端不支援 Cookie,也可以使用此方法。
以下目錄包含用於演示負載平衡和容錯移轉的範例應用程式:
install_dir/samples/ee-samples/highavailability install_dir/samples/ee-samples/failover
ee-samples 目錄還包含設定環境以執行範例的資訊。
本小節說明如何設定負載平衡外掛程式,其中包含以下小節︰
配置負載平衡器之前,您必須︰
安裝 Web 伺服器。
安裝負載平衡外掛程式。
如需有關安裝程序的資訊,請參閱 Sun Java System Application Server 安裝指南 (如果使用獨立應用程式伺服器) 或 Sun Java Enterprise System 安裝指南 (如果使用 Java Enterprise System)。
配置 Web 伺服器。如需更多資訊,請參閱配置 Web 伺服器以用於負載平衡。
建立要參與負載平衡的 Application Server 叢集或伺服器實例。
將應用程式部署至這些叢集或實例。
您可以使用不同的方式配置負載平衡器 (視目標和環境而定),如以下小節中所述︰
部署負載平衡器的最常用方法是使用伺服器實例的一個或多個叢集。依預設,叢集中的所有實例都具有相同的配置,而且這些實例中都部署了相同的應用程式。負載平衡器可在伺服器實例之間分散工作負荷量,並可發出從異常實例向正常實例執行容錯移轉的請求。如果您已配置了 HTTP 階段作業持續性,則在對請求執行容錯移轉時,階段作業資訊會持續。
如果您有多個叢集,則請求僅會在單一叢集的實例之間進行負載平衡和容錯移轉。在負載平衡器中使用多個叢集可簡化應用程式的輪替式升級。如需更多資訊,請參閱在不遺失可用性的情況下升級應用程式。
您也可以將負載平衡器配置為使用獨立伺服器實例,而非叢集。此配置可讓負載平衡外掛程式做為反向代理外掛程式 (有時稱為通道外掛程式) 工作。當 Web 伺服器接收到在負載平衡器中啟用的應用程式之請求時,會將請求直接轉寄至應用程式伺服器。
為通道外掛程式配置負載平衡器的程序與為伺服器實例的叢集配置負載平衡器的程序相同。
也可將負載平衡器配置為使用多個獨立的實例,並在這些實例之間對請求進行負載平衡和容錯移轉。但是,在此配置中,您必須手動確定獨立實例具有同質環境,並且這些實例已部署了相同的應用程式。由於叢集會自動維護同質環境,因此大多數情況下,使用叢集會更加簡便有效。
使用 asadmin 工具可在您的環境中配置負載平衡。如需有關在這些步驟中所使用的 asadmin 指令的更多資訊,請參閱配置負載平衡器。
使用 asadmin 指令 create-http-lb-config 建立負載平衡器配置。
使用 asadmin create-http-lb-ref 為要管理的負載平衡器增加對叢集或獨立伺服器實例的參照。
如果您建立了具有目標的負載平衡器配置,並且該目標是負載平衡器參照的唯一叢集或獨立伺服器實例,請跳過此步驟。
使用 asadmin enable-http-lb-server 啟用負載平衡器參照的叢集或獨立伺服器實例。
使用 asadmin enable-http-lb-application 啟用要用於負載平衡的應用程式。
這些應用程式必須已在負載平衡器所參照的叢集或獨立實例上部署並可以使用。啟用應用程式以用於負載平衡與啟用以使用這些應用程式是兩個獨立的步驟。
使用 asadmin create-health-checker 建立運作狀態檢查程式。
運作狀態檢查程式監視工作異常的伺服器實例,以便在這些伺服器實例重新正常工作時,負載平衡器可以向它們傳送新的請求。
使用 asadmin export-http-lb-config 產生負載平衡器配置檔案。
此指令可產生要與 Sun Java System Application Server 隨附之負載平衡器外掛程式配合使用的配置檔案。
將負載平衡器配置檔案複製到 Web 伺服器的 config 目錄,該目錄中儲存了負載平衡器外掛程式配置檔案。
負載平衡外掛程式安裝程式將對 Web 伺服器的配置檔案進行一些修改。所作的變更取決於該 Web 伺服器。
負載平衡器外掛程式可隨 Sun Java System Application Server Enterprise Edition 一起安裝,也可在執行支援的 Web 伺服器的機器上單獨安裝。如需有關安裝程序的完整詳細資訊,請參閱「Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Installation Guide」中的第 1 章「Installing Application Server Software」(如果使用獨立的 Application Server) 或「Sun Java Enterprise System 2005Q5 Installation Guide」(如果使用 Java Enterprise System)。
安裝程式會將以下項目增加至 Sun Java System Web Server 的配置檔案︰
對於 Web 伺服器實例的 magnus.conf 檔案,會增加︰
##EE lb-pluginInit fn="load-modules" shlib="web_server_install_dir/plugins/lbplugin/bin/libpassthrough.so" funcs="init-passthrough,service-passthrough,name-trans-passthrough" Thread="no" Init fn="init-passthrough" ##end addition for EE lb-plugin
對於 Web 伺服器實例的 obj.conf 檔案,會增加︰
<Object name=default> NameTrans fn="name-trans-passthrough" name="lbplugin" config-file="web_server_install_dir/web_server_instance/config/loadbalancer.xml" <Object name="lbplugin"> ObjectType fn="force-type" type="magnus-internal/lbplugin" PathCheck fn="deny-existence" path="*/WEB-INF/*" Service type="magnus-internal/lbplugin" fn="service-passthrough" Error reason="Bad Gateway" fn="send-error" uri="$docroot/badgateway.html" </object>
在上述程式碼中,lbplugin 是 Object 的唯一識別名稱;web_server_install_dir/web_server_instance/config/loadbalancer.xml 是虛擬伺服器 (負載平衡器即配置要在此執行) 的 XML 配置檔案位置。
安裝之後,請依循設定 HTTP 負載平衡中的說明配置負載平衡器。
若要使用 Apache Web Server,您必須在安裝負載平衡外掛程式之前執行特定的配置步驟。負載平衡外掛程式安裝也會對 Apache Web Server 做出其他修改。安裝外掛程式後,必須執行其他配置步驟。
在 Apache 1.3 上,當多個 Apache 子程序執行時,每個程序都有自己的負載平衡循環序列。例如,如果有兩個 Apache 子程序正在執行,並且負載平衡器外掛程式在兩個應用程式伺服器實例上進行負載平衡,則第一個請求將傳送至實例 #1,第二個請求也將傳送至實例 #1。而第三個請求將傳送至實例 #2,第四個請求也將傳送至實例 #2。此模式會不斷重複 (實例 1、實例 1、實例 2、實例 2 等)。此運作方式可能與您預期的運作方式 (即,實例 1、實例 2、實例 1、實例 2 等) 不同。在 Sun Java System Application Server 中,用於 Apache 的負載平衡器外掛程式將為每個 Apache 程序創設一個負載平衡器實例,從而建立獨立的負載平衡順序。
如果使用 --with-mpm=worker 選項進行編譯,則 Apache 2.0 將具有多重執行緒運作方式。
對於 Apache Web Server,您的安裝必須滿足最小需求 (視 Apache 版本而定)。
對於 Apache 1.3,負載平衡外掛程式需要︰
openssl-0.9.7e (原始碼)
mod_ssl-2.8.16-1.3.x (原始碼),其中 x 表示 Apache 的版本。mod_ssl 的版本必須與 Apache 的版本相符。
gcc-3.3-sol9-sparc-local 套裝軟體 (適用於 Solaris SPARC)
gcc-3.3-sol9-intel-local 套裝軟體 (適用於 Solaris x86)
flex-2.5.4a-sol9-sparc-local 套裝軟體 (適用於 Solaris SPARC)
flex-2.5.4a-sol9-intel-local 套裝軟體 (適用於 Solaris x86)
軟體原始碼可從 http://www.sunfreeware.com 取得。
此外,在編譯 Apache 之前,請執行以下步驟:
在 Linux 平台上,在同一台機器上安裝 Sun Java System Application Server。
在 Solaris 作業系統上,確保 gcc 3.3 版和 make 均位於 PATH 中,並且已安裝 flex。
在 Solaris 10 作業系統上,對 OpenSSL 執行 make 之前,請先執行位於 /usr/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/install-tools (在 Solaris SPARC 上) 或位於 /usr/local/lib/gcc-lib/i386-pc-solaris2.9/3.3/install-tools (在 Solaris x86 上) 中的 mkheaders。
如果您要在 Red Hat Enterprise Linux Advanced Server 2.1 上使用 gcc,則 gcc 的版本必須在 3.0 以上。
若要使用 gcc 以外的 C 編譯器,請設定 C 編譯器的路徑並使公用程式位於 PATH 環境變數中。例如,對於 sh shell︰export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:appserver_installdir/lib
對於 Apache 2.0,負載平衡外掛程式需要︰
openssl-0.9.7e (原始碼)
httpd-2.0.49 (原始碼)
gcc-3.3-sol9-sparc-local 套裝軟體 (適用於 Solaris SPARC)。
gcc-3.3-sol9-intel-local 套裝軟體 (適用於 Solaris x86)
flex-2.5.4a-sol9-sparc-local 套裝軟體 (適用於 Solaris SPARC)
flex-2.5.4a-sol9-intel-local 套裝軟體 (適用於 Solaris x86)
軟體原始碼可從 http://www.sunfreeware.com 取得。
此外,在編譯 Apache 之前,請執行以下步驟:
在 Linux 平台上,在同一台機器上安裝 Sun Java System Application Server。
在 Solaris 作業系統上,確保 gcc 3.3 版和 make 均位於 PATH 中,並且已安裝 flex。
在 Solaris 10 作業系統上,對 OpenSSL 執行 make 之前,請先執行位於 /usr/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/install-tools (在 Solaris SPARC 上) 或位於 /usr/local/lib/gcc-lib/i386-pc-solaris2.9/3.3/install-tools (在 Solaris x86 上) 中的 mkheaders。
如果您要在 Red Hat Enterprise Linux Advanced Server 2.1 上使用 gcc,則 gcc 的版本必須在 3.0 以上。
若要使用 gcc 以外的 C 編譯器,請設定 C 編譯器的路徑並使公用程式位於 PATH 環境變數中。例如,對於 sh shell︰export LD_LIBRARY_PATH=app_server_install_dir/lib:$LD_LIBRARY_PATH。
為 Apache 安裝負載平衡外掛程式之前,請先安裝 Apache Web Server。必須編譯和建置 Apache 原始碼以使用 SSL 執行。本小節說明如欲順利編譯 Apache Web Server 以執行負載平衡器外掛程式,所需的最低需求和概略步驟。這些需求和步驟僅適用於此軟體的 Solaris 和 Linux 版本。如需有關 Apache 的 Windows 版本的資訊,請參閱 Apache 網站。
您必須已下載並解壓縮了 Apache 軟體。
下載和解壓縮 OpenSSL 原始碼。
編譯和建置 OpenSSL。
如果已安裝了 OpenSSL 0.9.7.e,則在 Linux 平台上無需執行此步驟。
輸入以下指令:
cd openssl-0.9.7e make make install |
如需有關 OpenSSL 的更多資訊,請參閱 http://www.openssl.org/。
依據 Apache 的版本,請執行以下程序之一︰
對於 Apache 1.3,請依循以下步驟使用 mod_ssl 配置 Apache︰
解壓縮 mod_ssl 原始碼。
cd mod_ssl-2.8.14–1.3.x
./configure –with-apache=../apache_1.3. x --with-ssl=../openssl-0.9.7e --prefix=install_path --enable-module=ssl --enable-shared=ssl --enable-rule=SHARED_CORE --enable-module=so
在上述指令中,x 為 Apache 的版本編號,install_path 為要在其中安裝 Apache 的目錄。
如需有關 mod_ssl 的更多資訊,請參閱 http://www.modssl.org。
對於 Apache 2.0,配置原始碼樹狀結構:
對於在 Linux 2.1 上執行的 Apache,編譯之前請:
開啟 src/MakeFile 並尋找自動產生的區段的結束位置。
在自動產生的區段之後的前四行的後面增加以下行:
LIBS+= -licuuc -licui18n -lnspr4 -lpthread -lxerces-c -lsupport -lnsprwrap -lns-httpd40 LDFLAGS+= -L/appserver_installdir/lib -L/opt/sun/private/lib
請注意,只有將應用程式伺服器安裝至 Java Enterprise System 底下時,才需要 -L/opt/sun/private/lib。
例如︰
## (End of automatically generated section) ## CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) LIBS=$(EXTRA_LIBS) $(LIBS1) INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) "LIBS+= -licuuc -licui18n -lnspr4 -lpthread -lxerces-c -lsupport -lnsprwrap -lns-httpd40 LDFLAGS+= -L/appserver_installdir /lib -L/opt/sun/private/lib
設定環境變數 LD_LIBRARY_PATH。
對於所有安裝,請將其設定為︰appserver_install_dir/lib
針對 Java Enterprise System 安裝,請將其設定為 appserver_install_dir/lib:opt/sun/private/lib。
按照適用於您所使用之版本的安裝說明編譯 Apache。
如需更多資訊,請參閱 http://httpd.apache.org/。
一般來說,這些步驟包括:
為您的環境配置 Apache。
負載平衡外掛程式安裝程式將必要檔案擷取至 Web 伺服器根目錄中的目錄︰
對於 Apache 1.3,目錄為 libexec。
對於 Apache 2.0,目錄為 modules。
安裝程式會將以下項目增加至 Web 伺服器實例的 httpd.conf 檔案︰
<VirtualHost machine_name:443> ##Addition for EE lb-plugin LoadFile /usr/lib/libCstd.so.1 LoadModule apachelbplugin_module libexec/mod_loadbalancer.so #AddModule mod_apachelbplugin.cpp <IfModule mod_apachelbplugin.cpp> config-file webserver_instance/conf/loadbalancer.xml locale en </IfModule> <VirtualHost machine_ip_address> DocumentRoot "webserver_instance/htdocs" ServerName server_name </VirtualHost> ##END EE LB Plugin ParametersVersion 7
Apache Web Server 必須具有正確的安全性檔案才能與負載平衡外掛程式一起正常工作。
在 apache_install_dir 下建立一個名為 sec_db_files 的目錄。
將 application_server_domain_dir/config/*.db 複製到 apache_install_dir/sec_db_files。
視平台而定,執行其他配置。
若要配置 Microsoft 網際網路資訊服務 (IIS),以使用負載平衡外掛程式,請在 Windows 網際網路服務管理員中修改某些特性。網際網路服務管理程式位於 [控制台] 資料夾內的 [管理工具] 資料夾中。
安裝 Sun Java System Application Server 之後請進行以下修改。
開啟網際網路服務管理程式。
選取您要為之啟用外掛程式的網站。
此網站通常命名為「預設網站」。
在網站上按一下滑鼠右鍵,選取 [特性] 以開啟 [特性] 筆記本。
依循以下步驟,增加新的 ISAPI 篩選器︰
建立並配置新的虛擬目錄:
將 sun-passthrough.dll 檔案的路徑和 application_server_install_dir/bin 增加至系統的 PATH 環境變數。
重新啟動機器。
停止然後啟動 Web 伺服器以使新設定生效。
若要停止 Web 伺服器,請在此網站上按一下滑鼠右鍵,然後選取 [Stop]。若要啟動 Web 伺服器,請在此網站上按一下滑鼠右鍵,然後選取 [Start]。
確認 Web 伺服器、負載平衡器外掛程式和 Application Server 是否正常作業。
在 Web 瀏覽器中鍵入以下 URL,以存取 Web 應用程式環境根目錄︰http://webserver_name/web_application,其中,webserver_name 為 Web 伺服器的主機名稱或 IP 位址,web_application 為在 C:\Inetpub\wwwroot\sun-passthrough\sun-passthrough.properties 檔案中列示的環境根目錄。
安裝程式將自動配置 sun-passthrough.properties 中的下列特性。您可以變更預設值。
特性 |
定義 |
預設值 |
---|---|---|
lb-config-file |
負載平衡器配置檔案的路徑 |
IIS_www_root\sun-passthrough \loadbalancer.xml |
log-file |
負載平衡器記錄檔的路徑 |
IIS_www_root\sun-passthrough\lb.log |
log-level |
Web 伺服器的記錄層級 |
資訊 |
Sun Java System Application Server 安裝程式不允許在單一機器上安裝多個負載平衡外掛程式。若要在單一叢集或多個叢集中的單一機器上安裝多個帶有負載平衡器外掛程式的 Web 伺服器,需要手動執行一些步驟來配置負載平衡器外掛程式。
配置新的 Web 伺服器實例以使用負載平衡外掛程式。
請執行對 Sun Java System Web Server 的修改、使用 Apache Web Server或安裝中的步驟。
複製 DTD 檔案。
從現有 Web 伺服器實例的 config 目錄中,將 sun-loadbalancer_1_1.dtd 複製到新實例的 config 目錄中。
設定負載平衡器配置檔案。或者︰
複製現有負載平衡器配置。
使用現有負載平衡器配置,從現有 Web 伺服器實例的 config 目錄中,將 loadbalancer.xml 檔案複製到新實例的 config 目錄中。
建立新的負載平衡器配置:
使用 asadmin create-http-lb-config 建立新的負載平衡器配置。
使用 asadmin export http-lb-config 將新配置匯出至 loadbalancer.xml 檔案中。
將該 loadbalancer.xml 檔案複製至新 Web 伺服器的 config 目錄中。
如需有關建立負載平衡器配置並將其匯出至 loadbalancer.xml 檔案的資訊,請參閱建立 HTTP 負載平衡器配置。
負載平衡器配置為 domain.xml 檔案中已命名的配置。負載平衡器配置非常靈活:
儘管每個負載平衡器只有一個負載平衡器配置,但每個負載平衡器配置可以關聯多個負載平衡器。
儘管一個網域可以關聯多個負載平衡器,但一個負載平衡器只為一個網域服務。
本小節說明如何建立、修改和使用負載平衡器配置,其中包含以下主題︰
使用 asadmin 指令 create-http-lb-config 建立負載平衡器配置。建立 HTTP 負載平衡器配置說明負載平衡器參數。如需更多資訊,請參閱 create-http-lb-config、delete-http-lb-config 和 list-http-lb-configs 的文件。
表 4–1 負載平衡器配置參數
參數 |
說明 |
---|---|
response timeout |
伺服器實例必須傳回回應的時間段 (以秒為單位)。如果在該時間段內未收到任何回應,則認為伺服器處於異常狀態。預設值為 60。 |
對負載平衡器的 HTTPS 請求是否產生對伺服器實例的 HTTPS 或 HTTP 請求。如需更多資訊,請參閱配置 HTTPS 路由。 |
|
reload interval |
檢查負載平衡器配置檔案 loadbalancer.xml 有無變更的檢查時間間隔。當檢查偵測到變更時,系統將重新載入配置檔案。將值設定為 0 可停用重新載入。如需更多資訊,請參閱啟用動態重新配置。 |
monitor |
是否對負載平衡器啟用監視功能。 |
負載平衡外掛程式用於記錄路由資訊的 Cookie 的名稱。HTTP 用戶端必須支援 Cookie。如果您的瀏覽器設定為在儲存 Cookie 前詢問,則 Cookie 的名稱為 JROUTE。 |
|
target |
當您在負載平衡器中建立對獨立伺服器或叢集的參照時,會將該伺服器或叢集增加至負載平衡器所控制的目標伺服器和叢集的清單中。仍需要先啟用所參照的伺服器或叢集 (使用 enable-http-lb-server),然後才能對向該伺服器或叢集發出的請求執行負載平衡。如果建立了帶有目標的負載平衡器配置,則系統已增加了作為參照的該目標。
使用 create-http-lb-ref 建立參照。您必須提供負載平衡器配置名稱和目標伺服器實例或叢集。
若要刪除參照,請使用 delete-http-lb-ref。若要刪除某個參照,必須先使用 disable-http-lb-server 停用所參照的伺服器或叢集。
如需更多資訊,請參閱 create-http-lb-ref 和 delete-http-lb-ref 的文件。
建立對伺服器實例或叢集的參照後,請使用 enable-http-lb-server 啟用伺服器實例或叢集。如果在建立負載平衡器配置時使用某伺服器實例或叢集作為目標,則必須啟用該伺服器實例或叢集。
如需更多資訊,請參閱 enable-http-lb-server 的文件。
負載平衡器管理的所有伺服器均必須具有同質配置,包括部署到這些伺服器的相同應用程式集。部署某個應用程式並啟用 (在部署期間或之後) 此應用程式以進行存取後,您必須啟用該應用程式以進行負載平衡。如果沒有為負載平衡啟用應用程式,則將無法對該應用程式的請求執行負載平衡和容錯移轉,即使已對該應用程式部署到的伺服器的請求執行了負載平衡和容錯移轉。
啟用應用程式時,請指定應用程式名稱和目標。如果負載平衡器管理了多個目標 (例如,兩個叢集),請在所有目標上啟用該應用程式。
如需更多資訊,請參閱 enable-http-lb-application 的線上說明。
如果部署了新的應用程式,您也必須啟用該應用程式以進行負載平衡並再次匯出負載平衡器配置。
負載平衡器的運作狀態檢查程式會定期檢查所有標記為異常的已配置 Application Server 實例。運作狀態檢查程式不是必需的,但如果沒有運作狀態檢查程式,或者停用了運作狀態檢查程式,異常實例的定期運行狀況檢查就不會執行。
負載平衡器的運作狀態檢查機制使用 HTTP 與應用程式伺服器實例進行通訊。運作狀態檢查程式將 HTTP 請求傳送給指定的 URL 並等待回應。HTTP 回應標頭中的狀態碼在 100 到 500 之間時表示實例處於正常狀態。
若要建立運作狀態檢查程式,請使用 asadmin create-http-health-checker 指令。指定下列參數:
表 4–2 運作狀態檢查程式參數
參數 |
說明 |
預設 |
---|---|---|
url |
指定負載平衡器檢查的偵聽程式之 URL 以確定其運作狀態。 |
“/” |
interval |
指定實例的運作狀態檢查發生的間隔 (以秒為單位)。指定為 0 將停用運作狀態檢查程式。 |
30 秒 |
timeout |
指定逾時間隔 (以秒為單位),必須在該時間間隔內獲得回應才能認為偵聽程式運作正常。 |
10 秒 |
如果應用程式伺服器實例標示為異常,運作狀態檢查程式將輪詢異常實例以確定實例的狀態是否已變為正常。運作狀態檢查程式使用指定的 URL 來檢查所有異常的應用程式伺服器實例,以確定這些異常的應用程式伺服器實例是否已返回到正常狀態。
如果運作狀態檢查程式發現某個異常實例已變為正常,該實例將被增加到正常實例的清單中。
如需更多資訊,請參閱 create-http-health-checker 和 delete-http-health-checker 的文件。
create-http-health-checker 建立的運作狀態檢查程式僅檢查異常實例。若要定期檢查正常實例,請在匯出的 loadbalancer.xml 檔案中設定幾個額外特性。
僅在您已將 loadbalancer.xml 匯出之後,才可透過手動對其進行編輯,來設定這些特性。沒有等效的 asadmin 指令可以使用。
若要檢查正常的實例,請設定以下特性:
表 4–3 運作狀態檢查程式手動特性
特性 |
定義 |
---|---|
True/False 標幟,用於表示是否要 Ping 正常伺服器實例以確定這些實例是否正常。若要 Ping 伺服器實例,請將標幟設定為 True。 |
|
指定在將未回應的伺服器實例標記為異常之前,負載平衡器的運作狀態檢查程式對該伺服器實例執行 Ping 指令的次數。有效範圍在 1 到 1000 之間。設定的預設值為 3。 |
透過編輯 loadbalancer.xml 檔案來設定特性。例如︰
<property name="active-healthcheck-enabled" value="true"/> <property name="number-healthcheck-retries" value="3"/>
如果您增加這些特性,並隨後再次編輯並匯出 loadbalancer.xml 檔案,您必須重新將這些特性增加至該檔案,因為新匯出的配置不包含這些特性。
Sun Java System Application Server 隨附的負載平衡外掛程式使用名為 loadbalancer.xml 的配置檔案。使用 asadmin 工具可以在 domain.xml 檔案中建立負載平衡器配置。配置負載平衡環境後,請將其匯出成檔案。
使用 asadmin 指令 export-http-lb-config 匯出 loadbalancer.xml 檔案。
匯出用於特定負載平衡器配置的 loadbalancer.xml 檔案。您可以指定路徑和其他檔案名稱。如果您未指定檔名,則該檔案會命名為 loadbalancer.xml.load_balancer_config_name。如果您未指定路徑,則該檔案會建立在 application_server_install_dir/domains/domain_name/generated 目錄中。
若要在 Windows 上指定路徑,請將路徑加上引號。例如,"c:\sun\AppServer\loadbalancer.xml"。
將已匯出的負載平衡器配置檔案複製到 Web 伺服器的配置目錄。
例如,對於 Sun Java System Web Server,該位置可能為 web_server_root/config。
Web 伺服器配置目錄中的負載平衡器配置檔案必須命名為 loadbalancer.xml。如果您的檔案使用其他名稱 (例如 loadbalancer.xml.load_balancer_config_name),則必須重新命名該檔案。
如果您透過建立或刪除對伺服器的參照、部署新的應用程式、啟用或停用伺服器或應用程式等方法來變更負載平衡器配置,則請重新匯出負載平衡器配置檔案並將其複製到 Web 伺服器的 config 目錄。如需更多資訊,請參閱匯出負載平衡器配置檔案。
負載平衡器外掛程式將基於在負載平衡器配置中指定的重新載入間隔定期檢查已更新的配置。在指定的時間值後,如果負載平衡器發現新的配置檔案,則它將開始使用新配置。
若要啟用動態重新配置,請執行以下步驟:
建立負載平衡器配置時,將 --reloadinterval 選項與 asadmin create-http-lb-config 配合使用。
此選項用於設定檢查負載平衡器配置檔案 loadbalancer.xml 有無變更的時間間隔。將值設定為 0 可停用動態重新配置。依預設,啟用動態重新配置,重新載入時間間隔為 60 秒。
如果您之前已將其停用,或要變更重新載入時間間隔,請使用 asadmin set 指令。
變更重新載入時間間隔之後,請重新匯出負載平衡器配置檔案,並將其複製到 Web 伺服器的 config 目錄,然後重新啟動 Web 伺服器。
如果嘗試進行自身重新配置時,負載平衡器遇到了硬碟讀取錯誤,它將使用記憶體中的目前配置。負載平衡器還確定了在覆寫現有配置之前,已修改的配置資料與 DTD 相容。
如果遇到磁碟讀取錯誤,相關的警告訊息會記錄至 Web 伺服器的錯誤記錄檔中。
Sun Java System Web Server 的錯誤記錄位於以下位置:web_server_install_dir/webserver_instance/logs/。
在因任何原因而停止應用程式伺服器之前,您希望實例完成正在處理的請求。正常停用伺服器實例或叢集的程序被稱為靜止。
負載平衡器使用以下策略來靜止應用程式伺服器實例:
如果已停用某個實例 (獨立實例或叢集的一部分),並且逾時尚未到期,居留式請求將繼續發送到該實例。但是,新請求將不會傳送到已停用的實例。
逾時到期後,該實例將停用。從負載平衡器到該實例的所有開啟的連線將關閉。負載平衡器不會將任何請求傳送到該實例,即使居留在該實例的所有階段作業都還有效。相反,負載平衡器會將居留式請求容錯移轉到另一個正常實例上。
執行 asadmin disable-http-lb-server,設定逾時 (以分鐘為單位)。
使用 asadmin export-http-lb-config 匯出負載平衡器配置檔案。
將匯出的配置複製到 Web 伺服器的 config 目錄。
停止該伺服器實例或叢集。
在取消部署 Web 應用程式之前,您希望應用程式完成處理請求。正常停用應用程式的程序稱為靜止。靜止應用程式時,您可指定逾時時間。依據逾時時間,負載平衡器會使用以下策略靜止應用程式︰
如果逾時未過期,負載平衡器不會向應用程式轉寄新的請求,但會將其傳回 Web 伺服器。然而,負載平衡器會繼續轉寄居留式請求,直至逾時過期。
逾時過期後,負載平衡器不會接受應用程式的任何請求 (包括居留式請求)。
當您從負載平衡器參照的每個伺服器實例或叢集中停用應用程式時,已停用的應用程式的使用者將遭受服務損失,直到再次啟用該應用程式。如果您從一個伺服器實例或叢集中停用應用程式而使該應用程式在其他伺服器實例或叢集中保持啟用狀態,則使用者仍可存取該應用程式。
使用 asadmin disable-http-lb-application,並指定以下內容︰
逾時 (以分鐘為單位)。
要停用的應用程式之名稱。
要在其上停用應用程式的目標叢集或實例。
使用 asadmin export-http-lb-config 匯出負載平衡器配置檔案。
將匯出的配置複製到 Web 伺服器的 config 目錄。
如果 HTTP/HTTPS 階段作業所連線的原始應用程式伺服器實例變為不可用,負載平衡器外掛程式會將這些階段作業容錯移轉到其他應用程式伺服器實例上。本小節介紹如何配置負載平衡器外掛程式以啟用 HTTP/HTTPS 路由和階段作業容錯移轉。
本小節論述以下主題︰
HTTP 安全 (HTTPS) 通訊協定使用安全套接字層 (SSL) 來提供對 HTTP 請求的解密和加密,以實現安全通訊。若要使 HTTPS 路由工作,必須配置一個或多個 HTTPS 偵聽程式。
負載平衡外掛程式將所有內送的 HTTP 或 HTTPS 請求路由至應用程式伺服器實例。然而,如果啟用了 HTTPS 路由,則負載平衡外掛程式會將 HTTPS 請求僅轉寄給使用 HTTPS 連接埠的應用程式伺服器。HTTPS 路由是針對新請求和居留式請求而執行的。
如果收到了 HTTPS 請求且沒有正在進行的階段作業,負載平衡器外掛程式將選取使用已配置的 HTTPS 連接埠的可用應用程式伺服器實例,並將請求轉寄到該實例。
在正在進行的 HTTP 階段作業中,如果收到對同一個階段作業的新 HTTPS 請求,則使用在 HTTP 階段作業期間儲存的階段作業和居留式資訊來路由 HTTPS 請求。新的 HTTPS 請求將路由到在此 HTTPS 連接埠上處理上一個 HTTP 請求的同一伺服器。
create-http-lb-config 指令的 httpsrouting 選項,用於控制是否為參與負載平衡的所有應用程式伺服器開啟 HTTPS 路由功能。如果此選項設定為 false,所有 HTTP 和 HTTPS 請求都將作為 HTTP 請求進行轉寄。建立新的負載平衡器配置時,請將此選項設定為 true,或者以後使用 asadmin set 指令變更此選項的設定。
如果 https-routing 設定為 true,而新請求或居留式請求傳入的叢集中沒有正常的 HTTPS 偵聽程式,則該請求將產生一個錯誤。
負載平衡器對 HTTP/HTTPS 請求處理具有以下限制。
如果某個階段作業使用 HTTP 和 HTTPS 請求的組合,則第一個請求必須是 HTTP 請求。如果第一個請求是 HTTPS 請求,則其後不能接 HTTP 請求。這是因為與 HTTPS 階段作業關聯的 Cookie 不是由瀏覽器傳回的。瀏覽器將兩個不同的協定解釋為兩個不同的伺服器,並啟動新的階段作業。
僅當 httpsrouting 設定為 true 時,此限制才有效。
如果某個階段作業具有 HTTP 和 HTTPS 請求的組合,則必須將應用程式伺服器實例配置為同時具有 HTTP 和 HTTPS 偵聽程式。
僅當 httpsrouting 設定為 true 時,此限制才有效。
如果某個階段作業具有 HTTP 和 HTTPS 請求的組合,則必須將應用程式伺服器實例配置為具有使用標準連接埠號 (即,對於 HTTP 為 80,對於 HTTPS 為 443) 的 HTTP 和 HTTPS 偵聽程式。httpsrouting 無論設定為哪個值,皆需遵守此限制。
等冪請求是一種在重試時不會在應用程式中造成任何變更或不一致的請求。在 HTTP 中,某些方法 (例如 GET) 是等冪的,而其他方法 (例如 POST) 則不是。重試等冪 URL 不會導致伺服器上或資料庫中的值發生變更。唯一的差異在於使用者收到的回應會有所不同。
等冪請求的範例包括搜尋引擎查詢和資料庫查詢。基礎原則是重試不會導致資料的更新或修改。
若要增強已部署應用程式的可用性,請在負載平衡器所服務的所有應用程式伺服器實例上,將環境配置為重試失敗的等冪 HTTP 請求。此選項用於唯讀請求 (例如,重試搜尋請求)。
請在 sun-web.xml 檔案中配置等冪 URL。當您匯出負載平衡器配置時,等冪 URL 資訊將自動增加到 loadbalancer.xml 檔案中。
如需有關配置等冪 URL 的更多資訊,請參閱「Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Developer’s Guide」中的「Configuring Idempotent URL Requests」。
在不遺失對使用者的可用性的情況下,將應用程式升級至新版本稱為輪替式升級。在升級過程中,小心管理這兩個版本的應用程式,不但可以確保應用程式的目前使用者在無中斷的情況下完成作業,同時可讓新使用者不需設定即可取得新的應用程式版本。使用輪替式升級時,使用者不會察覺正在進行升級。
依據兩個應用程式版本之間的變更大小,輪替式升級會造成不同程度的困難。
如果變更很小 (例如對靜態文字和影像的變更),則此應用程式的兩個版本可以相容,並可在相同叢集中同時執行。相容的應用程式必須︰
使用相同的階段作業資訊
使用相容的資料庫模式
具有一般相容應用程式層級的業務邏輯
使用相同的實體資料來源
您可以在單一叢集或多個叢集中執行相容應用程式的輪替式升級。如需更多資訊,請參閱在單一叢集中升級。
如果應用程式的兩個版本不滿足上述所有條件,則應用程式會被視為不相容。在某個叢集中執行不相容的應用程式版本會毀壞應用程式資料,並導致階段作業容錯移轉無法正常執行。該問題取決於不相容性的類型和程度。好的做法是透過建立要向其部署新版本應用程式的「隱式叢集」,來升級不相容的應用程式,然後緩慢靜止舊叢集和應用程式。如需更多資訊,請參閱升級不相容的應用程式。
應用程式開發者和管理員是確定應用程式版本是否相容的最佳人選。如有疑問,請假設版本不相容,因為這是最安全的方法。
如果未與任何其他叢集共用叢集配置,則可以對部署至單一叢集的應用程式執行輪替式升級。
儲存舊版本的應用程式或備份網域。
若要備份網域,請使用 asadmin backup-domain 指令。
關閉叢集的動態重新配置 (如果已啟用)。
從管理主控台執行此操作:
或者,使用以下指令︰
asadmin set --user user --passwordfile password_file cluster_name -config.dynamic-reconfiguration-enabled=false
將已升級的應用程式重新部署到目標 domain 中。
如果使用管理主控台進行重新部署,網域將自動成為目標。如果使用 asadmin,請指定目標 domain。由於已停用動態重新配置,因此舊應用程式將繼續在叢集上執行。
使用 asadmin enable-http-lb-application 為實例啟用已重新部署的應用程式。
從負載平衡器靜止叢集中的某個伺服器實例。
請依照下列步驟執行:
使用 asadmin disable-http-lb-server 停用伺服器實例。
使用 asadmin export-http-lb-config 匯出負載平衡器配置檔案。
將已匯出的配置檔案複製到 Web 伺服器實例的配置目錄。
例如,對於 Sun Java System Web Server,其位置為 web_server_install_dir/https-host-name/config/loadbalancer.xml。若要確保負載平衡器載入新的配置檔案,請務必確定已透過在負載平衡器配置中設定 reloadinterval 啟用了動態重新配置。
請等待,直至逾時值到期。
監視負載平衡器的記錄檔以確定實例已離線。如果使用者看到重試 URL,請略過靜止期間,並立即重新啟動伺服器。
在叢集中的其他實例仍處於執行狀態的情況下,重新啟動已停用的伺服器實例。
重新啟動操作將使伺服器與網域同步,並更新應用程式。
測試重新啟動的伺服器上的應用程式,以確定應用程式執行正常。
在負載平衡器中重新啟用伺服器實例。
請依照下列步驟執行:
對叢集中的每個實例重複步驟 5 至 8。
當所有伺服器實例具有新的應用程式並且這些伺服器實例正在執行時,您可以為叢集重新啟用動態重新配置。
儲存舊版本的應用程式或備份網域。
若要備份網域,請使用 asadmin backup-domain 指令。
關閉所有叢集的動態重新配置 (如果已啟用)。
從管理主控台執行此操作:
或者,使用以下指令︰
asadmin set --user user --passwordfile password_file cluster_name-config.dynamic-reconfiguration-enabled=false
將已升級的應用程式重新部署到目標 domain 中。
如果使用管理主控台進行重新部署,網域將自動成為目標。如果使用 asadmin,請指定目標 domain。由於已停用動態重新配置,因此舊應用程式將繼續在叢集上執行。
使用 asadmin enable-http-lb-application 為叢集啟用已重新部署的應用程式。
靜止負載平衡器中的某個叢集
使用 asadmin disable-http-lb-server 停用叢集。
使用 asadmin export-http-lb-config 匯出負載平衡器配置檔案。
將已匯出的配置檔案複製到 Web 伺服器實例的配置目錄。
例如,對於 Sun Java System Web Server,其位置為 web_server_install_dir/https-host-name/config/loadbalancer.xml。必須為負載平衡器啟用動態重新配置 (透過在負載平衡器配置中設定 reloadinterval),以便能夠自動載入新的負載平衡器配置檔案。
請等待,直至逾時值到期。
監視負載平衡器的記錄檔以確定實例已離線。如果使用者看到重試 URL,請略過靜止期間,並立即重新啟動伺服器。
在其他叢集仍處於執行狀態的情況下,重新啟動已停用的叢集。
重新啟動操作將使叢集與網域同步,並更新應用程式。
測試重新啟動的叢集上的應用程式,以確定應用程式執行正常。
在負載平衡器中重新啟用叢集︰
對其他叢集重複步驟 5 至 8。
當所有伺服器實例都具有新的應用程式並且這些伺服器實例正在執行時,您可以為所有叢集重新啟用動態重新配置。
如需有關應用程式相容條件的資訊,請參閱應用程式相容性,應用程式的新版本與其舊版本不相容。此外,您必須在兩個或更多叢集中升級不相容的應用程式。如果您僅有一個叢集,請為升級建立「隱式叢集」,如下所述。
升級不相容的應用程式時,請︰
為應用程式的新版本指定與其舊版本不同的名稱。以下步驟假設已重新命名應用程式。
如果資料模式不相容,請在規劃資料遷移之後使用不同的實體資料來源。
在與其中部署了舊版本的叢集不同的叢集中部署新版本。
讓執行舊應用程式的叢集離線之前,為其設定適當長的逾時,因為應用程式的請求不會容錯移轉至新叢集。這些使用者階段作業將失敗。
儲存舊版本的應用程式或備份網域。
若要備份網域,請使用 asadmin backup-domain 指令。
在相同或不同的一組機器上建立「隱式叢集」,將其做為現有叢集。
使用管理主控台建立新叢集並參照現有叢集的已命名配置。
在每個機器上為新實例自訂連接埠,以避免與現有使用中連接埠衝突。
對於與叢集相關聯的所有資源,使用 asadmin create-resource-ref 將資源參照增加至新建的叢集中。
使用 asadmin create-application-ref,從新建的叢集中,建立對部署至該叢集的所有其他應用程式 (目前重新部署的應用程式除外) 的參照。
使用 asadmin configure-ha-cluster 將叢集配置為具有高可用性。
使用 asadmin create-http-lb-ref 在負載平衡器配置檔案中建立對新建叢集的參照。
為應用程式的新版本指定與舊版本不同的名稱。
透過將新叢集做為目標來部署新應用程式。使用不同的一個或多個環境根目錄。
使用 asadmin enable-http-lb-application 為叢集啟用已部署的新應用程式。
在其他叢集仍處於執行狀態的情況下,啟動新的叢集。
啟動操作將導致叢集與網域同步,並使用新應用程式進行更新。
測試新叢集上的應用程式,以確定其是否正常執行。
使用 asadmin disable-http-lb-server 從負載平衡器上停用舊叢集。
為延遲階段作業存在的時間設定逾時。
使用 asadmin enable-http-lb-server 從負載平衡器中啟用新叢集。
使用 asadmin export-http-lb-config 匯出負載平衡器配置檔案。
將已匯出的配置檔案複製到 Web 伺服器實例的配置目錄。
例如,對於 Sun Java System Web Server,其位置為 web_server_install_dir/https-host-name/config/loadbalancer.xml。必須為負載平衡器啟用動態重新配置 (透過在負載平衡器配置中設定 reloadinterval),以便能夠自動載入新的負載平衡器配置檔案。
在逾時時間過期後,或舊應用程式的所有使用者結束後,停止舊叢集並刪除舊應用程式。
負載平衡外掛程式使用 Web 伺服器的記錄機制寫入記錄訊息。應用程式伺服器的預設記錄層級已設定為 Sun Java System Web Server (INFO)、Apache Web Server (WARN) 和 Microsoft IIS (INFO) 的預設記錄層級。應用程式伺服器記錄層級 (FINE、FINER 和 FINEST) 對映到 Web 伺服器上的 DEBUG 層級。
這些記錄訊息將寫入 Web 伺服器記錄檔,並且以可使用程序檔進行剖析或匯入試算表以計算所需公制的原始資料形式進行。
負載平衡外掛程式會產生以下類型的記錄訊息:
使用等冪 URL 和錯誤頁面設定時,將記錄這些訊息。
等冪 URL 式樣配置的輸出包含以下資訊:
當記錄層級設定為 FINE 時:
CONFxxxx: IdempotentUrlPattern configured <url-pattern> <no-of-retries> for web-module : <web-module>
當記錄層級設定為 SEVERE 時:
CONFxxxx: Duplicate entry of Idempotent URL element <url-pattern> for webModule <web-module> in loadbalancer.xml."
當記錄層級設定為 WARN 時:
CONFxxxx: Invalid IdempotentUrlPatternData <url-pattern> for web-module <web-module>
錯誤頁面 URL 配置的輸出包含以下資訊 (記錄層級設定為 WARN):
CONFxxxx: Invalid error-url for web-module <web-module>
這些記錄訊息在負載平衡和派送請求時產生。
每個方法隆l的標準記錄的輸出均包含以下資訊 (記錄層級設定為 FINE):
ROUTxxxx: Executing Router method <method_name>
每個方法隆l的路由器記錄的輸出均包含以下資訊 (記錄層級設定為 INFO):
ROUTxxxx: Successfully Selected another ServerInstance for idempotent request <Request-URL>
執行階段記錄的輸出包含以下資訊 (記錄層級設定為 INFO):
RNTMxxxx: Retrying Idempotent <GET/POST/HEAD> Request <Request-URL>
如果存在配置問題 (例如,缺少參照的自訂錯誤頁面),將顯示這些錯誤。
記錄層級設定為 INFO:
ROUTxxxx: Non Idempotent Request <Request-URL> cannot be retried
例如︰ROUTxxxx: Non Idempotent Request http://sun.com/addToDB?x=11&abc=2 cannot be retried
記錄層級設定為 FINE:
RNTMxxxx: Invalid / Missing Custom error-url / page: <error-url> for web-module: <web-module>
例如︰RNTMxxxx: Invalid / Missing Custom error-url / page: myerror1xyz for web-module: test
負載平衡器外掛程式記錄以下資訊:
每個請求的請求隆l/停止資訊。
請求從異常實例容錯移轉到正常實例時的容錯移轉請求資訊。
每個運作狀態檢查週期結束時的異常實例清單。
啟用負載平衡器記錄後,如果將 Web 伺服器記錄層級設定為 DEBUG 或顯示詳細訊息,負載平衡器會將 HTTP 階段作業 ID 寫入 Web 伺服器記錄檔中。因此,如果託管負載平衡器外掛程式的 Web 伺服器位於 DMZ 中,請勿在生產環境中使用 DEBUG 或類似的記錄層級。
如果必須使用 DEBUG 記錄層級,請在 loadbalancer.xml 中將 require-monitor-data 特性設定為 false,以關閉負載平衡器記錄。
設定 Web 伺服器中的記錄選項。該程序取決於 Web 伺服器:
將負載平衡器配置的 monitor 選項設定為 true。
使用 asadmin create-http-lb-config 指令可以在最初建立負載平衡器配置時將監視設定為 true,也可以稍後使用 asadmin set 指令將其設定為 true。依預設,停用監視。
負載平衡器外掛程式記錄訊息的格式如下所示:
HTTP 請求的黃Y處包含以下資訊:
RequestStart Sticky(New) <req-id> <time-stamp> <URL>
時間戳記值是從 1970 年 1 月 1 日隆l的毫秒數。例如:
RequestStart New 123456 602983 http://austen.sun.com/Webapps-simple/servlet/Example1
HTTP 請求的結尾處包含 RequestExit 訊息,如下所示:
RequestExit Sticky(New) <req-id> <time-stamp> <URL> <listener-id> <response-time> Failure-<reason for error>(incase of a failure)
例如︰
RequestExit New 123456 603001 http://austen.sun.com/Webapps-simple/servlet/Example1 http://austen:2222 18
在 RequestExit 訊息中,<response-time> 表示從負載平衡器外掛程式的角度來看,處理請求的來回總時間 (以毫秒為單位)。
異常實例清單,如下所示:
UnhealthyInstances <cluster-id> <time-stamp> <listener-id>, <listener-id>...
例如︰
UnhealthyInstances cluster1 701923 http://austen:2210, http://austen:3010
容錯移轉請求清單,如下所示:
FailedoverRequest <req-id> <time-stamp> <URL> <session-id> <failed-over-listener-id> <unhealthy-listener-id>
例如︰
FailedoverRequest 239496 705623 http://austen.sun.com/Apps/servlet/SessionTest 16dfdac3c7e80a40 http://austen:4044 http://austen:4045