この章の内容は次のとおりです。
WLDFは、特定の時刻、一定期間経過後、または指定間隔で、カレンダ・スケジュールに応じて起動されるポリシーのアクションをサポートするようになりました。カレンダベースのスケーリングでは、定義されたスケジュールに基づいてスケーリング・アクションを実行します。
カレンダベースのルール・スケジュールは、式言語としてJava式言語(EL)を利用するHarvester
ルールでのみサポートされます。次のポリシー・タイプで、カレンダベースのルール・スケジュールがサポートされています。
カレンダベース
スマート・ルールベース
収集対象メトリック
カレンダベースのスケーリングを構成するには、ポリシーを作成し、ポリシーのスケジュールを定義し、スケーリング・アクションを作成してそのポリシーに割り当てます。ポリシー・スケジュールは、次に基づいて実行するように設定できます。
N秒ごと
N分ごと
N時間ごと
特定の曜日(の特定の時刻)
月内の特定の日(の特定の時刻)
ポリシー・スケジュールは、WLDFScheduleBean
に基づきます。表6-1に、ポリシー・スケジュールを設定するために使用する属性を示します。
表6-1 WLDFScheduleBean属性
属性 | デフォルト値 | 使用可能な値 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
* (毎月) |
|
|
|
|
|
n/a |
|
|
|
|
これらの属性は、次の構文を使用して、いくつかの方法で指定できます。この構文は、EJB ScheduleExpression
クラスによってサポートされます。この構文の詳細は、ScheduleExpression
のドキュメントを参照してください。
単一の値。例:
second = "10" month = "Oct"
属性の可能値すべてを表すワイルドカード(*)を使用します。たとえば、すべての曜日を指定するには次のようにします。
dayOfWeek = "*"
範囲。値の包含範囲に属性を制約します。範囲の両端はダッシュで区切って指定します。例:
second = "1-10" dayOfWeek = "Mon-Fri"
増分。最初の値と間隔に基づき、スラッシュ(/)を使用してこの2つの値を区切って、属性を制約します。増分の使用は、second
、minute
およびhour
属性を指定する場合のみサポートされます。例:
minute = "*/5"
は、5分ごとを表します。この構文は、minute = "0,5,10,15,20,25,30,35,40,45,50,55"
と同等です。
second = "30/10"
は、1分のうち、30秒から開始して10秒ごとを表します。この構文は、second = "30,40,50"
と同等です。
注意:
属性の最大値に達すると、増分は停止します。つまり、最大許容値を上回りません。
リスト。カンマ区切りのリストを使用して、複数の許容される値または値の範囲に属性を制約します。各リスト項目は、値または範囲である必要があり、ワイルドカード、リストまたは増分であることはできません。例:
second = "10,20,30" dayOfWeek = "Mon,Wed,Fri" minute = "0-10,30,40"
WebLogic Server管理コンソール、Fusion Middleware ControlまたはWLSTを使用して、カレンダ・ベースのスケーリングを構成できます(次の各項を参照)。
注意:
ドメインでカレンダベースのスケーリングを構成する前に、必ず動的クラスタを作成し、「拡張度を構成するための要件」で説明されている前提条件となるタスクを完了しておいてください。
ターゲットが管理サーバーに設定されているドメイン全体の診断システム・モジュールでは、カレンダベースのポリシーを構成する必要があります。
WebLogic Server管理コンソールを使用してカレンダベースのスケーリングを構成する手順:
カレンダベースのルールをサポートするポリシーを作成して有効化します。Oracle WebLogic Server管理コンソール・オンライン・ヘルプの次のトピックを参照してください。
注意:
WebLogic Server管理コンソールを使用してカレンダベースのポリシーを作成する際に、ポリシーのスケジュールを指定し、さらにスケーリング・アクションを作成してポリシーに割り当てることもできます。ポリシー自体の作成時にポリシーのスケジュールおよびスケーリング・アクションを指定しない場合、次の手順を使用して後で構成を完了できます。
ポリシーのスケジュールを設定または更新します。
管理コンソールの左側のペインで「診断」を展開して、「診断モジュール」を選択します。
構成するポリシーを含む診断モジュールを選択します。
「構成」→「ポリシーとアクション」→「ポリシー」を選択して、構成するポリシーの名前をクリックします。
「スケジュール」ページを選択して、ポリシーに対して希望するスケジュール設定を定義します。
「保存」をクリックします。
スケーリング・アクションを作成、有効化します。Oracle WebLogic Server管理コンソール・オンライン・ヘルプの次のトピックを参照してください。
ポリシーにスケーリング・アクションを割り当てます。
注意:
指定のポリシーには1つのスケーリング・アクションしか割り当てることができません。
管理コンソールの左側のペインで「診断」を展開して、「診断モジュール」を選択します。
構成するポリシーを含む診断システム・モジュールを選択します。
「構成」→「ポリシーとアクション」→「ポリシー」を選択して、構成するポリシーの名前をクリックします。
「アクション」ページを選択します。
「スケーリング・アクション」セクションで、「アクションのスケール・アップ」と「アクションのスケール・ダウン」のいずれかを選択し、このポリシーに割り当てるスケール・アップまたはスケール・ダウン・アクションを選択します。あるいは、「新規スケール・アップ・アクション」または「新規スケール・ダウン・アクション」をクリックして、このポリシーの新規スケーリング・アクションを作成します。
「保存」をクリックします。
Fusion Middleware Controlを使用してカレンダベースのスケーリングを構成する手順:
カレンダベースのルールをサポートするポリシーを作成して有効化します。『Fusion Middleware ControlによるOracle WebLogic Serverの管理』の新しいポリシーの作成に関する項を参照してください。
注意:
Fusion Middleware Controlでのポリシーソールでの作成時に、ポリシーのスケジュールを指定し、ポリシーにスケーリング・アクションを作成して割り当てることができます。作成時にポリシーのスケジュールおよびスケーリング・アクションを指定しない場合、次の手順を使用して必要な構成を完了できます。
ポリシーのスケジュールを設定または更新します。
「WebLogicドメイン」ドロップダウン・メニューから「診断」を選択し、「診断モジュール」を選択します。
「診断モジュール」表で、編集するポリシーを含む診断システム・モジュールを選択します。
「構成」→「ポリシーとアクション」→「ポリシー」を選択して、構成するポリシーの名前をクリックします。
「スケジュール」ページを選択して、ポリシーに対して希望するスケジュール設定を定義します。
「適用」をクリックします。
スケーリング・アクションを作成、有効化します。『Fusion Middleware ControlによるOracle WebLogic Serverの管理』のスケール・アップまたはスケール・ダウン・アクションの作成に関する項を参照してください。
ポリシーにスケーリング・アクションを割り当てます。
注意:
指定のポリシーには1つのスケーリング・アクションしか割り当てることができません。
「WebLogicドメイン」ドロップダウン・メニューから「診断」を選択し、「診断モジュール」を選択します。
「診断モジュール」表で、編集するポリシーを含む診断システム・モジュールを選択します。
「構成」→「ポリシーとアクション」→「ポリシー」を選択して、構成するポリシーの名前をクリックします。
「アクション」ページを選択します。
「スケーリング・アクション」セクションで、「アクションのスケール・アップ」と「アクションのスケール・ダウン」のいずれかを選択し、リストから希望のスケーリング・アクションを選択します。オプションで、「スケール・アップ・アクションの作成」または「スケール・ダウン・アクションの作成」をクリックして、このポリシーの新規スケーリング・アクションを作成します。
「適用」をクリックします。
次の例に、WLSTを使用して特定の日の特定の時刻に動的クラスタをスケール変更するカレンダベースのポリシーを作成して構成する方法を示します。例6-1では、12月26日午前3時にスケール・アップ・アクションを実行するカレンダベースのポリシーを構成するコマンドを示します。例6-2では、1月15日午前0時にスケール・ダウン・アクションを実行するカレンダベースのポリシーを構成するコマンドを示します。
例6-1 スケール・アップ・アクションを設定したカレンダベースのポリシー
calendarScaleUp=wn.createWatch('ChristmasReturnsScaleUpWatch') calendarScaleUp.setExpressionLanguage('EL') calendarScaleUp.getSchedule().setHour('3') calendarScaleUp.getSchedule().setMinute('0') calendarScaleUp.getSchedule().setSecond('0') calendarScaleUp.getSchedule().setDayOfMonth('26') calendarScaleUp.getSchedule().setMonth('Dec') calendarScaleUp.setEnabled(false) calendarScaleUp.addNotification(scaleUp)
例6-2 スケール・ダウン・アクションを設定したカレンダベースのポリシー
calendarScaleDown=wn.createWatch('PostChristmasReturnsScaleDownWatch') calendarScaleDown.setExpressionLanguage('EL') calendarScaleDown.getSchedule().setHour('0') calendarScaleDown.getSchedule().setMinute('0') calendarScaleDown.getSchedule().setSecond('0') calendarScaleDown.getSchedule().setDayOfMonth('15') calendarScaleDown.getSchedule().setMonth('Jan') calendarScaleDown.setEnabled(false) calendarScaleDown.addNotification(scaleDown)