本章說明如何在單一節點與叢集環境中部署 Web 伺服器 。本章將討論以下主題:
本節說明了單一節點部署架構。
下圖說明單一節點部署設定中的 Web 伺服器。
在此圖中,Web 伺服器部署設定包含下列元件:
管理伺服器 — 管理伺服器是專門配置的 Web 伺服器實例。您可以在管理伺服器上部署 Web 應用程式。
管理節點 — 管理節點部署於伺服器機群內的節點或伺服器/主機上,並且可以與遠端管理伺服器進行通訊。您可以將管理伺服器內的可用伺服器配置部署到此節點上。伺服器機群內的所有管理節點都必須是同質的。也即是說,所有節點都必須使用同一作業系統並具有相同的硬體架構。
配置 — 配置是指 Web 伺服器實例的所有可配置元素集,如 Web 應用程式、配置檔案和搜尋集合索引。可以建立、修改或刪除配置。Web 伺服器可以管理多個配置。您可針對一個配置建立多個實例。部署已修改的配置將更新該配置的實例。
config-store,這是一個基於檔案系統的儲存庫,所有配置都儲存在其中。
請勿編輯 config-store 目錄下的任何檔案。此目錄下的檔案是由 Web 伺服器 建立,供內部使用。
如果您必須手動編輯 config-store 目錄下的配置檔案,請使用 wadm deploy-config 指令來部署配置。
如需有關使用此指令的更多資訊,請參閱 「Sun Java System Web Server 7.0 Update 3 CLI Reference Manual」。
實例 — 實例是指指定節點上 Web 伺服器的環境,包括其配置、記錄檔以及其他執行階段工件 (例如鎖定資料庫、快取和暫存檔)。出於管理目的,可以對實例執行啟動、停止、重新啟動或動態重新配置操作。
您可以考慮在單一節點上部署 Web 伺服器以達到以下目的:
託管簡單的 Web 或 CGI 應用程式。
開發和測試 Web 應用程式。
以下流程圖提供在節點上部署 Web 伺服器的概要說明:
部署程序將在以下各節中說明:
若要在單一節點上部署 Web 伺服器,請執行以下作業讓系統做好準備:
在節點上安裝 Web 伺服器。
如果在安裝 Web 伺服器時選擇 [快速安裝] 選項,將會建立以下預設實體:
管理伺服器。
建立包含一個 HTTP 偵聽程式和虛擬伺服器的預設配置。配置和虛擬伺服器的名稱與主機名稱相同。
預設配置的實例。
如需有關安裝 Web 伺服器的相關資訊,請參閱 「Sun Java System Web Server 7.0 Update 3 Installation and Migration Guide」中的第 2 章「Installing the Web Server」。
如需有關支援的平台與系統需求的資訊,請參閱 「Sun Java System Web Server 7.0 Update 3 版本說明」中的「支援的平台」。
啟動管理伺服器。
管理伺服器在指定的 SSL 連接埠上開始執行。
使用以下程序在節點上部署 Web 伺服器:
您可以使用預設配置或建立新配置。
如果要建立新配置,請為配置指定唯一名稱。新配置會建立虛擬伺服器和預設的 HTTP 偵聽程式。
如果要使用管理主控台建立配置,精靈將提示您建立新實例。如果要使用 CLI,則必須使用 create-instance 指令明確建立配置實例。
所有配置都儲存在 <install_dir>/admin-server/ 目錄下的 config-store 目錄中。
請勿編輯 config-store 目錄下的任何檔案。此目錄下的檔案是由 Web 伺服器 建立,供內部使用。
部署已修改的配置。
叢集是多個伺服器實例的群組,跨越一個以上的節點,全部執行相同的配置。叢集中的所有實例協同作業,以提供高可用性、穩定性和可延伸性。
藉由負載平衡,叢集可提供容錯移轉和階段作業複製功能,讓服務得以不中斷、階段作業資料擁有持續性。
依據本節說明的使用案例,Web 伺服器叢集由以下實體組成:
1) 四個實例 (在四個相同節點上執行) |
2) 一部管理伺服器 |
3) 一部用以對 HTTP 請求進行負載平衡的反向代理伺服器 |
若要設定叢集,需要兩個以上安裝相同作業系統版本和修補程式的相同節點。例如,如果選取安裝有 Solaris® 9 SPARC® 作業系統的機器,則叢集中的其他機器也必須安裝有 Solaris 9 SPARC。
如需有關支援的平台和修補程式需求的資訊,請參閱 「Sun Java System Web Server 7.0 Update 3 版本說明」。
下圖說明了叢集環境。
在此圖中,節點是在非警戒區域 (DMZ) 中配置的。管理伺服器是在防火牆 (警戒區域) 後配置的,用於限制和避免所有人存取管理伺服器。另一個節點配置為反向代理伺服器。反向代理伺服器位於 DMZ 之內,以提高安全性。
僅 Solaris 10 作業系統支援 Solaris Zone 功能。
本節說明設定叢集和啟用反向代理伺服器,來支援對 HTTP 請求進行負載平衡的程序。
以下流程圖說明設定叢集的程序。
在其中一個節點上,將 Web 伺服器安裝為叢集中的管理伺服器。
在其他三個節點上安裝 Web 伺服器。選取將 Web 伺服器安裝為管理節點的選項。在安裝期間,請選擇向伺服器註冊節點的選項。
請確定管理伺服器是使用 SSL 連接埠進行通訊,因為只能在安全模式下向伺服器註冊管理節點。
請確定安裝管理伺服器和管理節點的所有節點,都有相同的系統日期與時間。建立與伺服器關聯的憑證時,需依據管理伺服器安裝所在節點的系統日期和時間。如果管理節點的系統日期早於管理伺服器,註冊將會失敗,因為管理伺服器的憑證尚未有效。同理,如果憑證已過期,可能仍被視為有效。
從 install_dir/admin-server/bin/ 目錄啟動管理伺服器。
install_dir/admin-server/bin>./startserv
從管理節點啟動 wadm 指令行工具。wadm 指令行工具位於 install_dir/bin 目錄中。
install_dir/bin>./wadm
向管理伺服器註冊每個管理節點。使用 register-node 指令向伺服器註冊每個節點。
例如:
./wadm register-node -user=admin --host=abc.sfbay.sun.com --port=8989 |
其中,
是向其註冊管理節點的管理伺服器之主機名稱。
是管理伺服器的 SSL 連接埠號碼。
系統將提示您輸入管理密碼。請輸入管理伺服器的管理密碼。
管理伺服器與管理節點彼此互相認證,即管理伺服器信任管理節點的伺服器憑證,管理節點信任管理伺服器提供的用戶端憑證。在管理節點註冊期間,管理伺服器會產生該管理節點的伺服器憑證,此憑證之後會被下載並安裝到管理節點上。伺服器憑證的核發者也會安裝在管理節點上。
註冊只能透過 SSL 來完成。
如需有關註冊節點的更多資訊,請參閱 「Sun Java System Web Server 7.0 Update 3 Installation and Migration Guide」中的「Registering the Administration Node From the Command-Line」。
從 install_dir /admin-server/bin/ 目錄使用 startserv 指令來啟動所有管理節點。
使用管理主控台或 CLI 在管理伺服器中建立新配置。
為新配置提供配置資訊,如配置名稱、HTTP 偵聽程式連接埠及伺服器名稱。
在所有節點上建立配置實例。
啟動所有節點上的實例。
Web 伺服器能彈性擴充和縮減叢集規模。您可以隨時在叢集中增加或移除實例。
Web Server 7.0 提供先進的內建負載平衡器,即反向代理伺服器。反向代理伺服器是伺服器機群中 Web 伺服器的閘道。配置反向代理伺服器後,會將請求轉寄到多台配置類似的 Web 伺服器。
請在 Web Server 7.0 中使用以下程序啟用反向代理伺服器:
在要用於配置反向代理伺服器的節點上安裝 Web 伺服器。
建立配置。例如 rp。
使用管理主控台,選取 [配置] > [虛擬伺服器] > [內容處理] > [反向代理伺服器] 標籤。按一下 [新增] 按鈕。
輸入叢集中所有機器的反向代理伺服器 URI 和伺服器 URL (以逗號分隔)。
伺服器 URL 的輸入格式為 hostname: portnumber。
儲存變更。
部署已修改的配置,將變更套用至此配置。
啟動此已修改配置的所有實例。
此舉可完成反向代理伺服器的配置,以便對 HTTP 請求進行負載平衡。
若要在叢集環境中配置反向代理伺服器,請核發萬用字元伺服器憑證,或可設為實際原始伺服器主機名稱的替代主體名稱。另一個可在主體名稱欄位中指定原始伺服器主機名稱的選項,會限制叢集的大小,導致在將其他節點增加至叢集時使此叢集產生故障。
您可使用管理介面建立萬用字元伺服器憑證。建立伺服器憑證後,請使用 certutil 取得 base64 編碼的憑證,並將其安裝為負載平衡器配置上可信任的 CA 憑證。
鍵入下列指令,以產生 base64 編碼的憑證:bash$./certutil -L -a -d instancedir/config。複製指令的輸出,並將其貼至安裝憑證精靈中。
登入管理主控台
從清單中選取配置
按一下 [編輯虛擬伺服器] 按鈕
按一下 [內容處理] 標籤
按一下 [反向代理伺服器] 子標籤
按一下反向代理伺服器清單中的 URI
新視窗會隨即出現。
按一下 HTTP 用戶端配置連結
您可以編輯 [閒置逾時] 參數。預設值為 300。
本節將詳細說明後端實例的狀態檢查。
Web Server 7.0 中的 route_offline_thread 可執行後端實例的狀態檢查。它會傳送 OPTIONS HTTP 請求,以查找所有作用中的後端實例。若伺服器有所回應,即表示後端實例為作用中。在初始階段後,執行緒會每隔 60 秒執行一次離線後端實例的狀態檢查 (無法配置持續時間)。route_offline_thread 此時會嘗試連線至離線實例,並在連線成功時傳送 OPTIONS HTTP 請求。實例若有所回應,一旦從當機狀態復原後, route_offline_thread 會立即將它視為線上狀態。因此,執行緒對系統與後端實例都不會造成任何效能上的影響。
在將後端實例視為線上實例後,若是後端實例關閉或當機,route_offline_thread 將無法追蹤。當 Web 伺服器反向代理伺服器參數選擇此種實例時,為了處理請求,會導致讀取或傳送失敗,表示實例的連線中斷。
您可以使用 obj.conf 檔案中的 http-client-config ObjectType 函數,定義回應逾時值。
ObjectType fn="http-client-config" timeout="400" |
預設逾時值為 300 秒。
定義回應逾時值後,若後端實例的連線超過 400 秒沒有回應,反向代理伺服器參數即會結束該連線,並將其視為離線狀態。
當反向代理伺服器參數嘗試對沒有回應或忙碌的後端實例建立連線時,等候連線回應的最長時間為五秒,接著即會將此實例視為離線狀態。
登入管理主控台
從清單中選取配置
按一下 [編輯虛擬伺服器] 按鈕
按一下 [內容處理] 標籤
按一下 [反向代理伺服器] 子標籤
按一下 [新增] 按鈕
新視窗會隨即出現。
若要對所有請求設定反向代理伺服器,請在 URI 中輸入 (/)。或者,輸入要對反向代理伺服器設定的 URI。
輸入您想要反向代理的伺服器 URL。
例如 http://<content server-hostname>:port
按一下 [確定] 按鈕
按一下螢幕右上方的 [部署擱置] 連結。
按一下 [部署] 按鈕
部署成功訊息隨即出現。
按一下 [配置] 標籤
啟動實例。
存取您配置為反向代理伺服器的 URI。
若要配置條件式請求處理,您必須手動編輯虛擬伺服器的特定 obj.conf 檔案。
舉例來說,如果您要為所有 .jsp、.php 請求配置反向代理伺服器,您必須在 obj.conf 檔案中包含下列文字。
<If $uri =~ '.jsp$' or $uri =~ '.php$'> NameTrans fn="map" from="/" to="http:/" name="custom_reverse_proxy" </If> |
您應在物件名稱 default 下插入上述文字。請將下列文字增加至 obj.conf 檔案的結尾處。
<Object name ="custom_reverse_proxy"> Route fn="set-origin-server" server="http://<hostname>:<port>" </Object> <Object name ppath="http:*" Service fn="proxy-retrieve" method="*" </Object> |
請依照下列步驟,以 CLI 模式配置反向代理伺服器。例如,我們將建立配置 config1,並建立實例 rp 做為反向代理伺服器。
啟動管理伺服器:
$ <install-dir>/admin-server/bin/startserv
呼叫 CLI shell:
<install-dir> /admin-server/bin/wadm -user <username>
此時,您會看見 wadm shell
建立 config1:
wadm>create-config --http-port 8080 --server-name config1 --server-user root config1
建立 config1 配置的實例:
wadm>create-instance --config config1 <host-name>
在已建立的配置上增加 Web 應用程式:
wadm>add-webapp --config config1 -vs config1 --uri/test <warfile>
部署 Web 應用程式
wadm> deploy-config --user=admin --password-file=admin.pwd --host=serverhost --port=8989 config1
建立 rp 配置:
wadm>create-config --http-port 8081 --server-name rp --server-user root rp
使用下列指令啟用反向代理伺服器的 rp 配置:
wadm>create-reverse-proxy --config rp --vs rp --uri-prefix/--server http://<host-name>:8080
建立 rp 配置的實例
wadm>create-instance --config rp <host-name>
啟動實例:
wadm>start-instance --config config1 <host-name>
wadm>start-instance --config rp <hostname>
現在,即可透過 rp 實例檢視 config1 中所部署的 Web 應用程式。
http://<rp instance hostname>:8081/test
階段作業複製機制用於在不同實例之間,複製儲存在階段作業中的資料。但是所複製的實例必須屬於同一個叢集。在叢集環境中啟用階段作業複製時,整個階段作業資料會複製到複製的實例上。 但是階段作業複製操作並不會複製階段作業中的不可串列屬性,以及任何實例專屬的資料。
階段作業複製和負載平衡功能可為 Web 應用程式提供良好的容錯移轉功能。
本節將詳細說明階段作業複製操作。
Web 請求結束後,Web 伺服器將決定是否需要透過儲存在伺服器配置檔案 server.xml 中的階段作業複製配置,來複製階段作業資料。
現在研究由四個實例形成一個叢集、並在管理伺服器上啟用階段作業複製的使用案例。
在由執行於四個節點上的四個實例 (A、B、C 和 D) 所組成的 Web 伺服器叢集中,階段作業複製的程序如下:
實例 A 為 D 的備份,B 為 A 的備份,C 為 B 的備份,D 為 C 的備份。這樣便會形成完整的備份環。
叢集中的每個實例都會記錄一份靜態清單,其中列出了叢集中的所有實例以及使用中的備份實例。
階段作業資料會在每個請求結束後同步傳送至備份實例,依配置而定。
Web 伺服器叢集環境中的容錯移轉程序運作方式如下:
如果實例 A 失敗,負載平衡器會將以實例 A 為目的地的內送 Web 請求,重新導向至叢集中其餘的實例,並且備份環會以下列方式重新配置:
D 偵測到其備份 A 當機時,便會在順序清單上選取 A 的下一個實例做為新備份實例。
在此情況下將會選取 B,並且 D 會與 B 建立新的備份連線。此時 B 持有兩個備份: A 的唯讀備份和 D 的使用中備份。
此時完整的備份環形成:B 備份到 C,C 備份到 D,D 備份到 B。
當故障的實例 A 再次可用時,會向指定的備份實例 B 傳送重新連結訊息以重新連結備份環,並與 B 建立備份連線。
D 收到 A 傳回的 ping 成功結果或收到來自 A 的訊息,進而偵測到 A 在線上時,
D 隨後與 A 建立備份連線,並終止與 B 的備份連線。
Web Server 7.0 在階段作業複製中不支援以下功能:
回復兩個以上同步故障的實例。
兩次失敗之間的間隔必須大於讓恢復的實例完全回復所需的時間。
對一個以上的實例進行階段作業備份。在一般操作中,任何階段作業僅有兩個備份: 主要階段作業和備份階段作業。
階段作業持續性: 階段作業僅備份在其他實例的記憶體中,以便進行容錯移轉
Web 伺服器僅支援 Java Web 應用程式的階段作業複製。如果使用的是非 Java 應用程式 (如 CGI 或 PHP),則無法複製階段作業資料。
您可以使用管理主控台或 CLI 在叢集中啟用階段作業複製。啟用階段作業複製前,請確定瀏覽器已啟用 cookie。
server.xml 檔案包含與階段作業複製相關的資訊。以下是已啟用階段作業複製的 server.xml 檔案範例:
<cluster> <local-host>hostA</local-host> <instance> <host>hostB</host> </instance> <instance> <host>hostC</host> </instance> <instance> <host>hostD</host> </instance> <instance> <host>hostA</host> <session-replication/> </cluster>
若您使用下列元素的預設值,則在 server.xml 配置檔案中將無法使用這些元素的項目。
連接埠號碼 (預設為 1099) |
協定 (預設為 jrmp) |
已加密 (預設為 false) |
Getattribute 觸發複製 (預設為 true) |
複製探索最大躍點數 (預設為 –1) |
啟動探索逾時 (預設為 0。依賴 Java API 取得系統時間。這在非 Unix 作業系統中可能不精確)。 |
Cookie 名稱 (預設為 CLUSTERSESSIONLOCATOR ) |
如需有關這些階段作業複製特性的更多資訊,請參閱 「Sun Java System Web Server 7.0 Update 3 Administrator’s Configuration File Reference 」。
若要啟用伺服器以複製階段作業,還必須為階段作業複製啟用 Web 應用程式。
若要為 Web 應用程式啟用階段作業複製,請修改位於 <web-application>/WEB-INF 目錄中的 sun-web.xml 配置檔案。
按照下列方式在 sunweb.xml 中執行所需的修改:
將元素 <session-manager/> 變更為 <session-manager persistence-type="replicated">
以下是已啟用階段作業複製的 sun-web.xml 檔案範例:
<sun-web-app> <session-config> <session-manager persistence-type="replicated"> </session-manager> </session-config> </sun-web-app>
修改 sunweb.xml 檔案後,請重建 Web 應用程式或重新以 jar 壓縮應用程式,以建立 Web 應用程式歸檔 (war 檔案)。
重新啟動所有實例,以使 Web 應用程式在所有實例上均可用。
您可以從叢集中的所有節點存取 Web 應用程式。若要存取 Web 應用程式,請在瀏覽器中鍵入以下項目:
http://webserver-name/webapplication-name/
所有節點均可存取的目錄,最適用於儲存應用程式以進行部署。但是,管理伺服器並不一定要能存取此目錄不可。建議對大小超過 1 MB 的 Web 應用程式進行基於目錄的部署。
若要建立搜尋集合,請確保搜尋集合位於所有節點均可存取的共用目錄中。
管理伺服器可監視叢集中的所有實例。Web 伺服器的監視功能可提供有關執行階段元件的狀態,和可用於執行以下操作的程序之資訊:
識別效能瓶頸
調校系統以取得最佳效能
協助進行容量規劃
預測失敗
在失敗時分析根本原因
|
Solaris Zones 是 Solaris 10 的應用程式與資源管理功能。區域環境通常包含程序管理、記憶體、網路配置、檔案系統、套裝軟體登錄、使用者帳號、共用程式庫等資源,有時也包含已安裝的應用程式。Zones 功能提供了在 Solaris 實例內建立虛擬化作業系統環境的方法,允許一個或多個程序單獨執行,與系統上的其他作業隔離。它還提供了一個抽象層,將應用程式與部署這些應用程式的機器之實體屬性分隔開來,如實體裝置路徑、網路介面名稱及網路路由表。這種隔離可防止在指定區域內執行的程序,去監視或影響在其他區域中執行的程序,而無論使用者 ID 和其他憑證資訊為何。
區域是一個沙箱,一個或多個應用程式均可在其中執行,而不會影響系統的其餘部分或進行互動。
如需有關 Solaris Zones 的詳細資訊,請參閱 http://docs.sun.com/app/docs/doc/817-1592 上的 System Administration Guide — Solaris Containers-Resource Management and Solaris Zones。