アプリケーションが複数の集合にデプロイされている場合はすべてのアプリケーション・インスタンスにアプリケーション要求をルーティングするように、動的ルーティング・フィーチャーを構成できます。
このタスクについて
Web サーバー用 Intelligent Management は、環境に変更があったときに管理者が WebSphere® プラグイン構成ファイルを再生成することを必要とせずに、
Liberty 集合のメンバーへの HTTP 要求のルーティングを可能にします。サーバー、クラスター・メンバー、
アプリケーション、または仮想ホストが、追加、削除、開始、停止、または変更されると、
新しい情報が動的に WebSphere プラグインに送達されます。最新の情報に基づいて要求がルーティングされるようになります。
アプリケーションが複数の集合にデプロイされている場合、Web サーバー用 Intelligent Management は、すべてのアプリケーション・インスタンスにアプリケーション要求をルーティングします。
以前は、要求が複数の集合にルーティングされる場合、特定のアプリケーションを複数の集合にインストールすることは許可されていませんでした。
Web サーバー用 Intelligent Management を使用して、HTTP 要求を Liberty 集合にルーティングするには、それらの集合のすべての集合コントローラーで dynamicRouting-1.0 フィーチャーを有効にします。dynamicRouting-1.0 フィーチャーは、ルーティング情報を Web サーバー用 Intelligent Management に配信する動的ルーティング・サービスを提供します。コマンド・アクション setup、genPluginCfg、および genKeystore を使用して、
プラグインと動的ルーティング・サービスとの間のセキュア通信に必要な鍵ストアを生成し、WebSphere プラグインの Web サーバー用 Intelligent Management を使用可能にするプラグイン構成ファイルも生成します。
重要: 複数の集合内の同じアプリケーションにルーティングするには、それぞれの集合の名前が固有である必要があります。集合の固有の名前は、以下の 2 つの例のいずれかで使用できます。
- 集合コントローラーの server.xml 内の <dynamicRouting> XML エレメントの connectorClusterName 属性を使用します。同じ集合内のすべてのコントローラーは、
connectorClusterName 属性に同じ値を使用しなければなりません。異なる集合内のコントローラーは、
connectorClusterName 属性に異なる値を使用しなければなりません。connectorClusterName 属性が指定されている場合、その値は、集合が作成されたときに使用された –collectiveName オプションで指定された値をオーバーライドします。
- collective create コマンドで集合が作成されるときに ‑‑collectiveName オプションを使用します。
各集合内の動的ルーティング・コントローラーは、集合の状況を WebSphere プラグインに通知します。それによって、プラグインは複数の集合にわたって同じアプリケーションに対する要求を動的にルーティングすることができます。動的ルーティング・コントローラーは、コントローラーの集合内で使用可能な各アプリケーションについて WebSphere プラグインに通知します。したがって、WebSphere プラグインは、複数の集合でアプリケーションが使用可能になるとそれを認識できます。
そうでないと明示するルールがない限り、アプリケーションへのすべての要求は、該当するすべてのサーバー間でバランスが取られます。
ルーティング・ルール機能を使用すると、WebSphere プラグインへの着信要求を、指定されたサーバー・セットにルーティングできます。また、
要求を選択的に拒否またはリダイレクトすることもできます。着信要求にルールを適用するかどうかの選択は、着信要求の属性の突き合わせによって行われます。
- コントローラーの server.xml 内の featureManager タグに以下のコードを追加することによって、
そのコントローラーで動的ルーティングを使用可能にします。
<feature>dynamicRouting-1.0</feature>
- オプション: 動的ルーティングのプロパティーを指定するため、コントローラーの server.xml に <dynamicRouting> エレメントを追加します。
connectorClusterNameプロパティーは、動的ルーティングが集合と関連付ける名前を指定します。connectorClusterName プロパティーが指定されていない場合、集合の名前が使用されます。
例えば、最初の集合では、すべてのコントローラーで以下の名前を指定します。
<dynamicRouting connectorClusterName="collective1"/>
例えば、2 番目の集合では、すべてのコントローラーで以下の名前を指定します。
<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>
- 動的ルーティング・フィーチャーが有効になったすべてのコントローラーを開始します。
- コントローラーの 1 つで dynamicRouting setup コマンドを実行して、
鍵ストア・ファイルおよびプラグイン構成ファイルを生成します。
複数の集合での動的ルーティングに必要な成果物を作成するには、
--port、
--host、
--user、または
--password オプションの代わりに、
--collectives オプションを使用します。
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> スタンザを伴って生成されます。集合において動的ルーティングが使用可能になっている場合、
このファイルには集合コントローラーごとに 1 つの <Connector> スタンザが含まれます。複数の集合でのルーティングの場合、集合ごとに 1 つの <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 サーバーを始動し、集合にインストールされたアプリケーションへのルーティングを開始します。
オプション: 特定の要求がどのように処理されるのかを指定するルーティング・ルールを作成します。 以下を行うようにルーティング・ルールを指定できます。
- 特定の要求を拒否する。
- 特定の要求をリダイレクトする。
- 特定の要求が使用可能なサーバーのサブセットに送付されることを許可する。
- 特定の要求を 1 つのサーバー・セットから別のサーバー・セットにフェイルオーバーする。
『Liberty 動的ルーティングのルーティング・ルール』および『Liberty 動的ルーティングのルーティング・ルールの構成』を参照してください。