Virtual DataPort サーバーが稼働中かどうかの確認方法¶
ロードバランサー経由、または Virtual DataPort とのコネクションのプールを作成するアプリケーション経由で Denodo に接続する場合、コネクションが引き続き有効であることをロードバランサーまたはアプリケーションで確認するための方法が必要です。以下のセクションでは、コネクションの正常性を確認するさまざまな方法について説明します。
ping スクリプトの使用¶
ping
スクリプトは、Virtual DataPort サーバーが「稼働」していることを確認します。このスクリプトは、 <DENODO_HOME>/bin
にあります。
ping [ -t timeout ] [ -r ] [ -q <query> -l <login> [ -p <password> | -cf <configuration file> ] ] [ -v ]
<host>[:<port>][/<database name>
パラメータ |
説明 |
---|---|
-t |
オプション。応答を待機する時間 (ミリ秒単位)。この時間が経過してもスクリプトが応答を受信しない場合、エラーを返します。 |
-r |
オプション。サーバーでクエリを処理する準備ができており、シングルユーザーと昇格モードでないことを確認します (オプション、-q を使用する場合は無視されます)。 |
-q <query> |
オプション。指定されている場合、スクリプトは、Virtual DataPort サーバーが稼働しているかどうかの確認に加えて、クエリを実行します。このパラメータを指定する場合、ユーザーのログインとパスワードも渡す必要があります。多くのオペレーティングシステムでは、クエリが 1 つのパラメータとみなされるように、クエリを二重引用符で囲む必要があります。 |
-l |
|
-p |
パスワード。 ログイン ( このスクリプトをアプリケーションの別のスクリプトから呼び出す場合、パスワードをプレーンテキストで記述するのを避けるために、パスワードを暗号化することが推奨されます。 |
-cf <file> |
または
|
-v |
オプション。指定されている場合、スクリプトはステータスと、サーバーから応答を取得するのにかかる時間を表示します。指定されていない場合、エラーメッセージのみを表示します。 |
<host> |
Virtual DataPort のホスト。 |
<port> |
オプション。指定されていない場合、スクリプトは、Virtual DataPort のデフォルトポートである 9999 にリクエストを送信します。 |
<database> |
|
このスクリプトは、エラーが発生した場合、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 を返します。