第30章 Smart Router のインストールおよび設定
Smart Router (KIE Server ルーター) は、複数の KIE Server、クライアントアプリケーション、他のコンポーネント間の統合レイヤーとして使用可能な軽量の Java コンポーネントです。デプロイメントや実行環境に合わせて、Smart Router は複数の独立した KIE Server インスタンスを単一サーバーのように集約できます。Smart Router には以下の機能があります。
- データ集約
- クライアントアプリケーションの要求があると、全 KIE Server インスタンス (各グループからインスタンス 1 つ) からデータを収集し、結果を 1 つの応答にまとめます。
- ルーティング
- クライアントアプリケーションからサービスへの呼び出しを受信して、各呼び出しを自動的に個別サービスを実行する KIE Server にルーティングする単一のエンドポイントとして機能します。つまり、KIE Server に同じサービスをデプロイする必要はありません。
- 負荷分散
- 負荷分散を効率化します。Smart Router クラスターの負荷分散要求は、標準負荷分散ツールを使用して外部で管理する必要があります。
- 認証
- システムプロパティーフラグを使用して KIE Server インスタンスを認証し、HTTPS トラフィックを有効にできます。
- 環境管理
- 環境の変更を管理します (例: サーバーインスタンスの追加または削除)
30.1. Smart Router による KIE サーバーインスタンスのロードバランシング
Smart Router は、複数の独立した KIE Server インスタンスを集約して 1 台のサーバーのように使用できます。Smart Router は、個々の KIE Server インスタンスに要求を送信し、複数の KIE Server インスタンスからデータを集約できるため、インテリジェントなロードバランサーのロールを果たします。エイリアスを介して、Smart Router は プロキシーとなります。
前提条件
複数の KIE サーバーインスタンスがインストールされている。
注記Smart Router を使用するには、KIE Server を管理対象外として設定する必要はない。
管理されていない KIE サーバーインスタンスがコントローラーに接続されない。たとえば、管理対象外の KIE Server インスタンスを Smart Router に接続してコントローラーで Smart Router を登録する場合には、Business Central は Smart Router を使用して管理対象外の KIE Server インスタンスに問い合わせる。
手順
Red Hat カスタマーポータルの Software Downloads ページに移動し (ログインが必要)、ドロップダウンオプションから製品およびバージョンを選択します。
- Product: Process Automation Manager
- Version: 7.12
- Red Hat Process Automation Manager 7.12.0 Add-Ons をダウンロードします。
-
ダウンロードした
rhpam-7.12.0-add-ons.zip
ファイルを一時ディレクトリーに展開します。rhpam-7.12.0-smart-router.jar
ファイルは展開したrhpam-7.12.0-add-ons
ディレクトリーにあります。 -
rhpam-7.12.0-smart-router.jar
ファイルを、ファイルを実行するディレクトリーにコピーします。 以下のコマンドを入力して、Smart Router を起動します。
java -Dorg.kie.server.router.host=<ROUTER_HOST> -Dorg.kie.server.router.port=<ROUTER_PORT> -Dorg.kie.server.controller=<CONTROLLER_URL> -Dorg.kie.server.controller.user=<CONTROLLER_USER> -Dorg.kie.server.controller.pwd=<CONTROLLER_PWD> -Dorg.kie.server.router.config.watcher.enabled=true -Dorg.kie.server.router.repo=<NFS_STORAGE> -jar rhpam-7.12.0-smart-router.jar
上のコマンドのプロパティーのデフォルト値は、以下のようになります。
org.kie.server.router.host=localhost org.kie.server.router.port=9000 org.kie.server.controller= N/A org.kie.server.controller.user=kieserver org.kie.server.controller.pwd=kieserver1! org.kie.server.router.repo= <CURRENT_WORKING_DIR> org.kie.server.router.config.watcher.enabled=false
org.kie.server.controller
は、以下のように、サーバーコントローラーの URL です。org.kie.server.controller=http://<HOST>:<PORT>/controller/rest/controller
org.kie.server.router.config.watcher.enabled
は、ウォッチャーサービスシステムプロパティーを有効にする任意の設定です。注記コマンドラインで設定プロパティーを指定する代わりに、設定ファイルを使用することができます。ファイルを使用した Smart Router の設定は、「設定ファイルを使用した Smart Router の設定」 を参照してください。
-
Smart Router に接続する必要のあるすべての KIE サーバーインスタンスでは、
org.kie.server.router
システムプロパティーに Smart Router の URL を設定します。 クライアント側から Smart Router にアクセスするには、以下のように、KIE Server の URL の代わりに Smart Router の URL を使用します。
KieServicesConfiguration config = KieServicesFactory.newRestConfiguration("http://smartrouter.example.com:9000", "USERNAME", "PASSWORD");
この例では、
smartrouter.example.com
は Smart Router URL で、USERNAME
およびPASSWORD
は、Smart Router 設定のログイン認証情報です。データサンプルを投入できるように、管理対象外の KIE Server に新しいコンテナーを作成するには、以下の HTTP 要求を送信します。
$ curl -v -X POST -H 'Content-type: application/xml' -H 'X-KIE-Content-Type: xstream' -d @create-container.xml -u ${KIE_CRED} http://${KIE-SERVER-HOST}:${KIE-SERVER-PORT}/kie-server/services/rest/server/config/
create-container.xml
ファイルの内容を確認します。<script> <create-container> <container container-id="example:timer-test:1.1"> <release-id> <group-id>example</group-id> <artifact-id>timer-test</artifact-id> <version>1.1</version> </release-id> <config-items> <itemName>RuntimeStrategy</itemName> <itemValue>PER_PROCESS_INSTANCE</itemValue> <itemType></itemType> </config-items> </container> </create-container> </script>
Smart Router コンソールにデプロイされたメッセージが表示されます。以下に例を示します。
INFO: Added http://localhost:8180/kie-server/services/rest/server as server location for container example:timer-test:1.1
コンテナーの一覧を表示するには、次のコマンドを入力します。
$ curl http://localhost:9000/mgmt/list
コンテナーの一覧が表示されます。
{ "containerInfo": [{ "alias": "timer-test", "containerId": "example:timer-test:1.1", "releaseId": "example:timer-test:1.1" }], "containers": [ {"example:timer-test:1.1": ["http://localhost:8180/kie-server/services/rest/server"]}, {"timer-test": ["http://localhost:8180/kie-server/services/rest/server"]} ], "servers": [ {"kieserver2": []}, {"kieserver1": ["http://localhost:8180/kie-server/services/rest/server"]} ] }
Smart Router の URL を使用してプロセスを初期化するには以下のコマンドを入力します。
$ curl -s -X POST -H 'Content-type: application/json' -H 'X-KIE-Content-Type: json' -d '{"timerDuration":"9s"}' -u kieserver:kieserver1! http://localhost:9000/containers/example:timer-test:1.1/processes/timer-test.TimerProcess/instances