7.8. OpenShift 上の EJB リモーティング

JBoss EAP で、OpenShift 上の各種 JBoss EAP クラスター間で EJB リモーティング呼び出しを正しく機能させるには、OpenShift の EJB リモーティング設定オプションを理解する必要があります。

注記

OpenShift へのデプロイ時に、EAP オペレーターの使用を考慮してください。EAP オペレーターは、EJB リモーティングおよびトランザクションリカバリープロセッシングの適切な処理に StatefulSet を使用します。StatefulSet は Pod の再起動後もストレージおよびネットワークのホスト名の安定性を永続的に保持します。

JBoss EAP インスタンスが EJB リモート呼び出しとトランザクション伝搬を使用して通信する場合は、ネットワークホスト名が安定している必要があります。Pod が再起動した場合でも、同じホスト名で JBoss EAP インスタンスに到達できる必要があります。ステートフルなコンポーネントであるトランザクションマネージャーは、永続化されたトランザクションデータを特定の JBoss EAP インスタンスにバインドします。トランザクションログは特定の JBoss EAP インスタンスにバインドされるため、同じインスタンスで完了する必要があります。

JDBC トランザクションログストアが使用されたときにデータの損失を防ぐため、データベースによってデータの一貫性の読み取りおよび書き込みが提供されるようにしてください。一貫性のあるデータの読み取りおよび書き込みは、データベースが複数のインスタンスで水平スケーリングされている場合に重要になります。

EJB リモート呼び出し元では、リモート呼び出しを設定を 2 つの方法で設定できます。

EJB リモート呼び出し設定メソッドに応じて、ターゲットノードのアドレスを表す値を再設定する必要があります。

注記

リモート呼び出しのターゲット EJB の名前は最初の Pod の DNS アドレスでなければなりません。

StatefulSet の動作は Pod の順序によって異なります。Pod の名前は事前に定義された順序で指定されます。たとえば、アプリケーションを 3 つのレプリカにスケーリングする場合、Pod の名前は eap-server-0eap-server-1eap-server-2 になります。

EAP オペレーターは、特定の DNS ホスト名が Pod に割り当てられるように ヘッドレスサービス も使用します。アプリケーションが EAP オペレーターを使用する場合、ヘッドレスサービスは eap-server-headless といった名前で作成されます。この場合、最初の Pod の DNS 名は eap-server-0.eap-server-headless になります。

ホスト名 eap-server-0.eap-server-headless を使用すると、EJB 呼び出しが、クラスターに接続されている EAP インスタンスに到達できるようになります。ブートストラップ接続は、EJB クライアントを初期化するために使用されます。これは、EAP クラスターの構造を次の手順として収集します。

7.8.1. OpenShift での EJB の設定

EJB リモーティングの呼び出し元として動作する JBoss EAP サーバーを設定する必要があります。ターゲットサーバーは、EJB リモート呼び出しを受信するパーミッションを持つようにユーザーを設定する必要があります。

要件

  • EAP オペレーターと、対応の JBoss EAP for OpenShift S2I イメージ使用して、OpenShift で JBoss アプリケーションインスタンスのディプロイメントと管理を行っている。
  • クラスターリングが正しく設定されている。JBoss EAP クラスターリングの詳細は、クラスターリング セクションを参照してください。

手順

  1. EJB リモート呼び出しを受信するパーミッションを持つターゲットサーバーにユーザーを作成します。

    $JBOSS_HOME/bin/add-user.sh
  2. 呼び出し元の JBoss EAP アプリケーションサーバーを設定します。

    1. カスタム設定機能を使用して、$JBOSS_HOME/standalone/configurationeap-config.xml ファイルを作成します。詳細は、カスタム設定 を参照してください。
    2. wildfly.config.url プロパティーで呼び出し元 JBoss EAP アプリケーションサーバーを設定します。

      JAVA_OPTS_APPEND="-Dwildfly.config.url=$JBOSS_HOME/standalone/configuration/eap-config.xml"
      注記

      設定に以下の例を使用する場合は、>>PASTE_…​_HERE<< を、設定したユーザーとパスワードで置き換えます。

      設定例

      <configuration>
        <authentication-client xmlns="urn:elytron:1.0">
        <authentication-rules>
                <rule use-configuration="jta">
                    <match-abstract-type name="jta" authority="jboss"/>
            </rule>
            </authentication-rules>
            <authentication-configurations>
             <configuration name="jta">
                     <sasl-mechanism-selector selector="DIGEST-MD5"/>
                     <providers>
                         <use-service-loader />
                 </providers>
             <set-user-name name=">>PASTE_USER_NAME_HERE<<"/>
                 <credentials>
                          <clear-password password=">>PASTE_PASSWORD_HERE<<"/>
                 </credentials>
                     <set-mechanism-realm name="ApplicationRealm" />
                 </configuration>
            </authentication-configurations>
        </authentication-client>
      </configuration>