第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 をダウンロードして再パッケージ化します。
手順
クラスターの各ノードに Red Hat JBoss EAP 7.2 をインストールします。
Red Hat カスタマーポータルの Software Downloads ページに移動し (ログインが必要)、ドロップダウンオプションから製品およびバージョンを選択します。
- 製品: Red Hat JBoss EAP
- バージョン: 7.2
-
Red Hat JBoss Enterprise Application Platform 7.2.0 (
jboss-eap-7.2.0.zip
)の横にある Download をクリックします。
-
jboss-eap-7.2.0.zip
ファイルを展開します。jboss-eap-7.2/jboss-eap-7.2
ディレクトリーはEAP_HOME
とします。 - 最新の Red Hat JBoss EAP パッチが利用できる場合には、ダウンロードして適用します。
Process Server をダウンロードします。
Red Hat カスタマーポータルの Software Downloads ページに移動し、ドロップダウンオプションから製品およびバージョンを選択します。
- 製品: Process Automation Manager
- バージョン: 7.6
-
Red Hat Process Automation Manager 7.6.0 Process Server for All Supported EE8 Containers (
rhpam-7.6.0-kie-server-ee8.zip
) をダウンロードします。
-
rhpam-7.6.0-kie-server-ee8.zip
アーカイブを一時ディレクトリーに展開します。以下の例では、このディレクトリーをTEMP_DIR
とします。 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 インスタンスの既存デプロイメントと競合しないことを確認します。
-
TEMP_DIR/rhpam-7.6.0-kie-server-ee8/rhpam-7.6.0-kie-server-ee8/SecurityPolicy/
の内容をEAP_HOME/bin
にコピーします。ファイルの上書きを確認するメッセージが表示されたら、Replace をクリックします。 -
EAP_HOME/standalone/deployments/
ディレクトリーに、kie-server.war.dodeploy
という名前で空のファイルを作成します。このファイルにより、サーバーが起動すると Process Server が自動的にデプロイされます。 - 最新の Red Hat Process Automation Manager のパッチが利用できる場合には、ダウンロードして適用します。
-
EAP_HOME/bin
ディレクトリーに移動します。 Process Server にログインするのに使用する、
kie-server
ロールを持つユーザーを作成します。$ ./add-user.sh -a --user <USERNAME> --password <PASSWORD> --role kie-server
- ユーザー名とパスワードを書き留めておきます。
3.2. Process Server 向けの Red Hat JBoss EAP 7.2 クラスターの設定および実行
Process Server 向けに Red Hat JBoss EAP クラスターを設定して、起動します。
手順
- JDBC ドライバーを、このクラスターの一部となる Red Hat JBoss EAP の全インスタンスにインストールします。詳細は『Red Hat JBoss EAP 7.2 設定ガイド』の「JDBC ドライバー」セクションを参照してください。
-
テキストエディターで
EAP_HOME/standalone/configuration/standalone-full.xml
ファイルを開きます。 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
-
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 タイマーデータに、別のデータベースを使用する必要があります。
<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>
-
DB2:
-
-
standalone-full.xml
ファイルを保存します。 クラスターを起動するには
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 サーバーが利用できる。
手順
Red Hat カスタマーポータルの Software Downloads ページに移動し (ログインが必要)、ドロップダウンオプションから製品およびバージョンを選択します。
- 製品: Process Automation Manager
- バージョン: 7.6
-
Red Hat Process Automation Manager 7.6.0 Add Ons (
rhpam-7.6.0-add-ons.zip
ファイル) をダウンロードします。 -
rhpam-7.6.0-add-ons.zip
ファイルを展開します。rhpam-7.6-controller-ee7.zip
ファイルは展開したディレクトリーにあります。 -
rhpam-7.6-controller-ee7
アーカイブを一時ディレクトリーに展開します。以下の例では、このディレクトリーをTEMP_DIR
とします。 TEMP_DIR/rhpam-7.6-controller-ee7/controller.war
ディレクトリーをEAP_HOME/standalone/deployments/
にコピーします。警告コピーするヘッドレス Process Automation Manager コントローラーデプロイメントの名前が、Red Hat JBoss EAP インスタンスの既存デプロイメントと競合しないことを確認します。
-
TEMP_DIR/rhpam-7.6-controller-ee7/SecurityPolicy/
ディレクトリーの内容をEAP_HOME/bin
にコピーします。ファイルの上書きを確認するメッセージが表示されたら、Yes を選択します。 -
EAP_HOME/standalone/deployments/
ディレクトリーに、controller.war.dodeploy
という名前で空のファイルを作成します。このファイルにより、サーバーが起動するとヘッドレス Process Automation Manager コントローラーが自動的にデプロイされます。 -
テキストエディターで
EAP_HOME/standalone/configuration/standalone.xml
ファイルを開きます。 以下のプロパティーを
<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 に設定すると、テンプレートファイルへの変更の検出が、サーバーの再起動時に制限されます。ヘッドレス 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 がインストールされている。
手順
Red Hat カスタマーポータルの Software Downloads ページに移動し (ログインが必要)、ドロップダウンオプションから製品およびバージョンを選択します。
- 製品: Process Automation Manager
- バージョン: 7.6
- Red Hat Process Automation Manager 7.6.0 Add-Ons をダウンロードします。
-
ダウンロードした
rhpam-7.6.0-add-ons.zip
ファイルを一時ディレクトリーに展開します。rhpam-7.6-smart-router.jar
ファイルは展開したrhpam-7.6.0-add-ons
ディレクトリーにあります。 -
rhpam-7.6-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.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 フォーマットになります。したがって、ソートは、個々のサーバーがどのように返すかを示します。
ページングは、標準フォーマットでサポートされます。
オプション: クライアント側から 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
は、ウォッチャーサービスシステムプロパティーを有効にする任意の設定です。オプション: 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
です。