4.4. Smart Router 動作の設定
KIE Server が複数あるクラスター環境では、デフォルトの動作は各 KIE Server に並行して要求を送信し、各 KIE Server のホストには "round-robin" 方式を使用して要求が送信されます。以下の例の環境では、各 KIE Server は同じ KJAR でデプロイされますが、KJAR のバージョンはそれぞれ異なります。
表4.1 環境の例
サーバー名 | KJAR バージョン | ホスト |
---|---|---|
|
|
|
|
|
|
|
|
|
要求を送信する場合には、要求が kie-server1 (129.0.1.2)
、kie-server2 (129.0.2.3)
および kie-server3 (129.0.3.1)
に送信されます。
2 番目の要求を送信する場合には、要求は、各 KIE Server の次のホストに送信されます。例: kie-server1 (129.0.1.3)
、kie-server2 (129.0.2.1)
および kie-server3 (129.0.3.2)
。
Smart Router には変更可能なコンポーネントが 3 つあり、この動作を変更できます。
- ContainerResolver
- サーバーを操作する時に使用するコンテナー ID を検索するコンポーネント
- RestrictionPolicy
- Smart Router が特定のエンドポイントを使用でいないようにするコンポーネント
- ConfigRepository
- Smart Router 設定を維持するコンポーネント。これは主にルーティングテーブルに関係します。
- IdentityService
- 独自の ID プロバイダーを使用できるようにするコンポーネント。これは KIE Server インスタンス用です。
Smart Router は ServiceLoader
ユーティリティーを使用してこれらのコンポーネントを実装します。
- ContainerResolver
-
META-INF/services/org.kie.server.router.spi.ContainerResolver
- RestrictionPolicy
-
META-INF/services/org.kie.server.router.spi.RestrictionPolicy
- ConfigRepository
-
META-INF/services/org.kie.server.router.spi.ConfigRepository
- IdentityService
-
META-INF/services/org.kie.server.router.identity.IdentityService
たとえば、上記のシナリオでは、Smart Router が利用可能な KIE Server から最新バージョンの KJAR プロセスを検索して、そのプロセスで常に開始するように、ContainerResolver
をカスタマイズできます。このシナリオでは、各 KIE Server は KJAR を 1 つホストして、バージョンはすべて同じエイリアスを共有します。
Smart Router は実行可能な jar であるため、拡張子を追加するには、コマンドを変更する必要があります。以下に例を示します。
java -cp LOCATION/router-ext-7.7.1.redhat-00002.jar:rhpam-7.8.0-smart-router.jar org.kie.server.router.KieServerRouter
サービスが開始されると、コンポーネントに使用されている実装を示すログ出力が表示されます。
Mar 01, 2017 1:47:10 PM org.kie.server.router.KieServerRouter <init> INFO: KIE Server router repository implementation is InMemoryConfigRepository Mar 01, 2017 1:47:10 PM org.kie.server.router.proxy.KieServerProxyClient <init> INFO: Using 'LatestVersionContainerResolver' container resolver and restriction policy 'ByPassUserNotAllowedRestrictionPolicy' Mar 01, 2017 1:47:10 PM org.xnio.Xnio <clinit> INFO: XNIO version 3.3.6.Final Mar 01, 2017 1:47:10 PM org.xnio.nio.NioXnio <clinit> INFO: XNIO NIO Implementation Version 3.3.6.Final Mar 01, 2017 1:47:11 PM org.kie.server.router.KieServerRouter start INFO: KieServerRouter started on localhost:9000 at Wed Mar 01 13:47:11 CET 2017