クラスタリング

Version 23.4.8841


クラスタリング


クラスタリングにより、複数のCData Arc インストールが連携して動作し、同じデータを同じ構成で処理できるようになります。ワークロードをクラスター化されたArc インストール全体に水平に分散し、スケーラビリティを向上させ、可用性を確保できます。

概要

Arc でサポートされている高可用性とフェイルオーバー機能を利用するには、同じサーバーファーム(同じクラスター)内の複数のシステムにアプリケーションをインストールする必要があります。次に、ロードバランサーは、Arc インスタンスをホストしている複数のシステムに受信トラフィックを分散します。

Cluster behind a load balancer

クラスタリング用に構成されている場合、サーバーファーム内の各Arc インストールは同じアプリケーション構成を使用し、ディスク上の同じ場所への / からのデータを処理し、同じデータベーステーブルにトランザクションを記録します

その結果、アプリケーションの複数のインスタンスが1つのインスタンスのように動作し、特定のインスタンスが落ちてもクラスターのパフォーマンスを低下させることはありません。

クラスタリングのためのArc の設定

クラスター内の各ノードにArc をインストールした後は、各インストールで同じアプリケーションデータベースおよびアプリケーションデータディレクトリを使用するように設定する必要があります。

アプリケーションデータベース

Arc はデータベースを使用して、トランザクション履歴やアプリケーションで発生したエラーを記録します。Arc の各インスタンスは、処理されたすべてのファイルが最終的にデータベースに統合されるように、同じアプリケーションデータベースを使用するよう構成する必要があります。

Windows 版

Windows 版でアプリケーションデータベースを設定するには、AppDb 環境変数が適切な接続文字列とプロバイダーを含むよう設定する必要があります。これを実現するには、インストールディレクトリ内の’www’ フォルダにあるWeb.Config ファイルを編集します。このファイル内には、connectionStrings と呼ばれるコメントアウトされたXML 要素があります。次に例を示します。

<!-- connectionStrings>
  <add 
    name="AppDb" 
    connectionString="server=SQLSERVER_LOCATION;database=DATABASE_NAME;uid=USER_ID;password=PASSWORD;" 
    providerName="System.Data.SqlClient"
  />
</connectionStrings -->

このconnectionStrings 要素のコメントを解除し、’connectionString’ および’providerName’ 属性を目的のデータベースの適切な接続パラメータに設定します。Arc がこの接続文字列で正常に接続を確立できる場合、このデータベースをアプリケーションデータベースとして使用します。

組み込みJava サーバー

Java 版を組み込みJetty サーバーで使用する場合、アプリケーションデータベースはインストールディレクトリの”webapp” フォルダにあるarc.xml ファイルに設定されます。このサーバー設定ファイル内で、APP_DB 環境変数に、希望するデータベースの適切な接続パラメータを含むJDBC 接続文字列を設定する必要があります。次に例を示します。

<Call name="setInitParameter">
  <Arg>APP_DB</Arg>
  <Arg>jdbc:mysql:Server=MySQLServer;Port=3306;Database=mysql;User=user;Password=password</Arg>
</Call>

Arc がAPP_DB 接続文字列で正常に接続を確立できる場合、そのデータベースをアプリケーションデータベースとして使用します。

外部Java サーバー

Java 版を外部のJava サーブレット(アプリケーションに含まれるJetty サーバー以外のサーバー)で使用する場合、アプリケーションのデータベースの設定の詳細は使用する特定のサーブレットに依存します。サーバーを構成するときは、特定のサーブレットに適した構文を使用して、次のいずれかのアプローチを使用する必要があります。

  • ターゲットデータベースの接続プロパティを含むJNDI データソースを定義。
  • APP_DB 環境変数をJDBC 接続文字列に設定。

Arc がJNDI データソースまたはAPP_DB 接続文字列を使用してデータベースに接続できる場合、そのデータベースをアプリケーションデータベースとして使用します。

アプリケーションデータディレクトリ

Arc は、すべての設定データおよびアプリケーションデータをデータディレクトリと呼ばれるディスク上のフォルダに保存します。クラスタリングする場合、Arc の各インスタンスは同じデータディレクトリを使用するように設定する必要があります。これにより、すべてのインスタンスが同じファイルを処理し、同じ設定を使用することが保証されます。

Windows 版

Windows 版でアプリケーションデータディレクトリを設定するには、AppDirectory 環境変数に、ディレクトリを作成するパスを設定する必要があります。これを実現するには、インストールディレクトリ内の’www’ フォルダにあるWeb.Config ファイルを編集します。このファイル内には、AppDirectory と呼ばれるコメントアウトされたXML 要素があり、その下にカスタムデータディレクトリの場所を指定できるappSettings という要素があります。

<!-- appSettings>
  <add key="AppDirectory" value="C:\\directory\\subdirectory\\subdirectory\\" />
</appSettings -->

このappSettings 要素のコメントを解除し、AppDirectory キー値をデータディレクトリのディスク上の適切なパスに設定します。Arc がパスを見つけることができ、指定されたパスで読み取りと書き込みを行う適切な権限を持っている場合、指定されたディレクトリ内にデータフォルダが作成されます。

組み込みJava サーバー

Java 版を組み込みJetty サーバーで使用する場合、アプリケーションデータベースはインストールディレクトリの”webapp” フォルダにあるarc.xml ファイルに設定されます。このサーバー設定ファイル内で、AppDirectory 環境変数に希望するディレクトリのパスを設定する必要があります。次の例は、データディレクトリをマウントされたドライブ上の共有フォルダに設定する場合を示しています。

<Call name="setInitParameter">
  <Arg>AppDirectory</Arg>
  <Arg>/mnt/shared/arc</Arg>
</Call>

Arc がパスを見つけることができ、指定されたパスで読み取りと書き込みを行う適切な権限を持っている場合、指定されたディレクトリ内にデータフォルダが作成されます。

外部Java サーバー

Java 版を外部のJava サーブレット(アプリケーションに含まれるJetty サーバー以外のサーバー)で使用する場合、アプリケーションのデータディレクトリの設定の詳細は使用する特定のサーブレットに依存します。特定のサーブレットに適した構文を使用するAppDirectory 環境変数を目的のディレクトリへのパスに設定する必要があります。

Arc がAppDirectory パスを見つけることができ、指定されたパスで読み取りと書き込みを行う適切な権限を持っている場合、指定されたディレクトリ内にデータフォルダが作成されます。

ロックおよび同時実行

Arc はロックを使用して、複数のインスタンスが互いに干渉したり、同じファイルを2度処理したりしないようにします。クラスタ環境では、スループットを維持し、衝突を防ぐために効率的なロックが重要です。ファイルシステムの遅延が問題になる可能性があるため、複数のサーバーファームにわたってArc インスタンスをクラスタ化しないことを強くお勧めします。

Arc の各インスタンスに共有アプリケーションディレクトリを設定するだけで、各インスタンスで確実にファイルロックが尊重されるようになります。