第2章 HA CEP サーバーの実装
高可用性 (HA) CEP サーバーは、Red Hat OpenShift Container Platform 環境で実行します。このサーバーには、必要なすべての Drools ルールと、イベント処理に必要なその他のコードが含まれています。
ソースを準備して、ビルドし、Red Hat OpenShift Container Platform にデプロイする必要がある。
手順
-
Red Hat カスタマーポータルの Software Downloads ページから製品配信可能ファイル
rhpam-7.5.1-reference-implementation.zip
をダウンロードします。 -
ファイルの内容を展開して、さらに
rhpam-7.5.1-openshift-drools-hacep-distribution.zip
ファイルを展開します。 -
openshift-drools-hacep-distribution/sources
ディレクトリーに移動します。 -
sample-hacep-project/sample-hacep-project-kjar
ディレクトリー内のサンプルプロジェクトをもとに、サーバーのコードを確認して変更します。複合イベント処理のロジックは、src/main/resources/org.drools.cep
サブディレクトリーの DRL ルールで定義します。 標準の Maven コマンドを使用してプロジェクトをビルドします。
mvn clean install -DskipTests
- OpenShift operator インフラストラクチャーを使用して、Red Hat AMQ Streams をインストールします。Red Hat AMQ Streams のインストールに関する情報は、『 Using AMQ Streams on OpenShift Container Platform 』を参照してください。
Red Hat OpenShift Container Platform の
KafkaTopic
リソースを使用して、kafka-topics
サブディレクトリーの全 YAML ファイルからトピックを作成します。KafkaTopic
リソースを使用したトピックの作成に関する詳細は、Red Hat AMQ ドキュメントの「 Using the topic operator 」を参照してください。アプリケーションが、リーダーの選択に使用する ConfigMap にアクセスできるように、ロールベースのアクセス制御を設定する必要があります。
springboot
ディレクトリーに移動して、以下のコマンドを入力します。oc create -f kubernetes/service-account.yaml oc create -f kubernetes/role.yaml oc create -f kubernetes/role-binding.yaml
Red Hat OpenShift Container Platform のロールベースのアクセス制御に関する詳細は、Red Hat OpenShift Container Platform ドキュメントの「 RBAC を使用したパーミッションの定義および適用 」を参照してください。
springboot
ディレクトリーで、Dockerfile
ファイルを編集します。microdnf
コマンドを含む行を以下の行に置き換えます。RUN microdnf install java-1.8.0-openjdk-headless && microdnf clean all
注記microdnf で最近問題が発見 されたため、回避策が必要です。
springboot
ディレクトリーで、以下のコマンドを入力して Docker イメージをビルドして、お使いのシステムで設定されている Docker レジストリーにプッシュします (このコマンドを実行する前に非公開のレジストリーを設定することをご検討ください)。このビルドは、Maven の依存関係として構築された t sample-hacep-project-kjar コードをインポートし、openshift-kie-springboot.jar ファイルの BOOT-INF/lib ディレクトリーに追加します。このビルドは、ビルドしたsample-hacep-project-kjar
コードを Maven 依存関係としてインポートし、openshift-kie-springboot.jar
ファイルのBOOT-INF/lib
ディレクトリーに追加します。その後、Docker ビルドは JAR ファイルを使用してイメージを作成します。docker login --username=<user username> docker build -t <user_username>/openshift-kie-springboot:<tag> . docker push <user_username>/openshift-kie-springboot:<tag>
または、ビルドの目的で Podman を使用するには、コマンドで
docker
をpodman
に置き換えます。-
OpenShift ユーザーインターフェイスで YAML ソースを作成します。
kubernetes/deployment.yaml
の内容を貼り付けて、必要に応じて Docker のイメージ名を変更します。Deploy をクリックしてサーバーをデプロイします。