同じインストール環境の複数の Virtual DataPort インスタンスの起動

注釈

この機能は非推奨であり、Denodo Platform の今後のメジャーバージョンで削除される可能性があります。

この機能を使用する場合は、代わりにメタデータを外部データベースに保存するように Virtual DataPort を構成してください (「 外部データベースへのメタデータの保存 」を参照)。

これは、同じコンピュータで動作する 2 つの異なる Denodo Platform インストール環境から 2 つの Virtual DataPort サーバーを起動する機能では ありません 。同じコンピュータの異なるインストール環境から 2 つの Virtual DataPort サーバーを実行する機能は完全にサポートされています。

非推奨のすべての機能のリストについては、「 Features Deprecated for Denodo Platform 8.0 」のセクションを参照してください。

同じ Virtual DataPort インストール環境の複数のインスタンスを 同じホスト内で 同時に起動し、同じメタデータ (データソース、ビューなど) と同じ Web コンテナーを共有することができます。各インスタンスは独立して実行されます。つまり、各インスタンスはオペレーティングシステムの異なるプロセスです。

同じサーバーの複数のインスタンスを実行する場合、1 つが プライマリ になり、それ以外は セカンダリ インスタンスになります。 プライマリ インスタンスは、 セカンダリ インスタンスより先に起動する必要があります。

サーバーのメタデータを変更 (データソース、ビューなどの作成、編集、削除) できるのは、 プライマリ インスタンスのみです。

メタデータを変更した場合、セカンダリインスタンスを再起動して、すべての セカンダリ インスタンスに変更を「認識」させる必要があります。これは、 セカンダリ インスタンスは起動時にのみ プライマリ からメタデータを読み取るためです。

JMS リスナーを定義した場合、プライマリインスタンスだけが JMS サーバーへのコネクションを開きます。

Virtual DataPort は、組み込み Derby データベースを使用して、ユーザーが作成したメタデータ (データソース、ビューなど) を保存します。 セカンダリ インスタンスは、 プライマリ サーバーの組み込みデータベースに接続して、エレメントのメタデータにアクセスします。

セカンダリインスタンスの構成方法

2 つの セカンダリ インスタンスを aux_1 および aux_2 という名前で追加するとします。これを行うには、以下の手順に従って実施してください。

  1. 管理者としてログインして、VQL シェルを開き、以下のコマンドを実行します。

SET 'vdp.instances' = 'aux_1,aux_2';

SET 'com.denodo.vdb.vdbinterface.server.VDBManagerImpl.aux_1.port' = '19999';
SET 'com.denodo.vdb.vdbinterface.server.VDBManagerImpl.aux_1.odbcPort' = '19996';
SET 'com.denodo.vdb.vdbinterface.server.VDBManagerImpl.aux_1.registryURL' = 'localhost';
SET 'com.denodo.vdb.vdbinterface.server.VDBManagerImpl.aux_1.registryPort' = '19997';
SET 'com.denodo.vdb.vdbinterface.server.VDBManagerImpl.aux_1.factoryPort' = '19995';
SET 'com.denodo.vdb.vdbinterface.server.VDBManagerImpl.aux_1.shutdownPort' = '19998';

SET 'com.denodo.vdb.vdbinterface.server.VDBManagerImpl.aux_1.port' = '29999';
SET 'com.denodo.vdb.vdbinterface.server.VDBManagerImpl.aux_2.odbcPort' = '29996';
SET 'com.denodo.vdb.vdbinterface.server.VDBManagerImpl.aux_2.registryURL' = 'localhost';
SET 'com.denodo.vdb.vdbinterface.server.VDBManagerImpl.aux_2.registryPort' = '29997';
SET 'com.denodo.vdb.vdbinterface.server.VDBManagerImpl.aux_2.factoryPort' = '29995';
SET 'com.denodo.vdb.vdbinterface.server.VDBManagerImpl.aux_2.shutdownPort' = '29998';

vdp.instances プロパティの各エレメントについて、以下のプロパティを定義する必要があります。

com.denodo.vdb.vdbinterface.server.VDBManagerImpl.<name of the instance>.port
com.denodo.vdb.vdbinterface.server.VDBManagerImpl.<name of the instance>.odbcPort
com.denodo.vdb.vdbinterface.server.VDBManagerImpl.<name of the instance>.registryURL
com.denodo.vdb.vdbinterface.server.VDBManagerImpl.<name of the instance>.registryPort
com.denodo.vdb.vdbinterface.server.VDBManagerImpl.<name of the instance>.factoryPort
com.denodo.vdb.vdbinterface.server.VDBManagerImpl.<name of the instance>.shutdownPort
  1. オプションで、新しい各インスタンスに対して Java 仮想マシンのオプションを構成できます。これを行うには、以下のコマンドを実行します。

SET 'java.env.aux_1.DENODO_OPTS_START' = '-Xmx2g -XX:MaxPermSize=256m';
SET 'java.env.aux_1.DENODO_OPTS_STOP' = '-Xmx64m';

SET 'java.env.aux_2.DENODO_OPTS_START' = '-Xmx2g -XX:MaxPermSize=256m';
SET 'java.env.aux_2.DENODO_OPTS_STOP' = '-Xmx64m';

DENODO_OPTS_START プロパティには、インスタンスを起動するときに使用する JVM オプションを設定します。

DENODO_OPTS_STOP プロパティには、サーバーを停止するスクリプトを起動するときに使用する JVM オプションを設定します。

vdp.instances プロパティで定義されていて、 DENODO_OPTS_START 変数と DENODO_OPTS_STOP 変数が定義されていないサーバーは、 プライマリ サーバーの JVM オプションを使用して起動されます。

  1. インストール環境で、 <DENODO_HOME>/bin/regenerateInstanceScripts スクリプトを実行します。

    このスクリプトを実行すると、 <DENODO_HOME>/bin/instances ディレクトリが作成されます。このディレクトリには、 プライマリ サーバーの セカンダリ インスタンスを起動するスクリプトが置かれます。

    各インスタンスに、以下のスクリプトが存在します。

    1. インスタンスを起動するスクリプト: vqlserver_<name of the instance>_startup

    2. インスタンスを停止するスクリプト: vqlserver_<name of the instance>_shutdown

      「セーフシャットダウンモード」でインスタンスを停止するには、 vqlserver_<name of the instance>_shutdown safe を実行します。

      これを実行すると、インスタンスは新しいコネクションの受け入れを停止します。インスタンスは、すべてのクエリが完了するまでシャットダウンしません。

    3. Windows でサーバーを実行している場合に Windows サービスを新規作成、削除、起動、および停止するスクリプト: vdpservice_<name of the instance>.bat

  2. プライマリ インスタンスを セカンダリ インスタンスより先に起動します。それには、Denodo Control Center で起動するか、または <DENODO_HOME>/bin/vqlserver_startup.bat スクリプトを実行します。

  3. スクリプト <DENODO_HOME>/bin/instances/vqlserver_aux_1_startup <DENODO_HOME>/bin/instances/vqlserver_aux_2_startup を実行して、 セカンダリ インスタンスを起動します。

  4. セカンダリインスタンスで、キャッシュメンテナンスタスクを無効にします。

    これを行うために、[Administration] > [Server configuration] メニューの [Cache] ダイアログを開いて、[Maintenance Off] をチェックします。

  5. インスタンスを停止するには、先に セカンダリ インスタンスを停止してから、 プライマリ を停止します。

これで、3 つのインスタンス (プライマリ または セカンダリ) のいずれかに接続して、ビューに対してクエリを実行できます。ただし、データソースやビューの作成、編集、削除、Web サービスの公開など、サーバーのメタデータを変更する場合は、 プライマリ インスタンスに接続する必要があります。

この構成に基づく Web サービスのデプロイ

Virtual DataPort がプライマリ/セカンダリ構成で動作している場合、Web サービスをデプロイするウィザードに [Virtual DataPort server URI] ボックスも表示されます。このボックスには、このサービスの接続先の Virtual DataPort サーバーの URI を入力する必要があります。これが必要な理由は、プライマリ/セカンダリ構成では、動作している組み込み Web コンテナーは 1 つだけですが、その内部で動作するサービスはどの Virtual DataPort インスタンスにも接続できるからです。すべてのインスタンスが同じホストで動作するので、この URI のホスト名はすべてのインスタンスで同じです。ただし、ポート番号はインスタンスごとに異なります。

この構成に基づく Web サービスのデプロイ

Virtual DataPort がプライマリ/セカンダリ構成で動作している場合、Web サービスをデプロイするウィザードに [Virtual DataPort server URI] ボックスも表示されます。このボックスには、このサービスの接続先の Virtual DataPort サーバーの URI を入力する必要があります。これが必要な理由は、プライマリ/セカンダリ構成では、動作している組み込み Web コンテナーは 1 つだけですが、その内部で動作するサービスはどの Virtual DataPort インスタンスにも接続できるからです。すべてのインスタンスが同じホストで動作するので、この URI のホスト名はすべてのインスタンスで同じです。ただし、ポート番号はインスタンスごとに異なります。