Oracle Coherenceに基づいたマルチサーバー・ドメインを作成、構成および管理できます。Oracle Coherenceを使用して、信頼のおけるスケーラビリティの高いピア・ツー・ピアのクラスタリング・プロトコル上で、ドメインは複製および配布した(パーティション化した)データの管理サービスを受信します。
この章の内容は次のとおりです。
Oracle Stream Explorer高可用性アプリケーションをデプロイし、スケーラビリティが必要な場合、Oracle Stream Explorer高可用性通知グループを作成する必要もあります。詳細は、Oracle Stream Explorerスキーマ・リファレンスを参照してください。
マルチサーバー・ドメインを作成するには、構成ウィザードを使用して1つのサーバーのある1つのドメインを作成することから開始します。これはスタンドアロンサーバー・ドメインです。スタンドアロンサーバー・ドメインをマルチサーバー・ドメインに変換するには、次のいずれかを実行します。
作成したサーバーをコピーして名前を変更し、各サーバーのconfig.xml
ファイルを編集して、それらのすべてが同じマルチキャスト名、マルチキャスト・ポートおよびドメイン名を持つようにします。
構成ウィザードを使用して追加のスタンドアロン・サーバーを生成し、各サーバーのconfig.xml
ファイルを編集して、それらのすべてが同じマルチキャスト名、マルチキャスト・ポートおよびドメイン名を持つようにします。
この章の手順では、最初の方法を使用します。
「シングルトン・サーバー・デプロイメント・グループ」で説明したように、2つの事前定義済デプロイメント・グループのみを使用するマルチサーバー・ドメインを作成できます。この事前定義済デプロイメント・グループはシングルトン・グループとドメイン・グループです。デフォルト・グループを使用するドメインでは、すべてのサーバーが完全に同一である必要があります。
ドメインが完全に同一ではないサーバーをサポートする必要がある場合、カスタム・サーバー・グループを作成して構成します。「カスタム・グループでのマルチサーバー・ドメインの作成」を参照してください。
デフォルト・サーバー・グループでのマルチサーバー・ドメインの作成
同一ではないアプリケーションをデプロイする予定であり、カスタム構成が必要な場合は、この手順を使用します。ドメインにあるすべてのサーバーが完全に同一である場合、カスタム・サーバー・グループを作成する必要はありません。かわりに、事前定義済のデフォルト・サーバー・グループ(シングルトン・グループとドメイン・グループ)を使用します。「デフォルト・グループでのマルチサーバー・ドメインの作成」を参照してください。
この手順では、myServer1
、myServer2
、およびmyServer3
と3つのサーバーを作成していることを想定します。myServer1
は、selector
サーバー・グループのメンバーであり、myServer2
とmyServer3
は、strategy
サーバー・グループのメンバーであるとしています。
カスタム・サーバー・グループでのマルチサーバー・ドメインの作成
Oracle Coherenceクラスタ構成のために、Oracle Stream ExplorerによってOracle Coherenceのtangosol-coherence-override.xml
構成ファイルが使用されます。tangosol-coherence-override.xml
ファイルはサーバー単位でグローバルな構成ファイルです。Oracle Coherenceドキュメントで操作構成として記述されています。このファイルを、Oracle Stream Explorerサーバーのconfig
ディレクトリにあるconfig.xml
サーバー構成ファイルとともに置きます。
キャッシュ・システムがOracle Coherenceプロバイダを使用することを宣言するとき、キャッシュ・システムのすべてのキャッシュが、Oracle Stream Explorerのローカル構成ではなくOracle Coherence構成にマップされることを必ず確認してください。これを行わず、1つ以上のキャッシュがOracle Stream Explorerのローカル構成にマップされている場合、Oracle Stream Explorerで例外がスローされます。
マルチサーバー・ドメイン内のサーバーは、同じマルチキャスト・アドレスとポート番号、および同じドメイン名で構成する必要があります。たとえば、マルチキャスト・アドレスとポート番号が同じであるが、異なるドメイン名でサーバーを構成した場合は、Oracle Stream Explorerによってエラーがスローされます。
tangosol-coherence-override.xml
ファイルでは、<cluster-config>
、<management-config>
および<logging-config>
の要素がサポートされます。Oracle Stream Explorerでは、常にクラスタ名をドメイン名に設定するため、クラスタ名をオーバーライドできません。異なるドメイン間で誤ってクラスタを検出してしまわないように、各Oracle Stream Explorerドメインに一意の名前を選択します。
次の例は、パケットが移動できるホップの最大数が決定される、time-to-live
設定を指定する単純な構成を示しています。ホップは、ルーター経由でネットワーク・セグメントから別のネットワーク・セグメントへのトラバースとして測定されます。
<?xml version='1.0'?>
<coherence xml-override="/tangosol-coherence-override.xml">
<cluster-config>
<multicast-listener>
<time-to-live>3</time-to-live>
</multicast-listener>
...
</coherence>
tangosol-coherence-override.xml
ファイルの詳細は、Oracle Coherence開発者ガイドを参照してください。
マルチサーバー・ドメイン内のサーバーの更新は、スタンドアロンサーバー・ドメインで1つのサーバーを更新する場合と同様であり、構成ウィザードを起動するか、XMLプロパティ・ファイルを編集してサイレント・モードを使用します。1つのサーバーの更新と複数のサーバーの更新の唯一の違いは、マルチサーバー・ドメインでの場合は各サーバーで個別に更新を実行することです。サイレント・モードでのXMLプロパティ・ファイルの使用が、マルチサーバー・ドメインでの最善の方法です。
構成ウィザードを使用してサーバーを更新する場合、リスニング・ポートおよびJDBCデータ・ソース構成のみを更新できます。サイレント・モードでは、サーバーを追加して、データ値が存在するものすべてを更新できます。
XMLプロパティ・ファイルの次のデータ値について値を指定した既存のサーバーの既存の構成を更新するには、次の手順を実行します。
CONFIGURATION_OPTION
をupdateDomain
に設定します。
DOMAIN_NAME
およびDOMAIN_LOCATION
オプションには既存のドメインの名前と場所を設定します。例では、値はそれぞれmyDomain
とC:\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="updateDomain" /> <data-value name="USERNAME" value="wlevs" /> <data-value name="PASSWORD" value="wlevs" /> <data-value name="SERVER_NAME" value="myServer2" /> <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>
注意:
サーブレットを作成した後、同じマシンに2つのサーブレットがある場合、新しいサーブレットを認識するためにSSLポートを変更します。
マルチサーバーに関係するメッセージを変換することで、マルチサーバー・ドメインのサーバーはその状態を更新します。これらのメッセージは整合性をチェックする必要があります。整合性を確実にするために秘密鍵を使用できます。秘密鍵はドメイン内のすべてのサーバーで共有する必要があります。
Oracle Coherenceクラスタリングの実装を使用する場合、マルチサーバー・ドメイン内のサーバー間で送信されるメッセージを保護できます。
サーバー間で送信されるメッセージの保護
アクティブ/アクティブ・システムでは、アクティブに実行されているアプリケーションを複数のサーバーに均一にデプロイします。均一にデプロイされたこれらのアプリケーションから、リードするコーディネータ・アプリケーションを選択する必要が生じる場合があります。この場合、コーディネータ・アプリケーションから発生したイベントは保持され、EPNの次のコンポーネントに渡されます。セカンダリ・サーバーの結果は削除されます。コーディネータにエラーが発生した場合は、いずれかのセカンダリ・サーバーが新しいコーディネータとして選択される必要があります。
アプリケーションでこの動作を有効にするには、通常はイベント・シンクのロールにあるアダプタまたはイベントBeanが次のインタフェースを実装する必要があります。
com.bea.wlevs.ede.api.cluster.GroupMembershipListener
このインタフェースにより、マルチサーバー・ドメイン・グループのメンバーシップの変更をイベント・シンクでリスニングできるようになります。実行時には、メンバーシップに変更が発生するたびに、Oracle Stream ExplorerがonMembershipChange
コールバック・メソッドを呼び出します。
コールバック・メソッドのシグネチャは次のとおりです。
onMembershipChange(Server localIdentity, Configuration groupConfiguration);
onMembershipChange
コールバック・メソッドの実装では、イベント・シンクがServer
オブジェクト(localIdentity
)を使用してリーダーかどうかを検証します。この検証は、localIdentity
と、第2パラメータgroupConfiguration
でのConfiguration.getCoordinator()
の実行結果を比較して行うことができます。また、このパラメータを使用すると、Configuration.getMembers()
を実行して、現在のグループのメンバーをサーバーに知らせることもできます。
注意:
通知グループに新しいAPIがあります。詳細は、Oracle Stream Explorer Java APIリファレンスを参照してください。
メンバーがコーディネータである場合にのみイベントを保持するために、イベント・シンクはグループのメンバーシップに変更があるたびに新しいServer
IDを取得する必要があります。グループ・メンバーシップに変更が発生するのは、たとえば、グループ内の他のサーバーでエラーが発生し、そのサーバーがコーディネータではなくなった場合です。
次のインタフェースは、サーバー・グループに対する変更ではなく、ドメイン全体としてのメンバーシップ変更をリスニングするためのものです。
com.bea.wlevs.ede.api.cluster.DomainMembershipListener
ホット-ホット構成には、失敗の通知にゼロ以外の遅延があります。クラスタリングの実装に通知APIを使用する場合、サーバー障害とマスター・サーバーに配信される通知の間の時間ウィンドウで発生するイベントを失って、処理できません。
Oracle Stream Explorer Java APIリファレンスを参照してください。
マルチサーバー・ドメインのサーバーを起動するには、起動スクリプトを実行して各サーバーを個別に起動します。これは、スタンドアロン・サーバー・ドメインのサーバーを起動する方法と同じです。詳細は、「スタンドアロンサーバー・ドメインでのサーバーの起動と停止」を参照してください。
マルチサーバー・ドメインのカスタム・グループを構成しなかった場合、すべてのサーバーは事前定義されたドメイン・グループ(マルチサーバー・ドメイン内のすべてのサーバーが含まれる)とシングルトン・グループ(メンバーのサーバーごとに1つ)のメンバーになります。つまり、マルチサーバー・ドメインに3つのサーバーが存在する例では、シングルトン・グループも3つになります。
これに対し、マルチサーバー・ドメインにカスタム・グループを構成した場合、サーバーは事前定義されたグループおよび構成されたグループのメンバーになります。
注意:
Windowsの場合、起動したコマンド・プロンプトの「閉じる」ボタンをクリックしてOracle Stream Explorerサーバーを停止しないでください。stopwlevs.cmd
スクリプトまたはCtrl-C
を使用すると、Oracle Stream Explorerサーバーはいつでも停止します。