第4章 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 トラフィックを有効にできます。
環境管理
環境の変更を管理します (例: サーバーインスタンスの追加または削除)

4.1. Smart Router を使用した KIE Server インスタンスの負荷分散

Smart Router は、複数の独立した KIE Server インスタンスを集約して 1 台のサーバーのように使用できます。個々の KIE Server インスタンスに要求をルーティングし、異なる KIE Server インスタンスからデータを集約できるため、インテリジェントなロードバランサーの役割を果たします。エイリアスを介して、Smart Router は プロキシーとなります。

前提条件

  • 複数の KIE Server インスタンスがインストールされている。

    注記

    Smart Router を使用するには、KIE Server を管理対象外として設定する必要はありません。

    管理対象外の KIE Server はコントローラーに接続されません。

    たとえば、管理対象外の KIE Server を Smart Router に接続してコントローラーで Smart Router を登録する場合には、Business Central は Smart Router を使用して管理対象外の KIE Server に問い合わせします。

手順

  1. Red Hat カスタマーポータルの「Software Downloads」ページに移動し (ログインが必要)、ドロップダウンオプションから製品およびバージョンを選択します。

    • Product: Process Automation Manager
    • バージョン: 7.8
  2. Red Hat Process Automation Manager 7.8.0 Add-Ons をダウンロードします。
  3. ダウンロードした rhpam-7.8.0-add-ons.zip ファイルを一時ディレクトリーに展開します。rhpam-7.8.0-smart-router.jar ファイルは展開した rhpam-7.8.0-add-ons ディレクトリーにあります。
  4. rhpam-7.8.0-smart-router.jar ファイルを、ファイルを実行するディレクトリーにコピーします。
  5. 以下のコマンドを入力して、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.8.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 は、ウォッチャーサービスシステムプロパティーを有効にする任意の設定です。

  6. Smart Router に接続する必要のあるすべての KIE Server インスタンスで、org. kie.server.router システムプロパティーを Smart Router の URL に設定します。
  7. クライアント側から 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 に直接コンテナーを作成する必要があります。例:

$ 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/
$ cat 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