[WLS, FMW] Elasticity for Dynamic Clusters

原文はこちら。
https://blogs.oracle.com/WebLogicServer/entry/elasticity_for_dynamic_clusters

Introducing Elasticity for Dynamic Clusters

WebLogic Server 12.1.2で動的クラスタのコンセプトを導入しました。このコンセプトでは管理対象サーバの構成が単一の共有テンプレートから離れたため、クラスタ構成の管理対象サーバの構成が非常にシンプルになり、動的にサーバをマシンリソースに割り当てることができ、最小限の構成でより一層のリソースの活用が可能になっています。
Oracle WebLogic Server 12.1.2(日本語)
http://docs.oracle.com/cd/E50629_01/wls/index.html
Oracle WebLogic Server 12.1.2 (英語)
http://docs.oracle.com/middleware/1212/wls/index.html
Oracle® Fusion Middleware  Administering Clusters for Oracle WebLogic Server  12c (12.2.1)
Dynamic Clusters
http://docs.oracle.com/middleware/1221/wls/CLUST/dynamic_clusters.htm#CLUST678
WebLogic Server 12.2.1では、動的クラスタのコンセプトに対し、Elasticity(弾力性)を導入して、ユーザーが識別した条件に基づいてスケールアップ、スケールダウンすることを可能にしています。特定の日時や様々なサーバメトリックからわかるパフォーマンスを基にして、クラスタのスケールを(管理者が対話的に)オンデマンドで実現します。

このエントリでは、WebLogic Server 12.2.1.0のElastic Dynamic Clustersという、WebLogic Serverが持つオンプレミスの柔軟性に対するパズルの次のピースの様々な側面を見ていきます。続くエントリで、動的クラスタを使った弾力性を達成するための様々な方法の詳細の検証をご紹介します。
Oracle WebLogic Server 12.2.1
http://docs.oracle.com/middleware/1221/wls/index.html

The WebLogic Server Elasticity Framework

下図はWebLogic Serverのための柔軟性をもたらすフレームワークへの様々な部分を示しています。

Elastic Services FrameworkはWebLogicドメインの管理サーバにある一連のサービス群であり、以下のもので構成されています。
OTDとのより緊密な連携が12.2.1で可能ですが、OTDサーバプールがDynamic Discoveryを有効にしている場合、OTDは必要に応じてクラスタ内の利用可能なサーバ群に対応することにご注意ください。

Configuring Elasticity for Dynamic Clusters

手始めに、新たな動的クラスタを構成し、既存の動的クラスタを調整して、DynamicServerMBeanに追加された新しいプロパティを活用して、クラスタが弾力境界を設定し、クラスタの挙動を制御します。
Oracle® Fusion Middleware Configuring Elasticity in Dynamic Clusters for Oracle WebLogic Server 12c (12.2.1)
Configuring Dynamic Clusters
http://docs.oracle.com/middleware/1221/wls/ELAST/requirements.htm#ELAST530
構成できる新しいプロパティは以下のようなものがあります。
  • 開始時の動的クラスタサイズ
  • クラスタ伸縮時のクラスタサイズ最小・最大値
  • スケールイベント間に必要な「クールオフ」期間
クラスタ内の管理対象サーバのシャットダウンを管理する方法に関する、その他いろいろなプロパティがありますが、上記の設定は(何個のインスタンスをスケールアップ、スケールダウンするか、によって)クラスタの境界と、どのぐらいの頻度でスケールイベントが発生しうるかを管理・制御します。 Elastic Services Frameworkを使うと、動的クラスタが指定された最大インスタンス数まで拡張、最小インスタンス数まで縮小させることができます。

クールオフ期間とは、スケールイベントがあまりにも頻繁に発生しないように設計された安全のための機構です。スケールイベントが完了し、その効果が動的クラスタのパフォーマンス特性でわかる時間に設定しておくべきです。

言うまでもありませんが、こうした設定の値は注意して選択し、クラスタキャパシティの計画に合わせるべきです。

Scaling Dynamic Clusters

動的クラスタのスケールは以下の手段で実施できます。
  • オンデマンド(WebLogic Server管理コンソールやWLSTの利用)
  • WLDFポリシーやアクションを活用する、自動化されたカレンダーベースのスケジュールを利用
  • パフォーマンスメトリックに基づいた自動化されたWLDFポリシーの活用

On-Demand Scaling

WebLogic管理者は、必要に応じてオンデマンドで動的クラスタの拡張・縮小させることができます。

コンソールの場合、管理者は単純に所望のクラスタで稼働するサーバの総数を指定するだけです。コンソールはElastic Services Frameworkと対話し、動的クラスタの境界内で、設定に従いクラスタを伸縮させます。

Automated Scaling


動的クラスタのオンデマンドでの拡張・縮小に加え、WebLogic Serverの管理者は、WLDFのポリシーおよびアクションという機能を使い、自動化ポリシーを構成することができます(以前のリリースでは、Watch & Notifications Framework(監視および通知)として知られていました)。
Oracle® Fusion Middleware Configuring and Using the Diagnostics Framework for Oracle WebLogic Server 12c (12.2.1)
Configuring Policies and Actions
http://docs.oracle.com/middleware/1221/wls/WLDFC/config_watch_notif.htm#WLDFC188
通常は、スケール自動化はWLDFポリシーのペア(一つはクラスタのスケールアップ、もう一つはスケールダウン)から構成されています。各スケールポリシーは以下の要素から構成されています。
  • (オプション)(以前の”Watch Rule"(監視ルール))ポリシー式
  • スケジュール
  • スケールのアクション
スケール自動化ポリシーの作成のために、管理者は以下の作業が必要です。
詳細情報は、以下のドキュメントをご覧ください。
Oracle® Fusion Middleware Configuring Elasticity in Dynamic Clusters for Oracle WebLogic Server 12c (12.2.1)
Configuring Policies and Actions
http://docs.oracle.com/middleware/1221/wls/ELAST/requirements.htm#ELAST580

Calendar Based Elastic Policies

12.2.1で、WLDFにcronふうのポリシー評価スケジューリング機能が導入されています。特定スケジュールに従ってMBeanを監視するポリシーは”スケジュールされた”ポリシーと呼びます。
カレンダーベースのポリシーは無条件でスケジュールに従って実行し、関連するアクションを実行するポリシーです。
Oracle® Fusion Middleware Configuring Elasticity in Dynamic Clusters for Oracle WebLogic Server 12c (12.2.1) 
Calendar Based Scaling
http://docs.oracle.com/middleware/1221/wls/ELAST/calendar_based_scaling.htm#ELAST522
スケールアクションと組合せると、動的クラスタを指定された時間に伸張・縮小することができるポリシーを作成できます。
それぞれのスケジュールされたポリシータイプには自身のスケジュールがあります。スケジュールは(一個の評価周期に紐付いていた以前のリリースとは異なり)カレンダー時間で構成され、以下のようなスケジュールパターンを作成することができます(パターンは以下に限定するものではありません)。
  • 定期的なパターンベースの間隔(例:毎時5分、毎分の30秒)
  • 曜日や月日(例:月曜、水曜、金曜の午前8時、毎月15日と30日)
  • 年の特定の日時(例:12月26日午前8時[EST])
そのため、例えば、オンライン小売店舗の場合、クリスマス休暇期間のポリシー・ペアを以下のように構成することができます。
  • 「ブラックフライデー」ポリシー
    • クリスマスのお買い物シーズンの増加する需要に合わせ、必要な個数のインスタンスだけクラスタを伸張する
  • 別のポリシー
    • クリスマスのお買い物シーズンが終わった12月25日には、クラスタを縮小する

Performance-based Elastic Policies

カレンダーベースのスケジューリングに加え、12.2.1のWLDFでは成することができます。サーバ内("server-scoped")もしくはクラスタ内("cluster-scoped")のパフォーマンス条件に基づいてスケールさせるポリシーを作成することができます。
Oracle® Fusion Middleware Configuring Elasticity in Dynamic Clusters for Oracle WebLogic Server 12c (12.2.1) 
Policy Based Scaling
http://docs.oracle.com/middleware/1221/wls/ELAST/policy_based_scaling.htm#ELAST525 
WebLogic Serverでサポートしている様々なランタイムメトリックに基づいてポリシーを作成することができます。WLDFでは、パフォーマンスベースのポリシー作成に役立つ事前パッケージ済み、パラメータ化済みのSmart Rulesと呼ばれる関数群も標準で提供しています。
Oracle® Fusion Middleware Configuring Elasticity in Dynamic Clusters for Oracle WebLogic Server 12c (12.2.1)  
Introducing Smart Rules
http://docs.oracle.com/middleware/1221/wls/ELAST/policy_based_scaling.htm#ELAST535
 クラスタスコープのSmart Ruleを使うと、特定のタイムウィンドウにおけるクラスタ全体でのパフォーマンスメトリックのトレンドを見ることができますし、スケールアクションと組合せた場合、指定した条件に基づいてクラスタの伸張・縮小が可能です。
Smart Ruleで利用可能なメトリックの例には以下のようなものがあります。
  • スループット(秒間リクエスト)
  • JVMのヒープの空き具合(パーセンテージ)
  • プロセスCPU負荷
  • 保留中のユーザーリクエスト
  • アイドルスレッド数
  • スレッドプールのキュー長
さらに、WLDFでは汎用的なSmart Ruleを提供しており、これを使うとご自身のJMXベースのメトリックに基づいたポリシーを作成することができます。Smart Ruleのリファレンスは以下からご覧ください。
Oracle® Fusion Middleware Configuring and Using the Diagnostics Framework for Oracle WebLogic Server 12c (12.2.1)
Smart Rule Reference
http://docs.oracle.com/middleware/1221/wls/WLDFC/appendix_smartrules.htm#WLDFC649
そして、Smart Ruleが要件に合わない場合、自身でポリシー式を作成できます。12.2.1では、WLDFはJava EL 3.0をポリシー式言語として活用しているため、JavaBeanオブジェクトや関数をベースにしたカスタムのポリシー式を作成することができます。しかも標準で提供されるSmart Ruleも含めて作成できます。
JSR-000341 Expression Language 3.0
https://jcp.org/aboutJava/communityprocess/final/jsr341/index.html
The Java™ Tutorials - JavaBeans™
https://docs.oracle.com/javase/tutorial/javabeans/
Oracle® Fusion Middleware Configuring and Using the Diagnostics Framework for Oracle WebLogic Server 12c (12.2.1)
Configuring Policies
http://docs.oracle.com/middleware/1221/wls/WLDFC/config_watches.htm#WLDFC194
WLDF Beans and Functions Referencehttp://docs.oracle.com/middleware/1221/wls/WLDFC/appendix_beans.htm#WLDFC723

Provisioning and Safeguards with Elasticity

スケール中に仮想マシンの追加・削除が必要なのはどういう場合でしょうか。WebLogic Server 12.2.1ではスクリプトインターセプタを使ってスケールイベントに参加することができます。
Oracle® Fusion Middleware Configuring Elasticity in Dynamic Clusters for Oracle WebLogic Server 12c (12.2.1)
Overview of the Script Interceptor
http://docs.oracle.com/middleware/1221/wls/ELAST/script_interceptor.htm#ELAST534 
スクリプトインターセプタはコールアウトフッキングを提供します。その箇所で、クラスタでスケールイベントが発生したタイミングで呼び出されるカスタムのシェルスクリプトもしくはその他の実行ファイルを供給することができます。この方法で、3rdパーティの仮装マシンハイパーバイザと対話するスクリプトを書いてスケールアップの前に仮想マシンを追加したり、スケールアウト後に仮想マシンを除去、再割り当てすることができます。

WebLogic Serverは管理者に対し、データソース・インターセプタ機能を使ってスケールアップイベント時にデータベースキャパシティが過負荷にならないようにする機能も提供します。
Oracle® Fusion Middleware Configuring Elasticity in Dynamic Clusters for Oracle WebLogic Server 12c (12.2.1) 
Configuring the Data Source Interceptor
http://docs.oracle.com/middleware/1221/wls/ELAST/datasource_interceptor.htm#ELAST528 
データソースインターセプタを使うと、最大接続制約をもつデータソースURLやURLパターン群を関連づけることで、許容されているデータベース接続数の最大値を設定することができます。スケールアップのリクエストがクラスタに対して発行された場合、(追加のサーバキャパシティがある場合に)データソースインターセプタはクラスタに対する新しい最大接続要件がどういうものかを確認し、スケールアップの結果データベースの過負荷が引き起こされそうであれば、そのスケールアップリクエストを拒否します。依然としてデータベース活用に対する適切なキャパシティ計画が必要ではありますが、クラスタのスケールアップによってデータベースに過負荷が及ばないことを確実にするために、実行時にいくつかの健全性チェックに配置することができます。

Integration with Oracle Traffic Director

ElasticityフレームワークはWebLogic Server 12.2.1のライフサイクル管理サービスを通じてOTDとも統合されています。
Oracle® Fusion Middleware  Using WebLogic Server Multitenant  12c (12.2.1)
End-to-End Lifecycle Management
http://docs.oracle.com/middleware/1221/wls/WLSMT/concepts.htm#WLSMT725 
スケールイベントが発生すると、Elasticityフレームワークがライフサイクル管理サービスと対話してOTDにスケールイベントを通知し、その結果通知に従いOTDはルーティングテーブルを更新することができます。
例えばスケールアップイベントが発生した場合、OTDは候補サーバに通知し、それに従ってサーバプールを調整します。
スケールダウンの場合、ライフサイクル管理サービスがOTDにどのインスタンスが減るのかを通知するので、OTDは新しいリクエストをスケールダウン対象のサーバへ送信することを抑止し、新たなトラフィックをクラスタ内の残っているインスタンスに流すことで、インスタンスを取り除き、リクエストの消失をせずに正規の手順でシャットダウンすることができます。
OTDとの統合がアクティブであるためには、以下のドキュメントに記載されているように、ライフサイクル管理サービスをドメインに対して有効化する必要があります。
Oracle® Fusion Middleware  Using WebLogic Server Multitenant  12c (12.2.1) 
http://docs.oracle.com/middleware/1221/wls/WLSMT/configuring.htm#WLSMT475

The Big Picture - Tying It All Together

12.2.1のElasticityフレームワークは、オンプレミスの動的クラスタにおけるキャパシティ管理において多大な力と柔軟性を提供します。動的クラスタキャパシティ計画の一環として、Elasticityフレームワークを使って、動的クラスタの最小値、ベースライン、ピーク時のキャパシティ要件を考慮しつつ、そうした設定をクラスタの動的サーバ構成に組み込むことができます。WLDFポリシーとアクションを活用して、既知のキャパシティの増加・減少時、もしくはクラスタのパフォーマンスに基づいて、クラスタを拡張・縮小する自動化ポリシーを作成することができます。
スクリプト・インターセプタを使うと、仮想マシンプールと対話して仮想マシンをスケール中に追加・削除することができます。もしかすると共有VMをニーズに基づいてクラスタ間を異動することさえもできるでしょう。データソースインターセプタを活用し、スケールアップイベントによって影響を受けるデータベースのキャパシティ超過を防ぐこともできます。
さらに、そのように構成すると、Elasticityフレームワークはスケールイベント中にOTDと対話し、動的クラスタでのキャパシティの追加・削除時に新たなセッションや実行中のセッションを確実に安全に管理することができます。
今後のエントリでは、これらの機能の詳細に入っていきます。このエントリは、ユーザーの皆様が動的クラスタで弾力性を実装する上で役に立つ、利用可能な新機能の概要に過ぎません。来る数週間、数ヶ月で詳細の説明とこれらの強力な新機能を活用する例をご紹介する予定にしています。
しばらくの間、OTDと統合したポリシーベーススケールのデモをこちらからダウンロードすることができます。セットアップ、実行方法を記載は以下のドキュメントをご覧ください。
Oracle® Fusion Middleware Configuring Elasticity in Dynamic Clusters for Oracle WebLogic Server 12c (12.2.1)
Policy Based Scaling Example
http://docs.oracle.com/middleware/1221/wls/ELAST/policy_based_scaling.htm#ELAST527
ご質問はコメントやメールで直接お寄せください。しばらくの間、WebLogic Server 12.2.1をダウンロードして探ってみてください。

Resources

Oracle® Fusion Middleware Configuring Elasticity in Dynamic Clusters for Oracle WebLogic Server 12c (12.2.1) 
Policy Based Scaling Example
http://docs.oracle.com/middleware/1221/wls/ELAST/policy_based_scaling.htm#ELAST527
サンプルコード
WebLogic Server 12.2.1 Documentation
http://docs.oracle.com/middleware/1221/wls/index.html
Oracle® Fusion Middleware Configuring Elasticity in Dynamic Clusters for Oracle WebLogic Server 12c (12.2.1)
http://docs.oracle.com/middleware/1221/wls/ELAST/index.html
Oracle® Fusion Middleware Configuring and Using the Diagnostics Framework for Oracle WebLogic Server 12c (12.2.1)
Configuring Policies and Actions
http://docs.oracle.com/middleware/1221/wls/WLDFC/config_watch_notif.htm#WLDFC188
Oracle® Fusion Middleware Administering Clusters for Oracle WebLogic Server 12c (12.2.1)
Dynamic Clusters
http://docs.oracle.com/middleware/1221/wls/CLUST/dynamic_clusters.htm#CLUST678
Oracle® Fusion Middleware Using WebLogic Server Multitenant 12c (12.2.1)
End-to-End Lifecycle Management
http://docs.oracle.com/middleware/1221/wls/WLSMT/concepts.htm#WLSMT725
Configuring WebLogic Server MT: The Big Picture
http://docs.oracle.com/middleware/1221/wls/WLSMT/configuring.htm#WLSMT475
Oracle Traffic Director 12.2.1 Documentation
http://docs.oracle.com/middleware/1221/otd/index.html
Java EL 3.0 Specification - JSR-000341 Expression Language 3.0
https://jcp.org/aboutJava/communityprocess/final/jsr341/index.html

0 件のコメント:

コメントを投稿