負載平衡器配置為 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」。