[17.0.0.1 以及更新版本]

設定多個 Liberty 群體的動態遞送

當應用程式部署在多個群體中時,您可以配置「動態遞送」特性,將應用程式要求遞送至所有應用程式實例。

開始之前

完成設定 Liberty 群體的動態遞送中的產品安裝步驟。

關於這項作業

一旦環境變更,Web 伺服器的「智慧型管理」可逕行將 HTTP 要求遞送至 Liberty 群體的成員,而不必重新產生 WebSphere® 外掛程式配置檔。當新增、移除、啟動、停止或修改伺服器、叢集成員、應用程式或虛擬主機時,會將新資訊動態交付給 WebSphere 外掛程式。將會根據最新的資訊來遞送要求。

當應用程式部署在多個群體中時,Web 伺服器的「智慧型管理」會將應用程式要求遞送至所有應用程式實例。 以前,當將要求遞送至多個群體時,一個特定應用程式不能安裝在多個群體中。

如果要使用 Web 伺服器的「智慧型管理」將 HTTP 要求遞送至 Liberty 群體,請在群體的所有群體控制器中,啟用 dynamicRouting-1.0 特性。 dynamicRouting-1.0 特性提供「動態遞送」服務,可將遞送資訊交付給 Web 伺服器的「智慧型管理」。 使用 setupgenPluginCfggenKeystore 指令動作來產生金鑰儲存庫(在外掛程式與「動態遞送」服務進行安全通訊時需要),以及一個外掛程式配置檔(用於在 WebSphere 外掛程式中啟用 Web 伺服器的「智慧型管理」)。

重要: 如果要遞送至多個群體中的相同應用程式,每一個群體必須有唯一名稱。群體的唯一名稱可能如下列兩個範例所示:
  • 在群體控制器的 server.xml 中,使用 <dynamicRouting> XML 元素的 connectorClusterName 屬性。 相同群體中的所有控制器必須使用相同的 connectorClusterName 屬性值。不同群體中的控制器必須使用不同的 connectorClusterName 屬性值。 如果指定 connectorClusterName 屬性,值會置換建立群體時所用的 –collectiveName 選項所指定的值。
  • collective create 指令建立群體時使用 collectiveName 選項。

每一個群體中的「動態遞送」控制器會將群體狀態告知 WebSphere 外掛程式,以便外掛程式能夠動態地將相同應用程式的要求遞送至多個群體。 「動態遞送」控制器會將控制器群體中可用的每一個應用程式,告知 WebSphere 外掛程式。 因此,WebSphere 外掛程式可得知有一個應用程式在多個群體中可用。 除非規則另有指示,否則應用程式的所有要求會平衡分配給所有適當的伺服器。

遞送規則功能可以將送入 WebSphere 外掛程式的要求,遞送至一組指定的伺服器。此外,還可選擇拒絕或重新導向要求。經由比對送入要求的屬性,就能選擇是否將規則套用至送入的要求。

程序

  1. 請將下列程式碼新增至控制器 server.xml 中的 featureManager 標籤,以便在該控制器中啟用「動態遞送」。
    <feature>dynamicRouting-1.0</feature>
  2. 選擇性的: <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>
  3. 啟動所有已啟用「動態遞送」特性的控制器。
  4. 在其中一部控制器上執行 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 指令的相關資訊,請參閱「動態遞送」指令

  5. 將所有產生的 plugin-key*.jks 檔和 plugin-cfg.xml 檔,複製到 Web 伺服器主機上的暫存目錄。

    --collectives 選項中會建立多個金鑰儲存庫檔:

    • plugin-key.jks 可讓所有群體中的群體成員伺服器,接受透過 Web 伺服器代理的要求。
    • plugin-key-collective_name.jks--collectives 選項所指定的每一個群體,提供外掛程式金鑰檔。

    這些檔案可讓 WebSphere 外掛程式安全地與特定群體中的群體控制器通訊。

  6. 在 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 格式

  7. gskcmd 建立的 plugin-key.kdbplugin-key.rdbplugin-key.sth 檔,全部從暫存目錄複製到 --pluginInstallRootargument_value/config/web_server_name/ 目錄。
  8. 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>
  9. 啟動 Web 伺服器,並開始遞送至安裝在群體中的應用程式。
  10. [17.0.0.1 以及更新版本]選用:建立遞送規則,指定如何處理特定的要求。

    遞送規則可以指定:

    • 拒絕特定的要求。
    • 重新導向特定的要求。
    • 容許特定的要求遞送至一部分可用的伺服器。
    • 由一組伺服器失效接手另一組伺服器的特定要求。

    請參閱Liberty 動態遞送的遞送規則配置 Liberty 動態遞送的遞送規則

結果

由於啟用 dynamicRouting-1.0 特性,「智慧型管理」現在可以動態地將 HTTP 要求遞送至 Liberty 群體。


指示主題類型的圖示 作業主題

檔名:twlp_wve_enabledynrout_multiple.html