WebLogic Server 12.2.1で、動的クラスターの自動スケーリングを試してみた
WebLogic Server 12cR2では、クラスターのメンバーを自動的に増減する機能が追加されました。この機能では、スケジュールベース、メトリックベースの動的スケーリングをサポートしています。
- スケジュールベース
- 予め指定されたスケジュールで、クラスターメンバーの増減を行います
- (例)決められた曜日/時刻が来たら、サーバーを追加して予想される負荷に対応
- メトリックベース
- 指定したメトリックの値が、一定の値を超えるなどした場合に、クラスターメンバーの増減を行います。
- (例)所定の時間内に一定数以上のリクエストを検出したらサーバーを追加し、突発的な負荷に対応
今回は、スケジュールベースの自動スケーリングを試して見ます。
構成手順
0. (準備)マシンを構成する
追加されるクラスターメンバーを稼働させるためのマシンを、予め構成しておきます。
- 管理サーバーとは別のホストに、管理対象サーバーを一台構成
- 上記管理サーバーに対し、マシンを構成。マシン名は"Machine-wlsmanaged0"
- クラスターメンバーへのアクセス用に以下のポートを開放
- 7101
- 7102
- 8101
- 8102
本記事では、上記の様な構成を実施済みであるものとします。
1. 動的クラスターを作成する
まずはメンバーの増減を試すための動的クラスターを作成します。
WebLogic Server管理コンソールにアクセスし、[チェンジセンター] の [ロックして編集] をクリックします。
[クラスターのサマリー] で、[新規] > [動的クラスタ] の順にクリックします。
[新規動的クラスタの作成] で、以下のように値を設定し、[次] をクリックします。
- 名前: DynamicCluster0(任意の名前でよい)
- メッセージング・モード: ユニキャスト
- (他はデフォルトのまま)
次の画面(画面名は同じ)で、以下のように値を設定し、[次] をクリックします。
- 動的クラスタ・サイズ: 1
- (他はデフォルトのまま)
次の画面(画面名は同じ)で、以下のように値を設定し、[次] をクリックします。
(今回は管理対象サーバーを1台しか構成しないので、単一のマシン上にクラスターメンバーが追加されるようにします)
- ラジオボックス: すべての動的サーバーに単一マシンを使用する
- 選択したマシン: Machine-wlsmanaged0
次の画面ではデフォルトのまま [次]をクリックします。
次は確認画面です。[終了] をクリックします。
最後に、[チェンジセンター] > [変更のアクティブ化] をクリックして、これまでの作業をサーバーに反映させます。
これで動的クラスターの作成は完了です。
2. 診断モジュールを作成する
動的クラスターの自動スケーリングは、WebLogic診断フレームワークの一機能として提供されています。
診断モジュールを構成して、ポリシーとアクション(12.1.3以前の「監視」、「通知」が改名)を設定しておくことで、自動スケーリングを実現できます。今回の場合、
- ポリシー: 毎日 06:00(06:05) に
- アクション: スケールアップ(ダウン)を実行する
という設定をします。
2-1. 診断モジュールを作成する
まずは診断モジュールを構成します。
まずはWebLogic Server管理コンソールにアクセスし、[チェンジセンター] の [ロックして編集] をクリックします。
次に、[ドメイン構造] の [診断] > [診断モジュール] を選択し、[診断モジュールのサマリー] で、[新規] をクリックします。
[診断システム・モジュールの作成] で、以下のように値を設定し、[OK] をクリックします。
- 名前: CalendarBasedScalingModule
- 説明: カレンダーベースで、動的クラスターを自動スケーリングします。(任意の説明書きでよい)
- (他はデフォルトのまま)
2-2. 診断モジュールにポリシー/アクションを設定する
続いて、診断モジュールにポリシーを設定します。ポリシーの設定を行う操作の中で、アクションの作成も併せて行います。
まずはスケールアップのポリシー/アクションからです。
今回は毎日 06:00(UTC) に、クラスターメンバーが1つ追加されるようにします(タイムゾーンがUTCなのは、私が利用している環境の都合です)。
[ドメイン構造] の [診断] > [診断モジュール] を選択し、診断システムモジュールの一覧から、"CalendarBasedScalingModule" をクリックします。
[CalendarBasedScalingModuleの設定] で、[構成]、[ポリシーとアクション] タブを順に選択します。
更に、画面下方のポリシーの一覧で、[新規] をクリックします。
[ポリシーの作成] で、以下のように値を設定し、[次] をクリックします。
- ポリシー名: 06-00-00 UTC everyday(任意の名前でよい)
- ポリシー・タイプ: カレンダー・ベース
- (他はデフォルトのまま)
次の画面(画面名は同じ)で、以下のように値を設定し、[次] をクリックします。
- 頻度: カスタム
次の画面(画面名は同じ)で、以下のように値を設定し、[次] をクリックします。
次の画面(画面名は同じ)ではデフォルトのまま [次]をクリックします。
次の画面(画面名は同じ)では、ラジオボタンで [アクションのスケール・アップ] を選択し、[新規スケール・アップ・アクション] をクリックします。
次の画面(画面名は同じ)では、アクションの作成をおこないます。以下のように値を設定し、[次] をクリックします。
- アクション名: ScaleUp(任意の名前でよい)
- (他はデフォルトのまま)
次の画面(画面名は同じ)は、まだアクションの作成の続きです。以下のように値を設定し、[終了] をクリックします。
ポリシーの作成に戻ります。以下のように値を設定し、[終了] をクリックします。ここまでで、スケールアップのポリシー/アクションの作成は完了です。
- スケール・アップ・アクションの選択: ScaleUp(作成したアクションの名前に合わせる)
- (他はデフォルトのまま)
スケールダウンのポリシー/アクションも同様に作成します。
毎日 06:05(UTC) に、クラスターメンバーが1つ削減されるようにします。
スケールアップと要領は同じなので画面イメージは省略しますが、以下の様に値を設定するようにします。
- [ポリシーの作成] 画面 1枚目
- ポリシー名: 06-05-00 UTC everyday(任意の名前でよい)
- ポリシー・タイプ: カレンダー・ベース
- (他はデフォルトのまま)
- [ポリシーの作成] 画面 2枚目
- 頻度: カスタム
- [ポリシーの作成] 画面 3枚目
- [ポリシーの作成] 画面 4枚目
- (デフォルトのまま)
- [ポリシーの作成] 画面 5枚目
- ラジオボタン: アクションのスケールダウン
- スケール・ダウン・アクションの選択: ScaleDown(先に[新規スケール・ダウン・アクション]をクリックして、同名のアクションを作っておきます)
- [ポリシーの作成] 画面のアクションの作成部分 1枚目
- アクション名: ScaleUp(任意の名前でよい)
- (他はデフォルトのまま)
- [ポリシーの作成] 画面のアクションの作成部分 2枚目
これでポリシー/アクションの作成は完了です。
念のため、ポリシー、アクションが作成されているか確認してみます。
[ドメイン構造] の [診断] > [診断モジュール] を選択し、診断システムモジュールの一覧から、"CalendarBasedScalingModule" をクリックします。
更に、[CalendarBasedScalingModuleの設定] で、[構成]、[ポリシーとアクション] タブを順に選択します。
画面下部のポリシーの一覧に、以下のように2つのポリシーが表示されます。
[アクション] タブをクリックしてアクションの一覧に切り替えると、以下のように2つのアクションが表示されます。
2-3. 診断モジュールのターゲットを設定する
[ドメイン構造] の [診断] > [診断モジュール] を選択し、診断システムモジュールの一覧から、"CalendarBasedScalingModule" をクリックします。
更に、[CalendarBasedScalingModuleの設定] で、[ターゲット] タブを選択します。
[AdminServer] のチェックボックスをオンにして、[保存] をクリックします。
ここまでで、診断モジュールの全ての設定が完了しました。最後に、[チェンジセンター] > [変更のアクティブ化] をクリックして、これまでの作業をサーバーに反映させます。
後は動作確認を残すのみ…。
動作確認
いよいよ動作確認です。
動的クラスターを作成した際に、それに属するサーバーが1つ構成されていますので、予め起動しておきます。
[ドメイン構造] の [環境] > [サーバー] を選択し、[サーバーのサマリー] 画面で [制御] タブをクリックします。 "DynamicCluster0-1" というサーバーができているので、これに対応するチェックボックスをONにして、[起動] をクリックします。
続く確認画面で、[はい] を選択すると、サーバーの起動は完了です。
後は、メトリックブラウザでクラスターメンバー数のモニタリングを設定しつつ、時間が来るのを待ちます…。
結果はこちら。
あれ、06:00にスケールアップはできていますが、06:05になってもメンバーが減らない…。
管理サーバーのログを確認して見たところ、以下の様なエラーが記録されていました。どうやら、スケールアップ後にもう少し時間を置かないと、続くスケーリングは失敗するようです。
####
※このあと設定を変えて再挑戦し、期待通り動作することを確認しております。
以上、動的クラスターの自動スケーリング機能の検証でした。