プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Event Processingの管理
12c リリース(12.1.3)
E57532-04
目次へ移動
目次

前
前へ
次
次へ

6 ネイティブ・クラスタリングを使用したマルチサーバー・ドメイン

ネイティブ・クラスタリングに基づいたマルチサーバー・ドメインを作成、構成および管理できます。ネイティブ・クラスタリングを使用する場合、ドメインはTOTEMに基づいたネイティブ・クラスタリング実装を受け取りますが、Oracle Event Processingの高可用性とサービス品質オプションを利用できません。高可用性とサービス品質オプションが必要な場合は、Oracle Coherenceを使用してマルチサーバー・ドメインを構築してください。

この章の内容は次のとおりです。

6.1 マルチサーバー・ドメインの作成

マルチサーバー・ドメインを作成するには、構成ウィザードを使用して1つのサーバーのある1つのドメインを作成することから開始します。これはスタンドアロンサーバー・ドメインです。

スタンドアロンサーバー・ドメインをマルチサーバー・ドメインに変換するには、次の2つのいずれかを実行します。

  • 作成したサーバーをコピーして名前を変更し、各サーバーのconfig.xmlファイルを編集して、それらのすべてが同じマルチキャスト名、マルチキャスト・ポートおよびドメイン名を持つようにします。

  • 構成ウィザードを使用して追加のスタンドアロン・サーバーを生成し、各サーバーのconfig.xmlファイルを編集して、それらのすべてが同じマルチキャスト名、マルチキャスト・ポートおよびドメイン名を持つようにします。

この章の手順では、最初の方法を使用します。

6.2 デフォルト・グループでのマルチサーバー・ドメインの作成

2つの事前定義済デプロイメント・グループ、シングルトン・グループおよびドメイン・グループのみを使用するマルチサーバー・ドメインを作成できます。これらのグループは、「シングルトン・サーバー・デプロイメント・グループ」で説明しています。デフォルト・グループを使用するドメインでは、すべてのサーバーが完全に同一である必要があります。

ドメインが完全に同一ではないサーバーをサポートする必要がある場合、カスタム・グループを作成して構成します。「カスタム・グループでのマルチサーバー・ドメインの作成」を参照してください。

デフォルト・グループでのマルチサーバー・ドメインの作成:

  1. 構成ウィザードを使用して、スタンドアロンサーバー・ドメインを作成します。
  2. 新しいスタンドアロンサーバー・ドメインを作成したら、それを置くディレクトリに変更します。

    デフォルトの場所は次のとおりです

    Oracle/Middleware/my_oep/user_projects/<domainname>

  3. ドメインの下のサーバーが必要な数になるまで、サーバー・ディレクトリをコピーして名前を変更します。
  4. ルートのconfig要素のcluster子要素を追加して、各メンバー・サーバーのconfig.xmlファイルを更新します。次の例は、myDomainというドメインの一部であるサーバーを示します。
    <config>
      <domain>
         <name>myDomain</name>
      </domain>
      <cluster>
         <server-name>myServer1</server-name>
         <multicast-address>239.255.0.1</multicast-address>
         <identity>1</identity>
         <enabled>evs4j</enabled>
      </cluster> 
    ...
    </config>
    

    clusterの次の子要素を使用できます。

    • server-name: clusterserver-name子要素は、サーバーの一意の名前を指定します。コンソールにサーバーを表示する場合、Oracle Event Processing Visualizerはこの要素の値を使用します。要素が設定されていない場合、デフォルト値はServer-identityです。ここで、identityidentity要素の値です。

    • server-host-name: ポイント・ツー・ポイントHTTPマルチサーバー通信に使用するホスト・アドレス/IPを指定します。デフォルト値はlocalhostです。

      マルチサーバー・ドメイン内の1つ以上のOracle Event Processingサーバーが異なるホストにあり、Oracle Event Processing Visualizerを使用してマルチサーバー・ドメインを管理する場合は、この要素が必須です。また、(マルチサーバー環境かスタンドアロン・サーバー環境かにかかわらず、)複数のIPアドレスが構成されているホスト・マシンにサーバーをデプロイする場合も、この要素が必須です。

    • multicast-address: マルチサーバー・ドメインのすべてのサーバーが同じコンピュータ上でホストされている場合を除いて、multicast-address要素は必要であり、その場合は、multicast-address要素を省略でき、コンピュータのIPアドレスに基づいてOracle Event Processingによりマルチサーバー・ドメインにマルチキャスト・アドレスが自動的に割り当てられます。

      ただし、サーバーが異なるコンピュータ上でホストされる場合、適切なドメイン・ローカル・アドレスを提供する必要があります。Oracleは、239.255.X.X形式のアドレスを使用することをお薦めします。自動で割り当てられたマルチキャスト・アドレスは、このアドレスに基づきます。

      このmulticast-addressを使用するすべてのOracle Event Processingサーバーは、同じサブセット上で稼働する必要があります。

    • identity: identity要素は、サーバーのIDを識別します。そのIDは1とINT_MAX間の整数である必要があります。Oracle Event Processingは、マルチサーバー操作中にサーバー・アイデンティティを数値的に比較し、最小のアイデンティティを持つサーバーがドメイン・コーディネータになります。マルチサーバー・ドメイン内の各サーバーは、必ず異なるアイデンティティを持つようにしてください。サーバーが同一のアイデンティティを持つ場合、マルチサーバー操作の結果は予測できなくなります。

    • enabled: デフォルトでは、マルチサーバー・ドメインにあるサーバーのクラスタリングは、Oracle Coherenceに対して無効になっているため、Oracle Event Processingネイティブ・クラスタリングを有効にするには、<enabled>evs4j</enabled>を使用します。

    注意:

    cluster要素の子要素を追加するとき、「cluster要素の子要素の順序」に示すとおり要素の正しい順序に従います。

    マルチサーバー・ドメインの各サーバーに対して、multicast-address要素には同じ値が含まれている必要があります。ただし、identityserver-name要素は、マルチサーバー・ドメインの各サーバーで異なる必要があります。次の例は、myDomainマルチサーバー・ドメイン内のmyServer2という2番目のサーバーのconfig.xmlファイルを示します。このサーバーのidentity値は2です。

    <config>
      <domain>
         <name>myDomain</name>
      </domain>
      <cluster>
         <server-name>myServer2</server-name>
         <multicast-address>239.255.0.1</multicast-address>
         <identity>2</identity>
         <enabled>evs4j</enabled>
      </cluster> 
    ...
    </config>
    

    追加のマルチサーバーの関連する構成要素と子要素の必要な順序の説明は、「cluster要素の子要素の順序」を参照してください。

  5. オプションで、暗号化とデジタル署名を構成して、ドメイン内のサーバー間で共有されるメッセージを保護します。
  6. 障害が発生したときにまだ動作しているマシンからビジュアライザを使用してトラブルシューティングできるように、マルチサーバー・ドメイン内のマシンのサブセット上にあるOracle Event Processing Visualizerを有効にすることを検討します。

    注意:

    特定のOracle Event ProcessingサーバーでOracle Event Processing Visualizerを有効にすると、Oracle Event Processing Visualizerのワークロードによってサーバーのパフォーマンスが低下する可能性があります。

  7. マルチサーバー・ドメインのすべてのサーバーを起動します。

6.3 カスタム・グループでのマルチサーバー・ドメインの作成

同一ではないアプリケーションをデプロイする予定であり、カスタム構成が必要な場合は、この手順を使用します。ドメインにあるすべてのサーバーが完全に同一である場合、カスタム・サーバー・グループを作成する必要はありません。

かわりに、事前定義済のデフォルト・サーバー・グループ(シングルトン・グループとドメイン・グループ)を使用します。「デフォルト・グループでのマルチサーバー・ドメインの作成」を参照してください。

この手順では、myServer1myServer2、およびmyServer3と3つのサーバーを作成していることを想定します。myServer1は、selectorグループのメンバーであり、myServer2myServer3は、strategyグループのメンバーであるとしています。

カスタム・サーバー・グループでのマルチサーバー・ドメインの作成:

  1. 構成ウィザードを使用して、スタンドアロンサーバー・ドメインを作成します。
  2. ドメインの下のサーバーが必要な数になるまで、サーバー・ディレクトリをコピーして名前を変更します。
  3. ルートconfig要素のcluster子要素を追加して、各メンバー・サーバーのconfig.xmlファイルを更新します。cluster子要素内で、group要素を追加してサーバー・グループを指定します。

    注意:

    cluster要素の子要素を追加するとき、「cluster要素の子要素の順序」に示すとおり要素の正しい順序に従います。

    サーバーが複数のサーバー・グループのメンバーである場合、groups要素には複数のサーバー・グループ名が含まれます。複数のサーバー・グループ名はカンマで区切ります。

    groups要素はオプションです。サーバー構成にgroups要素がある場合、そのサーバーはデフォルト・グループ(ドメインおよびシングルトン)のメンバーです。ドメインとシングルトン・グループの詳細は、「サーバー・グループ」を参照してください。

    次の例は、myServer1myServer2およびmyServer3config.xmlファイルからの関連するスニペットを示します。myServer1groupsエントリによって、これはselectorグループに入ります。myServer2およびmyServer3groupsエントリによって、これらはstrategyグループに入ります。

    myServer1:

    <config>
      <domain>
         <name>myDomain</name>
      </domain>
      <cluster>
         <server-name>myServer1</server-name>
         <multicast-address>239.255.0.1</multicast-address>
         <identity>1</identity>
         <enabled>evs4j</enabled>
         <groups>selector</groups>
      </cluster>
    ...
    </config>
    

    myServer2:

    <config>
      <domain>
         <name>myDomain</name>
      </domain>
      <cluster>
         <server-name>myServer2</server-name>
         <multicast-address>239.255.0.1</multicast-address>
         <identity>2</identity> 
         <enabled>evs4j</enabled>
         <groups>strategy</groups>
      </cluster> 
    ...
    </config>
    

    myServer3:

    <config>
      <domain>
         <name>myDomain</name>
      </domain>
      <cluster>
         <server-name>myServer3</server-name>
         <multicast-address>239.255.0.1</multicast-address>
         <identity>3</identity>
         <enabled>evs4j</enabled>
         <groups>strategy</groups>
      </cluster> 
    ...
    </config>
    
  4. オプションで、暗号化とデジタル署名を構成して、ドメイン内のサーバー間で共有されるメッセージを保護します。
  5. 障害が発生したときにまだ動作しているマシンからビジュアライザを使用してトラブルシューティングできるように、マルチサーバー・ドメイン内のマシンのサブセット上にあるOracle Event Processing Visualizerを有効にすることを検討します。

    注意:

    特定のOracle Event ProcessingサーバーでOracle Event Processing Visualizerを有効にすると、Oracle Event Processing Visualizerのワークロードによってサーバーのパフォーマンスが低下する可能性があります。

  6. マルチサーバー・ドメインのすべてのサーバーを起動します。

6.4 マルチサーバー・ドメインの更新

マルチサーバー・ドメイン内のサーバーの更新は、スタンドアロンサーバー・ドメインで1つのサーバーを更新する場合と同様であり、構成ウィザードを起動するか、XMLプロパティ・ファイルを編集してサイレント・モードを使用します。1つのサーバーの更新と複数のサーバーの更新の唯一の違いは、マルチサーバー・ドメインでの場合は各サーバーで個別に更新を実行することです。サイレント・モードでのXMLプロパティ・ファイルの使用が、マルチサーバー・ドメインでの最善の方法です。

構成ウィザードを使用してサーバーを更新する場合、リスニング・ポートおよびJDBCデータ・ソース構成のみを更新できます。サイレント・モードでは、サーバーを追加して、データ値が存在するものすべてを更新できます。

XMLプロパティ・ファイルの次のデータ値について値を指定した既存のサーバーの既存の構成を更新するには、次の手順を実行します。

  • CONFIGURATION_OPTIONupdateDomainに設定します。

  • DOMAIN_NAMEおよびDOMAIN_LOCATIONオプションには既存のドメインの名前と場所を設定します。例では、値はそれぞれmyDomainC:\Oracle\Middleware\my_oep\user_projects\domainsです。

  • SERVER_NAMEオプションには、既存のドメインに追加する新しいサーバーの名前を設定します。例では、この値はmyServer2です。

  • このサーバーをマルチサーバー・ドメインの他のサーバーと同じコンピュータで実行する場合は、NETIO_PORTなどの新しいサーバー構成オプションが、ドメインの既存サーバーのオプションと重複しないようにする必要があります。新しいサーバーから既存のサーバーと同じデータベースに接続する場合は、データ・ベース・オプションを同じにすることができます。

    マルチサーバー・ドメインの他のサーバーとは異なるマシンにサーバーがある場合は、ポートを別にする必要はありません。

次の例は、マルチサーバー・ドメイン内の既存のサーバーを更新するXMLプロパティ・ファイルです。

<?xml version="1.0" encoding="UTF-8"?>
<bea-installer xmlns="http://www.bea.com/plateng/wlevs/config/silent">
  <input-fields>
    <data-value name="CONFIGURATION_OPTION" value="createDomain" />
    <data-value name="USERNAME" value="wlevs" />
    <data-value name="PASSWORD" value="wlevs" />
    <data-value name="SERVER_NAME" value="myServer1" />
    <data-value name="DOMAIN_NAME" value="myDomain" />
    <data-value name="DOMAIN_LOCATION" value="C:\Oracle\Middleware\my_oep\user_projects\domains" />
    <data-value name="NETIO_PORT" value="9102" />
    <data-value name="KEYSTORE_PASSWORD" value="my_keystore_password" /> 
    <data-value name="PRIVATEKEY_PASSWORD" value="my_privatekey_password" />
    <data-value name="DB_URL" value="jdbc:bea:oracle://localhost:1521:XE" />
    <data-value name="DB_USERNAME" value="db_user" />
    <data-value name="DB_PASSWORD" value="db_password" />
  </input-fields>
</bea-installer>

6.5 マルチサーバー・ドメインのサーバー間で送信されるメッセージの保護

マルチサーバーに関係するメッセージを変換することで、マルチサーバー・ドメインのサーバーはその状態を更新します。これらのメッセージは整合性をチェックする必要があります。

整合性を確実にするために秘密鍵を使用できます。秘密鍵はドメイン内のすべてのサーバーで共有する必要があります。

サーバー間で送信されるメッセージの保護

  1. サーバーが現在実行中の場合、マルチサーバー・ドメインのすべてのサーバーを停止します。
  2. security子要素をcluster要素に追加し、マルチサーバー・ドメインの各サーバーのconfig.xmlファイルを編集します。

    デフォルトでは、config.xmlファイルはOracle/Middleware/my_oep/user_projects/domains/<domainname>/<servername>/config/にあります。

    <config>
      <domain>
         <name>myDomain</name>
      </domain>
      <cluster>
         <server-name>myServer1</server-name>
         <multicast-address>239.255.0.1</multicast-address>
         <identity>1</identity>
         <enabled>evs4j</enabled>
         <security>encrypt</security>
      </cluster> 
    ...
    </config>
    

    security子要素に対して次のいずれかの値を指定する必要があります。

    • none: マルチサーバー・ドメインにセキュリティが構成されません。これはデフォルト値です。

    • encrypt: マルチサーバー・メッセージを暗号化します。

    cluster要素の子要素の正しい順序に従います。「cluster要素の子要素の順序」を参照してください。

  3. configルート要素にencryption-service子要素を追加し、マルチサーバー・ドメインの各サーバーのsecurity-config.xmlファイルを編集します。

    デフォルトでは、security-config.xmlファイルはOracle/Middleware/my_oep/user_projects/domains/<domainname>/<servername>/config/にあります

    <config>
      <encryption-service>
         <signature-enabled>true</signature-enabled>
      </encryption-service>
      <css-realm>
       ...
    </config>
    
  4. マルチサーバー・ドメインの各サーバーのmyDomain/servername/.aesinternal.datファイルは、サーバーから他のサーバーにコピーすることによって、まったく同じになるようにします。

    このファイルは、最初にサーバーを作成したときに構成ウィザードによって作成されます。Oracle Event Processingではメッセージの暗号化のためにこのファイルが使用されます。

  5. ドメイン内の1つのサーバーを起動します。

    「マルチサーバー・ドメインでのサーバーの起動と停止」を参照してください。

    encryption-service要素をsecurity-config.xmlファイルに追加しているため、Oracle Event Processingではメイン・サーバー・ディレクトリに*.msasig.datファイルが作成されます。Oracle Event Processingはメッセージのデジタル署名のためにこのファイルを使用します。

  6. 起動したサーバーを停止します。
  7. *.msasig.datファイルを他のサーバーにコピーします。
  8. このドメインのサーバーでOracle Event Processing Visualizerを使用する場合は、マルチサーバー・ドメインでのビジュアライザ用SSLの構成を参照してください。
  9. マルチサーバー・ドメインのすべてのサーバーを起動します。

6.6 マルチサーバー・ドメインAPIを使用したグループ・メンバーシップの変更管理

アクティブ/アクティブ・システムでは、アクティブに実行されているアプリケーションを複数のサーバーに均一にデプロイします。均一にデプロイされたこれらのアプリケーションから、リードするコーディネータ・アプリケーションを選択する必要が生じる場合があります。 この場合、コーディネータ・アプリケーションから発生したイベントは保持され、EPNの次のコンポーネントに渡されます。セカンダリ・サーバーの結果は削除されます。コーディネータにエラーが発生した場合は、いずれかのセカンダリ・サーバーが新しいコーディネータとして選択される必要があります。

アプリケーションでこの動作を有効にするには、通常はイベント・シンクのロールにあるアダプタまたはイベントBeanが次のインタフェースを実装する必要があります。

com.bea.wlevs.ede.api.cluster.GroupMembershipListener

このインタフェースにより、マルチサーバー・ドメイン・グループのメンバーシップの変更をイベント・シンクでリスニングできるようになります。実行時には、メンバーシップに変更が発生するたびに、Oracle Event ProcessingonMembershipChangeコールバック・メソッドを呼び出します。

コールバック・メソッドのシグネチャは次のとおりです。

onMembershipChange(Server localIdentity, Configuration groupConfiguration); 

onMembershipChangeコールバック・メソッドの実装では、イベント・シンクがServerオブジェクト(localIdentity)を使用してリーダーかどうかを検証します。この検証は、localIdentityと、第2パラメータgroupConfigurationでのConfiguration.getCoordinator()の実行結果を比較して行うことができます。また、このパラメータを使用すると、Configuration.getMembers()を実行して、現在のグループのメンバーをサーバーに知らせることもできます。

メンバーがコーディネータである場合にのみイベントを保持するために、イベント・シンクはグループのメンバーシップに変更があるたびに新しいServerIDを取得する必要があります。グループ・メンバーシップに変更が発生するのは、たとえば、グループ内の他のサーバーでエラーが発生し、そのサーバーがコーディネータではなくなった場合です。

次のインタフェースは、サーバー・グループに対する変更ではなく、ドメイン全体としてのメンバーシップ変更をリスニングするためのものです。

com.bea.wlevs.ede.api.cluster.DomainMembershipListener

ホット-ホット構成には、失敗の通知にゼロ以外の遅延があります。クラスタリングの実装に通知APIを使用する場合、サーバー障害とマスター・サーバーに配信される通知の間の時間ウィンドウで発生するイベントを失って、処理できません。

Oracle Event Processing Java APIリファレンスを参照してください。

6.7 マルチサーバー・ドメインでのサーバーの起動と停止

マルチサーバー・ドメインのサーバーを起動するには、起動スクリプトを実行して各サーバーを個別に起動します。これは、スタンドアロン・サーバー・ドメインのサーバーを起動する方法と同じです。

詳細は、「スタンドアロンサーバー・ドメインでのサーバーの起動と停止」を参照してください。

マルチ・サーバー・ドメインのカスタム・グループを構成しなかった場合、単純にすべてのサーバーは事前定義されたドメイン・グループ(マルチ・サーバー・ドメイン内のすべてのサーバーが含まれる)とシングルトン・グループ(メンバーのサーバーごとに1つ)のメンバーになります。つまり、マルチ・サーバー・ドメインに3つのサーバーが存在する例では、シングルトン・グループも3つになります。

これに対し、マルチサーバー・ドメインにカスタム・グループを構成した場合、サーバーは事前定義されたグループのメンバーであると同時に、構成されたグループのメンバーにもなります。