Virtual DataPort サーバーが稼働中かどうかの確認方法

ロードバランサー経由、または Virtual DataPort とのコネクションのプールを作成するアプリケーション経由で Denodo に接続する場合、コネクションが引き続き有効であることをロードバランサーまたはアプリケーションで確認するための方法が必要です。以下のセクションでは、コネクションの正常性を確認するさまざまな方法について説明します。

ping スクリプトの使用

ping スクリプトは、Virtual DataPort サーバーが「稼働」していることを確認します。このスクリプトは、 <DENODO_HOME>/bin にあります。

ping スクリプトの構文
ping [ -t timeout ] [ -q <query> -l <login> [ -p <password> | -cf <configuration file> ] ] [ -v ]
     <host>[:<port>][/<database name>
ping スクリプトのパラメーター

パラメーター

説明

-t

オプション。応答を待機する時間 (ミリ秒単位)。この時間が経過してもスクリプトが応答を受信しない場合、エラーを返します。

-q <query>

オプション。指定されている場合、スクリプトは、Virtual DataPort サーバーが稼働しているかどうかの確認に加えて、クエリを実行します。このパラメーターを指定する場合、ユーザーのログインとパスワードも渡す必要があります。多くのオペレーティングシステムでは、クエリが 1 つのパラメーターとみなされるように、クエリを二重引用符で囲む必要があります。

-l

-q を使用する場合は必須。ログイン。

-p

パスワード。 -cf と同時に指定することはできません。 -p "encrypted:UjOsIu8972jviqGpcLP3Mg==" のように、接頭辞 encrypted: を付加することで、暗号化したパスワードを指定できます (パスワードを暗号化するには encrypt_password スクリプトを使用します)。

ログイン (-l) を指定して、パスワード (-p) も構成ファイル (-cf) も指定しない場合、パスワードの入力が要求されます。

このスクリプトをアプリケーションの別のスクリプトから呼び出す場合、パスワードをプレーンテキストで記述するのを避けるために、パスワードを暗号化することが推奨されます。

-cf <file>

-p と同時に指定することはできません。次の内容が記述された 1 行のファイルを指定します。

password=<password>

または

password=encrypted:<encrypted_password> (パスワードを暗号化するには encrypt_password スクリプトを使用します)。

-v

オプション。指定されている場合、スクリプトはステータスと、サーバーから応答を取得するのにかかる時間を表示します。指定されていない場合、エラーメッセージのみを表示します。

<host>

Virtual DataPort のホスト。

<port>

オプション。指定されていない場合、スクリプトは、Virtual DataPort のデフォルトポートである 9999 にリクエストを送信します。

<database>

-q を使用する場合は必須。クエリが実行されるデータベース。

このスクリプトは、エラーが発生した場合、1 を返します (たとえば、サーバーに到達できない、クエリが失敗した、タイムアウトしたなど)。正常に終了した場合、0 を返します。

例 1

Windows の場合:

<DENODO_HOME>\bin\ping.bat -v -t 30000 -q "SELECT 1" -l monitor_user -p "encrypted:UjOsIu8972jviqGpcLP3Mg==" //denodo-dv1.acme.com/admin

Linux の場合:

<DENODO_HOME>/bin/ping.sh -v -t 30000 -q "SELECT 1" -l monitor_user -p "encrypted:UjOsIu8972jviqGpcLP3Mg==" //denodo-dv1.acme.com/admin

この例では、ping リクエストを denodo-dv1.acme.com に送信します。

  • サーバーが応答した場合、データベース「admin」でクエリ「SELECT 1」を実行します。クエリが 1 つのパラメーターとみなされるように、クエリ (パラメーター -q) を二重引用符で囲む必要があることに注意してください。

  • Virtual DataPort に接続してクエリを実行するのに 30 秒を超える時間がかかる場合、スクリプトは失敗します。

  • パスワード (パラメーター -p) が encrypted: で始まっていることに注意してください。これは、その後に暗号化されたパスワードが記述されているためです。

ユーザーアカウントのパスワードを暗号化するには、以下を実行します。

Windows の場合:

<DENODO_HOME>\bin\encrypt_password.bat

Linux の場合:

<DENODO_HOME>/bin/encrypt_password.sh

パスワードを入力して Enter キーを押すと、暗号化されたパスワードが返されます。暗号化するパスワードをこのスクリプトのパラメーターとして渡すこともできます。

例 2

ping -t 30000 -v //denodo-dv1.acme.com:19999

ポート 19999 で待機する Virtual DataPort に ping リクエストを送信し、タイムアウトとして 30 秒を指定します。前の例と異なり、ここではクエリを実行しません。ユーザーとパスワードを指定する必要がないのはそのためです。

ping スクリプト以外の方法

ロードバランサーで ping クエリを実行することも ping スクリプトを使用することもできない環境では、RESTful Web サービス経由で Virtual DataPort に HTTP リクエストを送信するスクリプトを作成できます。

クエリ対象のビューを非常に軽量にすることが重要です。このようなビューを作成するには、次のステートメントを使用することが推奨されます。

CREATE OR REPLACE VIEW ping_query_view AS
SELECT 1;

このビューに対してクエリを実行すると、内部ストアドプロシージャ Dual の呼び出しのみが行われます。データソースは一切関与しません。

次に、URL http://denodo-dv1.acme.com:9090/denodo-restfulws/admin/views/ping_query_view にアクセスするスクリプトを作成します。

Virtual DataPort サーバーが稼働している場合、この URL は HTTP コード 200 を返します。