第2章 HA CEP サーバーの実装
高可用性 (HA) CEP サーバーは、Red Hat OpenShift Container Platform 環境で実行します。このサーバーには、必要なすべての Drools ルールと、イベント処理に必要なその他のコードが含まれています。
ソースを準備して、ビルドし、Red Hat OpenShift Container Platform にデプロイする必要がある。
手順
-
Red Hat カスタマーポータルの Software Downloads ページから製品配信可能ファイル
rhdm-7.5.1-reference-implementation.zipをダウンロードします。 -
ファイルの内容を展開して、さらに
rhdm-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 製品ドキュメントの Using RBAC to define and apply permissions を参照してください。
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 をクリックしてサーバーをデプロイします。