關於這項作業
一旦環境變更,Web 伺服器的「智慧型管理」可逕行將 HTTP 要求遞送至 Liberty 群體的成員,而不必重新產生 WebSphere® 外掛程式配置檔。當新增、移除、啟動、停止或修改伺服器、叢集成員、應用程式或虛擬主機時,會將新資訊動態交付給 WebSphere 外掛程式。將會根據最新的資訊來遞送要求。
當應用程式部署在多個群體中時,Web 伺服器的「智慧型管理」會將應用程式要求遞送至所有應用程式實例。
以前,當將要求遞送至多個群體時,一個特定應用程式不能安裝在多個群體中。
如果要使用 Web 伺服器的「智慧型管理」將 HTTP 要求遞送至 Liberty 群體,請在群體的所有群體控制器中,啟用 dynamicRouting-1.0 特性。
dynamicRouting-1.0 特性提供「動態遞送」服務,可將遞送資訊交付給 Web 伺服器的「智慧型管理」。
使用 setup、genPluginCfg 和 genKeystore 指令動作來產生金鑰儲存庫(在外掛程式與「動態遞送」服務進行安全通訊時需要),以及一個外掛程式配置檔(用於在 WebSphere 外掛程式中啟用 Web 伺服器的「智慧型管理」)。
重要: 如果要遞送至多個群體中的相同應用程式,每一個群體必須有唯一名稱。群體的唯一名稱可能如下列兩個範例所示:
- 在群體控制器的 server.xml 中,使用 <dynamicRouting> XML 元素的 connectorClusterName 屬性。
相同群體中的所有控制器必須使用相同的 connectorClusterName 屬性值。不同群體中的控制器必須使用不同的 connectorClusterName 屬性值。
如果指定 connectorClusterName 屬性,值會置換建立群體時所用的 –collectiveName 選項所指定的值。
- 以 collective create 指令建立群體時使用 collectiveName 選項。
每一個群體中的「動態遞送」控制器會將群體狀態告知 WebSphere 外掛程式,以便外掛程式能夠動態地將相同應用程式的要求遞送至多個群體。
「動態遞送」控制器會將控制器群體中可用的每一個應用程式,告知 WebSphere 外掛程式。
因此,WebSphere 外掛程式可得知有一個應用程式在多個群體中可用。
除非規則另有指示,否則應用程式的所有要求會平衡分配給所有適當的伺服器。
遞送規則功能可以將送入 WebSphere 外掛程式的要求,遞送至一組指定的伺服器。此外,還可選擇拒絕或重新導向要求。經由比對送入要求的屬性,就能選擇是否將規則套用至送入的要求。
- 請將下列程式碼新增至控制器 server.xml 中的 featureManager 標籤,以便在該控制器中啟用「動態遞送」。
<feature>dynamicRouting-1.0</feature>
- 選擇性的: 將 <dynamicRouting> 元素新增至控制器 server.xml,以指定動態遞送的內容。
connectorClusterName 內容指定的名稱可讓動態遞送與群體產生關聯。如果未指定 connectorClusterName 內容,則會使用群體的名稱。
例如,在第一個群體的所有控制器上,指定下列名稱:
<dynamicRouting connectorClusterName="collective1"/>
例如,在第二個群體的所有控制器上,指定下列名稱:
<dynamicRouting connectorClusterName="collective2"/>
如果連線失敗,
retryInterval 內容指定試圖再次連接控制器之前的等待時間。
maxRetries 內容指定嘗試重新連接失敗群體控制器的次數。請參閱下列範例:
<dynamicRouting maxRetries="4" retryInterval="20" connectorClusterName="collective1"/>
<TraceSpecification name="default" specification=":DEBUG"/>
</dynamicRouting>
產生的
plugin-cfg.xml 包含
ConnectorCluster 內容。請參閱下列範例:
<IntelligentMangement>
…
<ConnectorCluster enabled="true" maxRetries="4" name="collective1" retryInterval="20">
<Property name="uri" value="/ibm/api/dynamicRouting"/>
<Connector host="controller1.acme.com" port="9444" protocol="https">
<Property name="keyring" value="/opt/HTTPServer_Plugins/config/webServer1/plugin-key.kdb"/>
</Connector>
</ConnectorCluster>
…
</IntelligentManagement>
- 啟動所有已啟用「動態遞送」特性的控制器。
- 在其中一部控制器上執行 dynamicRouting setup 指令,來產生金鑰儲存庫和外掛程式配置檔。
如果要建立多群體動態遞送所需的構件,請使用
--collectives 選項,而不是
--port、
--host、
--user 或
--password 選項。請以
collective_user:user_password@collective_host:port 格式指定群體,並利用逗點 (
,) 區隔每一個群體。請參閱下列範例:
./dynamicRouting setup --collectives user1:password1@host1:port1,user2:password2@host2:port2,...
--keystorePassword=webAS --pluginInstallRoot=/opt/HTTPServer_Plugins/ --webServerNames=webserver1
請確定每一個群體有唯一名稱。另外,也要確定使用者存在於其群體的使用者登錄中,而且具備管理角色。如果未指定密碼,則會提示您輸入密碼。
請參閱 --collectives 選項的需求。
如需 dynamicRouting setup 指令的相關資訊,請參閱「動態遞送」指令。
- 將所有產生的 plugin-key*.jks 檔和 plugin-cfg.xml 檔,複製到 Web 伺服器主機上的暫存目錄。
--collectives 選項中會建立多個金鑰儲存庫檔:
- plugin-key.jks 可讓所有群體中的群體成員伺服器,接受透過 Web 伺服器代理的要求。
- plugin-key-collective_name.jks 為 --collectives 選項所指定的每一個群體,提供外掛程式金鑰檔。
這些檔案可讓 WebSphere 外掛程式安全地與特定群體中的群體控制器通訊。
- 在 Web 伺服器主機上執行 gskcmd(包含在 IHS 套件中),以便將金鑰儲存庫轉換成 CMS 格式,以及將個人憑證設為預設值。CMS 格式是 WebSphere 外掛程式支援的格式。請參閱下列範例:
gskcmd -keydb -convert -pw <password> -db /tmp/plugin-key.jks -old_format jks -target /tmp/plugin-key.kdb -new_format cms -stash
gskcmd -cert -setdefault -pw <password> -db /tmp/plugin-key.kdb -label default
對所有產生的 plugin-key*.jks 檔,執行 gskcmd。變更 –db 和 –target 選項來指定每一個檔案。
若為 z/OS®,請參閱在 z/OS 上將金鑰儲存庫轉換成 CMS 格式。
- 將 gskcmd 建立的 plugin-key.kdb、plugin-key.rdb 和 plugin-key.sth 檔,全部從暫存目錄複製到 --pluginInstallRootargument_value/config/web_server_name/ 目錄。
- 將 plugin-cfg.xml 檔複製到 Web 伺服器 httpd.conf 檔中之 WebSpherePluginConfig 指引所指定的目錄。
產生的 plugin-cfg.xml 檔中含有 <IntelligentManagement> 段落。當群體中啟用「動態遞送」時,在該檔案中,每一個群體控制器會有一個 <Connector> 段落。若為多群體遞送,每一個群體各有一個 <ConnectorCluster> 段落。請參閱下列範例:
<Property Name="Keyfile" Value="/opt/IBM/WebSphere/Plugins/config/webserver1/plugin-key.kdb"/>
<Property Name="Stashfile" Value="/opt/IBM/WebSphere/Plugins/config/webserver1/plugin-key.sth"/>
<IntelligentMangement>
<Property name="webserverName" value="webserver1"/>
<Property name="RoutingRulesConnectorClusterName" value="collective1"/>
<ConnectorCluster enabled="true" maxRetries="-1" name="collective1" retryInterval="60">
<Property name="uri" value="/ibm/api/dynamicRouting"/>
<Connector host="controller1.acme.com" port="9444" protocol="https">
<Property name="keyring" value="/opt/HTTPServer_Plugins/config/webserver1/plugin-key-collective1.kdb"/>
</Connector>
</ConnectorCluster>
<ConnectorCluster enabled="true" maxRetries="-1" name="collective2" retryInterval="60">
<Property name="uri" value="/ibm/api/dynamicRouting"/>
<Connector host="controller2.acme.com" port="9444" protocol="https">
<Property name="keyring" value="/opt/HTTPServer_Plugins/config/webserver1/plugin-key-collective2.kdb"/>
</Connector>
</ConnectorCluster>
</IntelligentManagement>
- 啟動 Web 伺服器,並開始遞送至安裝在群體中的應用程式。
選用:建立遞送規則,指定如何處理特定的要求。 遞送規則可以指定:
- 拒絕特定的要求。
- 重新導向特定的要求。
- 容許特定的要求遞送至一部分可用的伺服器。
- 由一組伺服器失效接手另一組伺服器的特定要求。
請參閱Liberty 動態遞送的遞送規則和配置 Liberty 動態遞送的遞送規則。