デプロイスクリプトの構成 (標準モード)¶
注釈
このオプションは 標準モード環境 でのみ使用できます。
[Deployment Scripts] セクションでは、Solution Manager がロードバランサーでサーバーまたはクラスタを有効/無効にする際に使用するスクリプトを管理できます。

ロードバランサーを処理するスクリプトを構成するためのダイアログ¶
環境内のクラスタの数に応じて、次のように一対のスクリプトのみが関係します。
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 にスクリプトを追加するには、対応するパネルを展開して、スクリプトが含まれるファイルをドロップ領域内にドラッグアンドドロップします。

デプロイスクリプトを追加するためのダイアログ¶
各デプロイスクリプトで、パラメータのリストを宣言できます。新規パラメータを追加するには、 ボタンをクリックし、表示されるフォームに入力します。引数は、以下のフィールドで定義します。
Name: パラメータを説明する名前。
Type: Solution Manager では 2 種類の引数がサポートされています。
パラメータに実際の値を指定する場合は [Literal] の引数を使用します。[Value] フィールドに引数の値を入力し、その値を暗号化形式で Solution Manager に保存する場合は [Encrypted literal value] チェックボックスをチェックします。
新しいリテラル引数をデプロイスクリプトに追加するためのダイアログ¶
[負荷分散変数] ダイアログで定義したいずれかの変数を再使用する場合は、[Load Balancing Variable] を使用します。ロードバランサーでクラスタを有効/無効にするスクリプトは、クラスタの負荷分散変数のみをパラメータとして受け取ることができる点に留意してください。一方、ロードバランサーでサーバーを有効/無効にするスクリプトは、クラスタとサーバーの両方の負荷分散変数を受け取ることができます。
新しい負荷分散変数の引数をデプロイスクリプトに追加するためのダイアログ¶
Solution Manager は、スクリプトの実行時に引数の順序を保持します。引数のテーブルで、最初の列を使用して引数をドラッグアンドドロップすると、順序を変更できます。

デプロイスクリプトの引数の順序変更¶
重要
Solution Manager は、スクリプトが正常に実行された場合、終了コードの値 0
が返されるという規則に従っています。それ以外の終了コードは、実行時にエラーが発生したと見なされます。
デプロイスクリプトの例¶
Denodo の大規模なデプロイ環境がある会社があり、ロードバランサーとして F5 を使用しているとします。この会社では、開発と本番の 2 つの環境を使用しています。このような場合に、Solution Manager でデプロイスクリプトを構成する方法と、最終的なスクリプトがどのようになるのかを見てみましょう。
開発環境は、2 つの Virtual DataPort サーバーが含まれる 1 つのクラスタで構成されているため、ロードバランサーでサーバーを無効にするためのスクリプトと、有効にするための別のスクリプトの合計 2 つのスクリプトを指定する必要があります。
以下に示したスクリプトは、ロードバランサーでサーバーを無効にする方法の例です。このスクリプトは、ロードバランサーが配置されているマシンに SSH 経由で接続して、ロードバランサーでサーバーを無効にし、実行時にエラーがあれば取得します。
@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 つのパラメータに依存します。
SSH 経由でロードバランサーのマシンに接続するユーザーのログイン名
SSH 経由でロードバランサーのマシンに接続するユーザーのパスワード
ロードバランサーのマシンの IP またはホスト名
ロードバランサーで指定されている Virtual DataPort サーバーの IP または論理名
したがって、[Deployment Scripts] セクションの Disable server in the load balancer スクリプトは、次の図のようになります。ここでは、ユーザー名、パスワード、および IP にクラスタの負荷分散変数を定義済みであることが前提となっています。

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 つの文のいずれかが失敗する可能性があるためです。
@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 つのパラメータに依存します。
SSH 経由でロードバランサーのマシンに接続するユーザーのログイン名
SSH 経由でロードバランサーのマシンに接続するユーザーのパスワード
ロードバランサーのマシンの IP またはホスト名
ロードバランサーの HTTP 仮想サーバーの名前
ロードバランサーの JDBC 仮想サーバーの名前
ロードバランサーの ODBC 仮想サーバーの名前
Solution Manager の [Disable cluster in the load balancer] ダイアログで前述のスクリプトを追加し、次の図のように 6 つの引数を構成する必要があります。

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
)