叢集是多個伺服器實例的群組,跨越一個以上的節點,全部執行相同的配置。叢集中的所有實例協同作業,以提供高可用性、穩定性和可延伸性。
藉由負載平衡,叢集可提供容錯移轉和階段作業複製功能,讓服務得以不中斷、階段作業資料擁有持續性。
依據本節說明的使用案例,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