第3章 ランタイム環境における Process Server クラスター

ランタイム環境では、Process Server は、ビジネス上の決定をサポートするルールおよびプロセスが含まれるサービスを実行します。Process Server ランタイム環境をクラスタリングする主な利点は負荷分散です。クラスターのノードの 1 つでアクティビティーが増えると、そのアクティビティーはクラスターの残りのノードと共有されるため、パフォーマンスが改善します。

Process Server のクラスター化ランタイム環境を作成するには、Red Hat JBoss EAP 7.2 および Process Server をダウンロードして展開します。次に、クラスターに Red Hat JBoss EAP 7.2 を設定し、クラスターを起動し、各クラスターノードに Process Server をインストールします。

任意で、ヘッドレス Process Automation Manager コントローラーおよび Smart Router をクラスター化できます。

3.1. Red Hat JBoss EAP 7.2 および Process Server のダウンロードおよび展開

本セクションの手順を行い、Red Hat JBoss EAP 7.2 をダウンロードしてインストールし、クラスター環境にインストールするために Process Server をダウンロードして再パッケージ化します。

手順

  1. クラスターの各ノードに Red Hat JBoss EAP 7.2 をインストールします。

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

      • 製品: Red Hat JBoss EAP
      • バージョン: 7.2
    2. Red Hat JBoss Enterprise Application Platform 7.2.0 (jboss-eap-7.2.0.zip)の横にある Download をクリックします。
  2. jboss-eap-7.2.0.zip ファイルを展開します。jboss-eap-7.2/jboss-eap-7.2 ディレクトリーは EAP_HOME とします。
  3. 最新の Red Hat JBoss EAP パッチが利用できる場合には、ダウンロードして適用します。
  4. Process Server をダウンロードします。

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

      • 製品: Process Automation Manager
      • バージョン: 7.6
    2. Red Hat Process Automation Manager 7.6.0 Process Server for All Supported EE8 Containers (rhpam-7.6.0-kie-server-ee8.zip) をダウンロードします。
  5. rhpam-7.6.0-kie-server-ee8.zip アーカイブを一時ディレクトリーに展開します。以下の例では、このディレクトリーを TEMP_DIR とします。
  6. TEMP_DIR/rhpam-7.6.0-kie-server-ee8/rhpam-7.6.0-kie-server-ee8/kie-server.war ディレクトリーを EAP_HOME/standalone/deployments/ にコピーします。

    警告

    コピーする Red Hat Process Automation Manager デプロイメントの名前が、Red Hat JBoss EAP インスタンスの既存デプロイメントと競合しないことを確認します。

  7. TEMP_DIR/rhpam-7.6.0-kie-server-ee8/rhpam-7.6.0-kie-server-ee8/SecurityPolicy/ の内容を EAP_HOME/bin にコピーします。ファイルの上書きを確認するメッセージが表示されたら、Replace をクリックします。
  8. EAP_HOME/standalone/deployments/ ディレクトリーに、kie-server.war.dodeploy という名前で空のファイルを作成します。このファイルにより、サーバーが起動すると Process Server が自動的にデプロイされます。
  9. 最新の Red Hat Process Automation Manager のパッチが利用できる場合には、ダウンロードして適用します。
  10. EAP_HOME/bin ディレクトリーに移動します。
  11. Process Server にログインするのに使用する、kie-server ロールを持つユーザーを作成します。

    $ ./add-user.sh -a --user <USERNAME> --password <PASSWORD> --role kie-server
  12. ユーザー名とパスワードを書き留めておきます。

3.2. Process Server 向けの Red Hat JBoss EAP 7.2 クラスターの設定および実行

Process Server 向けに Red Hat JBoss EAP クラスターを設定して、起動します。

手順

  1. JDBC ドライバーを、このクラスターの一部となる Red Hat JBoss EAP の全インスタンスにインストールします。詳細は『Red Hat JBoss EAP 7.2 設定ガイド』「JDBC ドライバー」セクションを参照してください。
  2. テキストエディターで EAP_HOME/standalone/configuration/standalone-full.xml ファイルを開きます。
  3. data-stores プロパティーと、その上の timer-service thread-pool-name を編集します。

    • datasource-jndi-name は、この手順の最初で指定したデータベースの JNDI 名です。
    • partition プロパティーの値にはあらゆる名前を入力できますが、ノードには、同じパーティション名を持つその他のノードのタイマーのみが表示されます。パーティション名を割り当てて、パーティションでノードをグループ分けすると、大規模なクラスターを複数の小規模クラスターに分割できます。これによりパフォーマンスが改善します。たとえば、1 つのクラスターに 100 ノードがあり、100 ノードがすべて同じタイマーを実行して更新する代わりに、5 個ずつのグループに異なるパーティション名を指定することで、ノードを 5 個ずつ分割して 20 個のクラスターを作成することができます。
    • default-data-store 属性値を ejb_timer_ds に置き換えます。
    • refresh-interval の値をミリ秒で設定して、EJB タイマーがデータベースに接続して同期し、処理するタスクをロードする頻度を指定します。

      <timer-service thread-pool-name="default" default-data-store="ejb_timer_ds">
      <data-stores>
          <database-data-store name="ejb_timer_ds" datasource-jndi-name="java:jboss/datasources/ejb_timer" database="postgresql" partition="ejb_timer_part" refresh-interval="30000"/>
      </data-stores>
      </timer-service>

      以下の表は、サポートされるデータベースと、対応する database 属性値を示しています。

      表3.1 サポートされているデータベース

      データベース属性値

      Hyper SQL (デモを目的としており、サポートはされません)

      hsql

      PostgreSQL

      postgresql

      Oracle

      oracle

      IBM DB2

      db2

      Microsoft SQL Server

      mssql

      MySQL および MariaDB

      mysql

  4. Process Server および EJB タイマーデータソースを standalone-full.xml ファイルに追加します。この例では、<DATABASE> はデータベース名、<SERVER_NAME> は JNDI データベースのホスト名、<USER_NAME> および <USER_PWD> はそのデータベースの認証情報になります。

    • 以下のように、データソースを追加して、Process Server がデータベースに接続できるようにします。

      <xa-datasource jndi-name="java:/jboss/datasources/rhpam" pool-name="rhpam-RHPAM" use-java-context="true" enabled="true">
        <xa-datasource-property name="DatabaseName"><DATABASE></xa-datasource-property>
        <xa-datasource-property name="PortNumber">5432</xa-datasource-property>
        <xa-datasource-property name="ServerName"><SERVER_NAME></xa-datasource-property>
        <driver>postgresql</driver>
        <security>
          <user-name><USER_NAME></user-name>
          <password><USER_PWD></password>
      </security>
      </xa-datasource>
    • 以下のように、EJB タイマーにデータソースを追加します。

      <xa-datasource jndi-name="java:jboss/datasources/ejb_timer" pool-name="ejb_timer" use-java-context="true" enabled="true">
          <xa-datasource-property name="DatabaseName"><DATABASE></xa-datasource-property>
          <xa-datasource-property name="PortNumber">5432</xa-datasource-property>
          <xa-datasource-property name="ServerName"><SERVER_NAME></xa-datasource-property>
          <driver>postgresql</driver>
          <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
          <security>
              <user-name><USER_NAME></user-name>
              <password><USER_PWD></password>
          </security>
      </xa-datasource>
      警告

      Process Server ランタイムデータおよび EJB タイマーデータに、別のデータベースを使用する必要があります。

  5. <system-properties> 要素に以下のプロパティーを追加し、以下のプレースホルダーを置き換えます。

    • <JNDI_NAME> は、データソースの JNDI 名です。Red Hat Process Automation Manager の場合は java:/jboss/datasources/rhpam です。
    • <DIALECT> は、データベースの hibernate ダイアレクトです。

      以下の方言がサポートされます。

      • DB2: org.hibernate.dialect.DB2Dialect
      • MSSQL: org.hibernate.dialect.SQLServer2012Dialect
      • MySQL: org.hibernate.dialect.MySQL5InnoDBDialect
      • MariaDB: org.hibernate.dialect.MySQL5InnoDBDialect
      • Oracle: org.hibernate.dialect.Oracle10gDialect
      • PostgreSQL: org.hibernate.dialect.PostgreSQL82Dialect
      • PostgreSQL plus: org.hibernate.dialect.PostgresPlusDialect

        <system-properties>
          <property name="org.kie.server.persistence.ds" value="<JNDI_NAME>"/>
          <property name="org.kie.server.persistence.dialect" value="<DIALECT>"/>
          <property name="org.jbpm.ejb.timer.tx" value="true"/>
        </system-properties>
  6. standalone-full.xml ファイルを保存します。
  7. クラスターを起動するには EAP_HOME/bin に移動して、以下のコマンドの 1 つを入力します。

    • Linux または UNIX ベースのシステムの場合:

      $ ./standalone.sh -c standalone-full.xml
    • Windows の場合:

      standalone.bat -c standalone-full.xml

3.3. ヘッドレス Process Automation Manager コントローラーを使用した Process Server のクラスタリング

Process Automation Manager コントローラーは Business Central と統合します。ただし、Business Central をインストールしない場合は、ヘッドレス Process Automation Manager コントローラーをインストールし、REST API または Process Server Java Client API を使用してそのコントローラーと対話します。

前提条件

  • バックアップを作成してある Red Hat JBoss EAP システム (バージョン 7.2 またはそれ以降) が利用できる。Red Hat JBoss EAP システムのベースディレクトリーを EAP_HOME とします。
  • インストールを完了するために必要なユーザーパーミッションが十分に付与されている。
  • xref:nfs-server-configure-proc> に記載されているように、パーティションをマウントした NFS サーバーが利用できる。

手順

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

    • 製品: Process Automation Manager
    • バージョン: 7.6
  2. Red Hat Process Automation Manager 7.6.0 Add Ons (rhpam-7.6.0-add-ons.zip ファイル) をダウンロードします。
  3. rhpam-7.6.0-add-ons.zip ファイルを展開します。rhpam-7.6-controller-ee7.zip ファイルは展開したディレクトリーにあります。
  4. rhpam-7.6-controller-ee7 アーカイブを一時ディレクトリーに展開します。以下の例では、このディレクトリーを TEMP_DIR とします。
  5. TEMP_DIR/rhpam-7.6-controller-ee7/controller.war ディレクトリーを EAP_HOME/standalone/deployments/ にコピーします。

    警告

    コピーするヘッドレス Process Automation Manager コントローラーデプロイメントの名前が、Red Hat JBoss EAP インスタンスの既存デプロイメントと競合しないことを確認します。

  6. TEMP_DIR/rhpam-7.6-controller-ee7/SecurityPolicy/ ディレクトリーの内容を EAP_HOME/bin にコピーします。ファイルの上書きを確認するメッセージが表示されたら、Yes を選択します。
  7. EAP_HOME/standalone/deployments/ ディレクトリーに、controller.war.dodeploy という名前で空のファイルを作成します。このファイルにより、サーバーが起動するとヘッドレス Process Automation Manager コントローラーが自動的にデプロイされます。
  8. テキストエディターで EAP_HOME/standalone/configuration/standalone.xml ファイルを開きます。
  9. 以下のプロパティーを <system-properties> 要素に追加し、<NFS_STORAGE>を、テンプレート設定が保存されている NFS ストレージへの絶対パスに置き換えます。

    <system-properties>
      <property name="org.kie.server.controller.templatefile.watcher.enabled" value="true"/>
      <property name="org.kie.server.controller.templatefile" value="<NFS_STORAGE>"/>
    </system-properties>

    テンプレートファイルには、特定のデプロイメントシナリオのデフォルト設定が含まれます。

    org.kie.server.controller.templatefile.watcher.enabled プロパティーの値を true に設定すると、別のスレッドが開始してテンプレートファイルの修正を監視します。この確認の間隔はデフォルトで 30000 ミリ秒になり、org.kie.server.controller.templatefile.watcher.interval システムプロパティーで制御できます。このプロパティーの値を false に設定すると、テンプレートファイルへの変更の検出が、サーバーの再起動時に制限されます。

  10. ヘッドレス Process Automation Manager コントローラーを開始するには、EAP_HOME/bin に移動して、以下のコマンドを実行します。

    • Linux または UNIX ベースのシステムの場合:

      $ ./standalone.sh
    • Windows の場合:

      standalone.bat

3.4. Smart Router を使用した Process Server のクラスタリング

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

  • 1 つのクライアント要求で、さまざまなサーバーインスタンスの情報を収集する
  • 特定の要求に対して適切なサーバーを見つける
  • 複数のサーバーから応答を収集する
  • 効率的な負荷分散を提供する
  • 環境の変更を管理する (例: サーバーインスタンスの追加および削除)
  • Process Automation Manager コントローラーへの登録の管理

本セクションでは、Smart Router をインストールして、Red Hat Process Automation Manager ランタイム環境で設定する方法を説明します。

注記

Smart Router クラスターの負荷分散要求は、標準ロード負荷分散ツールを使用して外部的に管理する必要があります。

前提条件

  • Red Hat JBoss EAP 7.2 クラスターの各ノードに Process Server がインストールされている。

手順

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

    • 製品: Process Automation Manager
    • バージョン: 7.6
  2. Red Hat Process Automation Manager 7.6.0 Add-Ons をダウンロードします。
  3. ダウンロードした rhpam-7.6.0-add-ons.zip ファイルを一時ディレクトリーに展開します。rhpam-7.6-smart-router.jar ファイルは展開した rhpam-7.6.0-add-ons ディレクトリーにあります。
  4. rhpam-7.6-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.6-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
    注記

    ルーターは、集約ソートを提供しますが、管理コンソールを介して使用する場合に返されるデータは raw フォーマットになります。したがって、ソートは、個々のサーバーがどのように返すかを示します。

    ページングは、標準フォーマットでサポートされます。

  6. オプション: クライアント側から Smart Router を起動するには、以下のように、Process 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 設定のログイン認証情報です。

    org.kie.server.controller は、以下のように、サーバーコントローラーの URL です。

    org.kie.server.controller=http://<HOST>:<PORT>/controller/rest/controller

    org.kie.server.router.config.watcher.enabled は、ウォッチャーサービスシステムプロパティーを有効にする任意の設定です。

  7. オプション: HTTPS を有効にして Smart Router を起動するには、以下のように TLS キーストアプロパティーを使用します。

    org.kie.server.router.tls.keystore = <KEYSTORE_PATH>
    org.kie.server.router.tls.keystore.password = <KEYSTORE_PWD>
    org.kie.server.router.tls.keystore.keyalias = <KEYSTORE_ALIAS>
    org.kie.server.router.tls.port = <HTTPS_PORT>
    -jar kie-server-router-proxy-7.10.0-SNAPSHOT.jar

    org.kie.server.router.tls.port は、HTTPS ポートの設定に使用されるプロパティーです。デフォルトの HTTPS ポート値は 9443 です。