ソフトウェアクラスタ化の使用

Flex データサービス のソフトウェアクラスタ化機能は、ステートフルサービスを使用しているとき、および RTMP チャネルなどの非 HTTP チャネルを使用しているときの、フェイルオーバーを処理します。Flex クライアントがサブネット内のホスト上で実行されている特定のサービスにサブスクライブしていて、そのホストが障害を起こした場合に、クライアントで引き続きメッセージを同じサブネット内の別のホストに送ることができます。この機能は、Flex サービス設定ファイルで定義されているすべてのサービスタイプで使用できます。Message Service と Data Management Service では、アプリケーションのメッセージング状態について、フェイルオーバーと複製の両方がサポートされています。Remoting Service と Proxy Service では、フェイルオーバーのみサポートされています。

Flex データサービスにおける最も一般的なクラスタ化形式では、ソフトウェアクラスタ化が伴いません。代わりに、1 組のロードバランサが、通常はハードウェアの形式で、HTTP サーバーの前面に設置されます。これらのロードバランサによって、個々の HTTP サーバーに対して要求が指示され、クライアント要求が同じクライアントからその HTTP サーバーに固定されます。この形式のクラスタ化は特別な機能を実装せずに Flex で可能になります。また、ソフトウェアクラスタ化機能と連動することもできます。

サブトピック

メッセージの処理
クラスタの定義と参照

メッセージの処理

クライアントのフェイルオーバーの提供に加えて、クラスタノードではすべてのノードのメッセージを処理しなければならない場合があります。通常、この処理は、共通のクラスタ状態を調整するためのバックエンドリソースが使用できない場合に実行されます。共有バックエンドが使用できない場合、クラスタノードはメッセージの再処理とブロードキャストを他のノードに指示します。共有バックエンドが使用できる場合、ノードは、接続先のクライアントにメッセージをブロードキャストするよう他のノードに指示しますが、メッセージの再処理を他のノードに指示することはしません。

クラスタの定義と参照

ソフトウェアクラスタは、Flex サービス設定ファイルの clusters セクションで定義します。クラスタは複数定義できます。各クラスタ定義では、id と、JGroups プロパティファイルへのパスを指定する必要があります。JGroups は、ソフトウェアクラスタ化を提供するために Flex データサービスで使用されているオープンソースソフトウェアです。JGroups の詳細については、www.jgroups.org/javagroupsnew/docs/index.html を参照してください。

jgroups.jar ファイルと jgroups-*.xml プロパティファイルは、インストールされている Flex データサービスの "resources/clustering" フォルダにあります。クラスタを定義する前に、jgroups.jar ファイルを WEB-INF/lib ディレクトリにコピーし、jgroups-*.xml ファイルを WEB-INF/flex ディレクトリにコピーする必要があります。

名前付きのクラスタは、クラスタに含める必要のある宛先の <network> セクションで参照します。クラスタ化された宛先が指し示すチャネルでは、そのエンドポイントとして指定された URI の中にトークンを含めることはできません。

次の例は、services-config.xml ファイルでのクラスタの設定を示しています。

<?xml version="1.0"?>
<services-config>
...
    <clusters>
        <cluster id="MyCluster" properties="jgroups-udp.xml"/>
        <cluster id="AnotherCluster" properties="jgroups-tcp.xml"/>
    </clusters>
...
</services-config>

次の例は、サービスの宛先でのクラスタへの参照を示しています。shared back-end プロパティを true に設定しているため、クラスタノードでは、接続先のクライアントにメッセージをブロードキャストするよう他のノードに指示しますが、メッセージの再処理を他のノードに指示することはしません。shared-backend 属性は必須ではなく、Data Management Service の宛先に対してのみ有効です。

<destination id="MyDestination">
...
    <properties>
        <network>
            <cluster ref="default-cluster" shared-backend="true"/>
        </network>
    </properties>
...
</destination>

Flex 2.01