Sun Java System Web Server 7.0 Update 3 管理員指南

第 4 章 部署案例

本章說明如何在單一節點與叢集環境中部署 Web 伺服器 。本章將討論以下主題:

部署架構

本節說明了單一節點部署架構。

下圖說明單一節點部署設定中的 Web 伺服器。

單一節點部署設定中的 Web 伺服器。

在此圖中,Web 伺服器部署設定包含下列元件:

部署簡介

您可以考慮在單一節點上部署 Web 伺服器以達到以下目的:

以下流程圖提供在節點上部署 Web 伺服器的概要說明:

圖 4–1 說明在單一節點上部署 Web 伺服器的流程圖

說明在節點上部署 Web 伺服器之步驟的流程圖。

部署程序將在以下各節中說明:

部署前置作業需求

若要在單一節點上部署 Web 伺服器,請執行以下作業讓系統做好準備:

  1. 在節點上安裝 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 版本說明」中的「支援的平台」

  2. 啟動管理伺服器。

    管理伺服器在指定的 SSL 連接埠上開始執行。

部署 Web 伺服器

使用以下程序在節點上部署 Web 伺服器:

  1. 您可以使用預設配置或建立新配置。

    如果要建立新配置,請為配置指定唯一名稱。新配置會建立虛擬伺服器和預設的 HTTP 偵聽程式。


    備註 –

    如果要使用管理主控台建立配置,精靈將提示您建立新實例。如果要使用 CLI,則必須使用 create-instance 指令明確建立配置實例。


    所有配置都儲存在 <install_dir>/admin-server/ 目錄下的 config-store 目錄中。


    注意 – 注意 –

    請勿編輯 config-store 目錄下的任何檔案。此目錄下的檔案是由 Web 伺服器 建立,供內部使用。


  2. 部署已修改的配置。

叢集環境

叢集是多個伺服器實例的群組,跨越一個以上的節點,全部執行相同的配置。叢集中的所有實例協同作業,以提供高可用性、穩定性和可延伸性。

藉由負載平衡,叢集可提供容錯移轉和階段作業複製功能,讓服務得以不中斷、階段作業資料擁有持續性。

硬體和軟體要求

依據本節說明的使用案例,Web 伺服器叢集由以下實體組成:

1) 四個實例 (在四個相同節點上執行) 

2) 一部管理伺服器 

3) 一部用以對 HTTP 請求進行負載平衡的反向代理伺服器 

若要設定叢集,需要兩個以上安裝相同作業系統版本和修補程式的相同節點。例如,如果選取安裝有 Solaris® 9 SPARC® 作業系統的機器,則叢集中的其他機器也必須安裝有 Solaris 9 SPARC。

如需有關支援的平台和修補程式需求的資訊,請參閱 「Sun Java System Web Server 7.0 Update 3 版本說明」

下圖說明了叢集環境。

圖 4–2 叢集設定

說明叢集設定的圖。

在此圖中,節點是在非警戒區域 (DMZ) 中配置的。管理伺服器是在防火牆 (警戒區域) 後配置的,用於限制和避免所有人存取管理伺服器。另一個節點配置為反向代理伺服器。反向代理伺服器位於 DMZ 之內,以提高安全性。


備註 –

僅 Solaris 10 作業系統支援 Solaris Zone 功能。


設定叢集

本節說明設定叢集和啟用反向代理伺服器,來支援對 HTTP 請求進行負載平衡的程序。

以下流程圖說明設定叢集的程序。

圖 4–3 說明叢集設定的流程圖

說明設定叢集之步驟的流程圖。

  1. 在其中一個節點上,將 Web 伺服器安裝為叢集中的管理伺服器。

  2. 在其他三個節點上安裝 Web 伺服器。選取將 Web 伺服器安裝為管理節點的選項。在安裝期間,請選擇向伺服器註冊節點的選項。

  3. 請確定管理伺服器是使用 SSL 連接埠進行通訊,因為只能在安全模式下向伺服器註冊管理節點。

  4. 請確定安裝管理伺服器和管理節點的所有節點,都有相同的系統日期與時間。建立與伺服器關聯的憑證時,需依據管理伺服器安裝所在節點的系統日期和時間。如果管理節點的系統日期早於管理伺服器,註冊將會失敗,因為管理伺服器的憑證尚未有效。同理,如果憑證已過期,可能仍被視為有效。

  5. install_dir/admin-server/bin/ 目錄啟動管理伺服器。

    install_dir/admin-server/bin>./startserv

  6. 從管理節點啟動 wadm 指令行工具。wadm 指令行工具位於 install_dir/bin 目錄中。

    install_dir/bin>./wadm

  7. 向管理伺服器註冊每個管理節點。使用 register-node 指令向伺服器註冊每個節點。

    例如:


    ./wadm register-node -user=admin --host=abc.sfbay.sun.com --port=8989

    其中,

    abc.sfbay.sun.com

    是向其註冊管理節點的管理伺服器之主機名稱。

    port

    是管理伺服器的 SSL 連接埠號碼。

  8. 系統將提示您輸入管理密碼。請輸入管理伺服器的管理密碼。

    管理伺服器與管理節點彼此互相認證,即管理伺服器信任管理節點的伺服器憑證,管理節點信任管理伺服器提供的用戶端憑證。在管理節點註冊期間,管理伺服器會產生該管理節點的伺服器憑證,此憑證之後會被下載並安裝到管理節點上。伺服器憑證的核發者也會安裝在管理節點上。


    備註 –

    註冊只能透過 SSL 來完成。


    如需有關註冊節點的更多資訊,請參閱 「Sun Java System Web Server 7.0 Update 3 Installation and Migration Guide」中的「Registering the Administration Node From the Command-Line」

  9. install_dir /admin-server/bin/ 目錄使用 startserv 指令來啟動所有管理節點。

  10. 使用管理主控台或 CLI 在管理伺服器中建立新配置。

    為新配置提供配置資訊,如配置名稱、HTTP 偵聽程式連接埠及伺服器名稱。

  11. 在所有節點上建立配置實例。

  12. 啟動所有節點上的實例。


    備註 –

    Web 伺服器能彈性擴充和縮減叢集規模。您可以隨時在叢集中增加或移除實例。


配置用於負載平衡的反向代理伺服器

Web Server 7.0 提供先進的內建負載平衡器,即反向代理伺服器。反向代理伺服器是伺服器機群中 Web 伺服器的閘道。配置反向代理伺服器後,會將請求轉寄到多台配置類似的 Web 伺服器。

請在 Web Server 7.0 中使用以下程序啟用反向代理伺服器:

  1. 在要用於配置反向代理伺服器的節點上安裝 Web 伺服器。

  2. 建立配置。例如 rp

  3. 使用管理主控台,選取 [配置] > [虛擬伺服器] > [內容處理] > [反向代理伺服器] 標籤。按一下 [新增] 按鈕。

  4. 輸入叢集中所有機器的反向代理伺服器 URI 和伺服器 URL (以逗號分隔)。

    伺服器 URL 的輸入格式為 hostname: portnumber

  5. 儲存變更。

  6. 部署已修改的配置,將變更套用至此配置。

  7. 啟動此已修改配置的所有實例。

此舉可完成反向代理伺服器的配置,以便對 HTTP 請求進行負載平衡。


備註 –

若要在叢集環境中配置反向代理伺服器,請核發萬用字元伺服器憑證,或可設為實際原始伺服器主機名稱的替代主體名稱。另一個可在主體名稱欄位中指定原始伺服器主機名稱的選項,會限制叢集的大小,導致在將其他節點增加至叢集時使此叢集產生故障。

您可使用管理介面建立萬用字元伺服器憑證。建立伺服器憑證後,請使用 certutil 取得 base64 編碼的憑證,並將其安裝為負載平衡器配置上可信任的 CA 憑證。

鍵入下列指令,以產生 base64 編碼的憑證:bash$./certutil -L -a -d instancedir/config。複製指令的輸出,並將其貼至安裝憑證精靈中。


配置反向代理伺服器中的逾時參數

Procedure配置反向代理伺服器中的逾時參數

  1. 登入管理主控台

  2. 從清單中選取配置

  3. 按一下 [編輯虛擬伺服器] 按鈕

  4. 按一下 [內容處理] 標籤

  5. 按一下 [反向代理伺服器] 子標籤

  6. 按一下反向代理伺服器清單中的 URI

    新視窗會隨即出現。

  7. 按一下 HTTP 用戶端配置連結

  8. 您可以編輯 [閒置逾時] 參數。預設值為 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 秒沒有回應,反向代理伺服器參數即會結束該連線,並將其視為離線狀態。

當反向代理伺服器參數嘗試對沒有回應或忙碌的後端實例建立連線時,等候連線回應的最長時間為五秒,接著即會將此實例視為離線狀態。

在圖形式介面中將 Web 伺服器當做反向代理伺服器

Procedure在圖形式介面中配置反向代理伺服器

  1. 登入管理主控台

  2. 從清單中選取配置

  3. 按一下 [編輯虛擬伺服器] 按鈕

  4. 按一下 [內容處理] 標籤

  5. 按一下 [反向代理伺服器] 子標籤

  6. 按一下 [新增] 按鈕

    新視窗會隨即出現。

  7. 若要對所有請求設定反向代理伺服器,請在 URI 中輸入 (/)。或者,輸入要對反向代理伺服器設定的 URI。

  8. 輸入您想要反向代理的伺服器 URL。

    例如 http://<content server-hostname>:port

  9. 按一下 [確定] 按鈕

  10. 按一下螢幕右上方的 [部署擱置] 連結。

  11. 按一下 [部署] 按鈕

    部署成功訊息隨即出現。

  12. 按一下 [配置] 標籤

  13. 啟動實例。

    存取您配置為反向代理伺服器的 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 模式下將 Web 伺服器當做反向代理伺服器

請依照下列步驟,以 CLI 模式配置反向代理伺服器。例如,我們將建立配置 config1,並建立實例 rp 做為反向代理伺服器。

  1. 啟動管理伺服器:

    $ <install-dir>/admin-server/bin/startserv

  2. 呼叫 CLI shell:

    <install-dir> /admin-server/bin/wadm -user <username>

    此時,您會看見 wadm shell

  3. 建立 config1

    wadm>create-config --http-port 8080 --server-name config1 --server-user root config1

  4. 建立 config1 配置的實例:

    wadm>create-instance --config config1 <host-name>

  5. 在已建立的配置上增加 Web 應用程式:

    wadm>add-webapp --config config1 -vs config1 --uri/test <warfile>

  6. 部署 Web 應用程式

    wadm> deploy-config --user=admin --password-file=admin.pwd --host=serverhost --port=8989 config1

  7. 建立 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

  8. 建立 rp 配置的實例

    wadm>create-instance --config rp <host-name>

  9. 啟動實例:

    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 伺服器叢集中,階段作業複製的程序如下:

Web 伺服器叢集環境中的容錯移轉程序運作方式如下:

Web Server 7.0 在階段作業複製中不支援以下功能:

啟用階段作業複製

您可以使用管理主控台或 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 應用程式。

  1. 若要為 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>
  2. 修改 sunweb.xml 檔案後,請重建 Web 應用程式或重新以 jar 壓縮應用程式,以建立 Web 應用程式歸檔 (war 檔案)。

  3. 重新啟動所有實例,以使 Web 應用程式在所有實例上均可用。

  4. 您可以從叢集中的所有節點存取 Web 應用程式。若要存取 Web 應用程式,請在瀏覽器中鍵入以下項目:

    http://webserver-name/webapplication-name/


    備註 –

    所有節點均可存取的目錄,最適用於儲存應用程式以進行部署。但是,管理伺服器並不一定要能存取此目錄不可。建議對大小超過 1 MB 的 Web 應用程式進行基於目錄的部署。

    若要建立搜尋集合,請確保搜尋集合位於所有節點均可存取的共用目錄中。


監視叢集

管理伺服器可監視叢集中的所有實例。Web 伺服器的監視功能可提供有關執行階段元件的狀態,和可用於執行以下操作的程序之資訊:

 

Solaris Zones

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