この章の内容は次のとおりです。
スケーリング操作時に、状況によってはWebLogic Server環境で様々なエンティティまたはシステムで機能を実行する必要があります。たとえば、動的クラスタで新しいサーバー・インスタンスを起動する前には、新しいVMをプロビジョニングしたり、マシンを構成したりするために、仮想マネージャとの調整が必要になる場合があります。スケーリング操作の前または直後に自動的にこのようなタスクを実行する手段として、スクリプト・インターセプタが用意されています。
スクリプト・インターセプタでは、主に2種類のスクリプトを実行できます。
プリプロセッサ・スクリプトは、スケーリング操作の前にタスクを実行します。
ポストプロセッサ・スクリプトは、スケーリング操作の直後にタスクを実行します。
プリプロセッサ・スクリプトまたはポストプロセッサ・スクリプトの実行時にエラーが発生した場合、スクリプト・インターセプタではエラー・ハンドラ・スクリプトも実行できます。また、複数のスクリプト・インターセプタ・インスタンスがスケーリング操作のインターセプタ・チェーンで使用できます。
注意:
プリプロセッサ・スクリプトの実行が失敗した場合、関連するスケーリング操作もその後に構成されたインターセプタも起動されません。ポストプロセッサ・スクリプトが失敗した場合、そのスクリプトの起動より前に実行されたスケーリング・アクションを元に戻すことも取り消すこともできません。
スクリプト・インターセプタは、ScriptInterceptorMBean
を使用して構成されます。例9-1は、サンプル・スクリプト・インターセプタ構成です。
例9-1 スクリプト・インターセプタの構成
EditServiceMBean editService = mbsFactory.getEditService(); ConfigurationManagerMBean configManager = editService.getConfigurationManager(); configManager.startEdit(5000, 5000); DomainMBean domainMBean = editService.getDomainConfiguration(); InterceptorsMBean interceptors = (InterceptorsMBean) domainMBean.getInterceptors(); ScriptInterceptorMBean scriptInterceptor1 = interceptors.createScriptInterceptor("script-1"); scriptInterceptor1.setPriority(50); PreProcessorScriptMBean pre1 = scriptInterceptor1.getPreProcessor(); pre1.setWorkingDirectory(domainMBean.getRootDirectory()); pre1.setPathToScript("/bin/sh"); pre1.setArguments(new String[] {domainMBean.getRootDirectory() + "/scripts/interceptors/echo-arg-interceptor.sh", "first"}); Properties envAsProps = new Properties(); envAsProps.put("env-key-1", "env-1-value"); envAsProps.put("env-key-2", "env-2-value"); envAsProps.put("env-key-3", "env-3-value"); pre1.setEnvironment(envAsProps); ScriptInterceptorMBean scriptInterceptor2 = interceptors.createScriptInterceptor("script-2"); scriptInterceptor2.setPriority(20); PreProcessorScriptMBean pre2 = scriptInterceptor2.getPreProcessor(); pre2.setWorkingDirectory(domainMBean.getRootDirectory()); pre2.setPathToScript("/bin/sh"); pre2.setArguments(new String[] {domainMBean.getRootDirectory() + "/scripts/interceptors/echo-arg-interceptor.sh", "second"}); configManager.save(); configManager.activate(5000);
スクリプト・インターセプタは、WebLogic Server管理コンソールを使用して作成および構成することもできます。詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのスクリプト・インターセプタの作成およびスクリプト・インターセプタの全般的な設定の構成を参照してください。
プリプロセッサ・スクリプトは、スクリプト・インターセプタによってスケーリング操作の前に実行されます。
プリプロセッサ・スクリプトの実行が失敗した場合、その後のプリプロセッサ・スクリプトもそれに対応するスケーリング操作も起動されません。
WebLogic Server管理コンソールを使用したスクリプト・インターセプタに対するプリプロセッサ・スクリプトの構成の詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのスクリプト・インターセプタのプリプロセッサ・スクリプト設定の構成を参照してください。
ポスト・プロセッサ・スクリプトは、スクリプト・インターセプタによって、スケーリング操作の後に実行されます。
ポストプロセッサ・スクリプトの実行が失敗した場合、その前に実行されたスケーリング操作を取り消すことはできません。
WebLogic Server管理コンソールを使用したスクリプト・インターセプタに対するポストプロセッサ・スクリプトの構成の詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのスクリプト・インターセプタのポストプロセッサ・スクリプト設定の構成を参照してください。
スクリプト・インターセプタに対してプリプロセッサ・スクリプトまたはポストプロセッサ・スクリプトを構成する際、メイン・スクリプトの実行中にエラーが発生した場合に使用するエラー・ハンドラ・スクリプトを指定できます。エラー・ハンドラ・スクリプトは、コマンド・スクリプトと同じ引数および環境プロパティを使用して実行されます。
スクリプト・インターセプタは、計算パラメータと動的パラメータの両方を環境変数としてスクリプトに渡すことができます。さらに、WLDFには、スクリプトで使用できる一連の予約済の環境変数が組み込まれています。このような予約済の環境変数とその説明を次の表にまとめます。この表の1つ目の変数WLS_SCRIPT_THIS_STEP_FAILED
を除いて、これらの変数はそれぞれ、プリプロセッサ・スクリプト、ポストプロセッサ・スクリプトおよびエラー・ハンドラ・スクリプトに渡すことができます。
環境変数 | 説明 |
---|---|
WLS_SCRIPT_THIS_STEP_FAILED |
この変数は、エラー・ハンドラ・スクリプトにのみ渡されます。値'false'は、どこか後続ステップが失敗したことを示します。
|
WLS_SCRIPT_OUTPUT_FILE |
スクリプトによって作成される出力プロパティ・ファイルへのパスを表します。ファイルの内容が読み取られて後続スクリプトに渡されます。 |
WLS_SCRIPT_TEMP_DIR |
スクリプトによって一時ファイルが作成される一時ディレクトリへのパスを表します。 |
WLS_SCRIPT_DYNAMIC_CLUSTER_NAME |
スケール・アップまたはスケール・ダウン対象の動的クラスタの名前を表します。 |
WLS_SCRIPT_DYNAMIC_CLUSTER_OPERATION_NAME |
現行スケーリング操作を表し、 |
WLS_SCRIPT_DYNAMIC_CLUSTER_MIN_SIZE |
動的クラスタの最小サイズを表します。 |
WLS_SCRIPT_DYNAMIC_CLUSTER_MAX_SIZE |
動的クラスタの最大サイズを表します。 |
WLS_SCRIPT_DYNAMIC_CLUSTER_SIZE |
動的クラスタの現行サイズを表します。 |
WLS_SCRIPT_DYNAMIC_CLUSTER_CANDIDATE_MEMBER_NAMES |
起動または停止する対象として選択できる候補サーバーの名前を表します。 |
WLS_SCRIPT_DYNAMIC_CLUSTER_REQUESTED_SCALING_SIZE |
増やすまたは減らす対象としてリクエストされたクラスタ内で実行中のサーバーの数を表します。 |
WLS_SCRIPT_DYNAMIC_CLUSTER_ALLOWED_SCALING_SIZE |
起動または停止されるサーバーの実際の数を表します(リクエストされたスケーリング・サイズよりも小さいこともあります)。 |
WLS_SCRIPT_DYNAMIC_CLUSTER_SCALED_MEMBER_NAMES |
スケール・アップ操作またはスケール・ダウン操作時に起動または停止する対象として選択されたサーバーの名前を表します。 |