デプロイスクリプトの構成

[Deployment Scripts] セクションでは、Solution Manager がロードバランサーでサーバーまたはクラスターを有効/無効にする際に使用するスクリプトを管理できます。

Dialog to configure the scripts that deal with the load balancer

ロードバランサーを処理するスクリプトを構成するためのダイアログ

環境内のクラスターの数に応じて、次のように一対のスクリプトのみが関係します。

  • 1 つのクラスターが含まれる環境: Solution Manager は、スクリプト Enable server in the load balancer および Disable server in the load balancer を使用します。

  • 複数のクラスターが含まれる環境: Solution Manager は、スクリプト Enable cluster in the load balancer および Disable cluster in the load balancer を使用します。

Solution Manager にスクリプトを追加するには、対応するパネルを展開して、スクリプトが含まれるファイルをドロップ領域内にドラッグアンドドロップします。

Dialog to add a deployment script

デプロイスクリプトを追加するためのダイアログ

各デプロイスクリプトで、パラメーターのリストを宣言できます。新規パラメーターを追加するには、 new-argument-text-btn ボタンをクリックし、表示されるフォームに入力します。引数は、以下のフィールドで定義します。

  • Name: パラメーターを説明する名前。

  • Type: Solution Manager では 2 種類の引数がサポートされています。

    • パラメーターに実際の値を指定する場合は [Literal] の引数を使用します。[Value] フィールドに引数の値を入力し、その値を暗号化形式で Solution Manager に保存する場合は [Encrypted literal value] チェックボックスをチェックします。

      Dialog to add a new literal argument to a deployment script

      新しいリテラル引数をデプロイスクリプトに追加するためのダイアログ

    • [負荷分散変数] ダイアログで定義したいずれかの変数を再使用する場合は、[Load Balancing Variable] を使用します。ロードバランサーでクラスターを有効/無効にするスクリプトは、クラスターの負荷分散変数のみをパラメーターとして受け取ることができる点に留意してください。一方、ロードバランサーでサーバーを有効/無効にするスクリプトは、クラスターとサーバーの両方の負荷分散変数を受け取ることができます。

      Dialog to add a new load balancing variable argument to a deployment script

      新しい負荷分散変数の引数をデプロイスクリプトに追加するためのダイアログ

Solution Manager は、スクリプトの実行時に引数の順序を保持します。引数のテーブルで、最初の列を使用して引数をドラッグアンドドロップすると、順序を変更できます。

Reordering an argument of a deployment script

デプロイスクリプトの引数の順序変更

重要

Solution Manager は、スクリプトが正常に実行された場合、終了コードの値 0 が返されるという規則に従っています。それ以外の終了コードは、実行時にエラーが発生したと見なされます。

デプロイスクリプトの例

Denodo の大規模なデプロイ環境がある会社があり、ロードバランサーとして F5 を使用しているとします。この会社では、開発と本番の 2 つの環境を使用しています。このような場合に、Solution Manager でデプロイスクリプトを構成する方法と、最終的なスクリプトがどのようになるのかを見てみましょう。

開発環境は、2 つの Virtual DataPort サーバーが含まれる 1 つのクラスターで構成されているため、ロードバランサーでサーバーを無効にするためのスクリプトと、有効にするための別のスクリプトの合計 2 つのスクリプトを指定する必要があります。

以下に示したスクリプトは、ロードバランサーでサーバーを無効にする方法の例です。このスクリプトは、ロードバランサーが配置されているマシンに SSH 経由で接続して、ロードバランサーでサーバーを無効にし、実行時にエラーがあれば取得します。

F5 でサーバーを無効にするスクリプトの例
@echo off

plink -ssh %1@%3 -pw %2 "tmsh modify /ltm node %4 state user-down session user-disabled" 1>&2

SET err_code=%ERRORLEVEL%
if %err_code% == 0 (
  echo OK
) else (
  echo Error 1>&2
)

exit %err_code%

このスクリプトは、以下の 4 つのパラメーターに依存します。

  1. SSH 経由でロードバランサーのマシンに接続するユーザーのログイン名

  2. SSH 経由でロードバランサーのマシンに接続するユーザーのパスワード

  3. ロードバランサーのマシンの IP またはホスト名

  4. ロードバランサーで指定されている Virtual DataPort サーバーの IP または論理名

したがって、[Deployment Scripts] セクションの Disable server in the load balancer スクリプトは、次の図のようになります。ここでは、ユーザー名、パスワード、および IP にクラスターの負荷分散変数を定義済みであることが前提となっています。

Script configuration to disable the server in F5

F5 でサーバーを無効にするスクリプトの構成

次の例からわかるように、ロードバランサーでサーバーを再び有効にするためのスクリプトは前述のスクリプトによく似ています。

F5 でサーバーを有効にするスクリプトの例
@echo off

plink -ssh %1@%3 -pw %2 "tmsh modify /ltm node %4 state user-up session user-enabled " 1>&2

SET err_code=%ERRORLEVEL%
if %err_code% == 0 (
  echo OK
) else (
  echo Error 1>&2
)

exit %err_code%

この会社の本番環境では、複数のクラスターが使用されています。したがって、ロードバランサーでクラスターを無効にしてから再び有効にするために、一対のスクリプトを用意する必要があります。

Denodo Platform が提供するサービスは、クラスター内で 3 つの仮想サーバーとしてモデル化されており、これらのサーバーが HTTP、JDBC、および ODBC 経由でのプラットフォームへのアクセスをプール方式で提供します。クラスターを無効にするには、ロードバランサーでこれらの仮想サーバーを無効にする必要があります。

以下のスクリプトは、ロードバランサーでクラスターを無効にする方法を示しています。このスクリプトは、ロードバランサーのマシンに SSH 経由で接続し、3 つの仮想サーバーを無効にして、プロセス全体でエラーがあれば取得します。最後のステップは、前のスクリプトよりも複雑になっていますが、これは、特定の仮想サーバーを無効にする 3 つの文のいずれかが失敗する可能性があるためです。

F5 でクラスターを無効にするスクリプトの例
@echo off

SET tempFileName=temp%RANDOM%.txt

plink -ssh %1@%3 -pw %2 "tmsh modify /ltm virtual %4 disabled; tmsh modify /ltm virtual %5 disabled; tmsh modify /ltm virtual %6 disabled; " 2> %tempFileName%

SETLOCAL EnableDelayedExpansion
SET errorString=
for /f "delims=" %%x in (%tempFileName%) do SET errorString=!errorString!%%x
SETLOCAL DisableDelayedExpansion

DEL %tempFileName%

if "%errorString%" == "" (
  echo OK
  exit 0
) else (
  echo Error "%errorString%" 1>&2
  exit 1
)

このスクリプトは、以下の 6 つのパラメーターに依存します。

  1. SSH 経由でロードバランサーのマシンに接続するユーザーのログイン名

  2. SSH 経由でロードバランサーのマシンに接続するユーザーのパスワード

  3. ロードバランサーのマシンの IP またはホスト名

  4. ロードバランサーの HTTP 仮想サーバーの名前

  5. ロードバランサーの JDBC 仮想サーバーの名前

  6. ロードバランサーの ODBC 仮想サーバーの名前

Solution Manager の [Disable cluster in the load balancer] ダイアログで前述のスクリプトを追加し、次の図のように 6 つの引数を構成する必要があります。

Script configuration to disable the cluster in F5

F5 でクラスターを無効にするスクリプトの構成

最後に、ロードバランサーでクラスターを有効にするスクリプトを使用して、プロセスを繰り返す必要があります。これは、次のコードのようになります。

F5 でクラスターを有効にするスクリプトの例
@echo off

SET tempFileName=temp%RANDOM%.txt

plink -ssh %1@%3 -pw %2 "tmsh modify /ltm virtual %4 enabled; tmsh modify /ltm virtual %5 enabled; tmsh modify /ltm virtual %6 enabled; " 2> %tempFileName%

SETLOCAL EnableDelayedExpansion
SET errorString=
for /f "delims=" %%x in (%tempFileName%) do SET errorString=!errorString!%%x
SETLOCAL DisableDelayedExpansion

DEL %tempFileName%

if "%errorString%" == "" (
  echo OK
  exit 0
) else (
  echo Error "%errorString%" 1>&2
  exit 1
)