6 ポリシーベースのスケーリング
- ポリシーベースのスケーリングとは
ポリシーベースのスケーリングは、ポリシーおよび関連付けられたアクションに基づき、WebLogic診断フレームワーク(WLDF)のポリシーおよびアクション・コンポーネントを活用します。ポリシーは、動的クラスタでスケーリング操作が発生する条件を設定し、その条件が満たされると、スケーリング・アクションがスケーリング操作を実行します。 - スマート・ルールの導入
スマート・ルールは、一連の設定可能パラメータを持ち、その設定可能パラメータの値を指定することで複合ポリシー式を作成できるようにする、事前パッケージ済のファンクションです。 - ポリシーベースのスケーリング例
wls:HighThroughput()
およびwls:LowThroughput()
スマート・ルールを使用して高負荷時に動的クラスタをスケール・アップし、要求が減少したら動的クラスタをスケール・ダウンするポリシーを作成できます。
ポリシーベースのスケーリングとは
WLDFには2つのエラスティック・アクション、スケール・アップおよびスケール・ダウンが用意されており、スケーリング操作を実行するポリシーに割り当てることができます。スケール・アップおよびスケール・ダウン・アクションの詳細は、「エラスティック・アクション」を参照してください。1つのスケーリング・アクションのみ、指定のポリシーに割り当てることができます。
たとえば、例6-1は、起動するとスケール・アップ・アクションを実行するポリシーを作成、構成するWLSTコマンドを示しています。次の点に注意してください。
-
スケール・アップ・アクション
scaleUp
が作成されます。このアクションは、動的クラスタDynamicCluster
を、サーバー・インスタンス1つのみスケール・アップするように構成されます。 -
highMark
という名前のポリシーが、10秒ごとに評価されるように構成されます。 -
ポリシーが起動される、つまり
true
と評価されると、対応するスケール・アップ・アクションが実行されます。
同様に、例6-2は、起動するとスケール・ダウン・アクションを実行するポリシーの構成を示しています。次の点に注意してください。
-
スケール・ダウン・アクション
scaleDown
が作成されます。このアクションは、動的クラスタDynamicCluster
を、サーバー・インスタンス1つのみスケール・ダウンするように構成されます。 -
LowMark
という名前のポリシーが、10秒ごとに評価されるように構成されます。 -
ポリシーが起動される、つまり
true
と評価されると、対応するスケール・ダウン・アクションが実行されます。
例6-1 動的クラスタをスケール・アップするポリシーの作成
scaleUp=wn.lookupScaleUpAction('scaleUp') if scaleUp == None: print "Creating scale up action" scaleUp=wn.createScaleUpAction('scaleUp') scaleUp.setScalingSize(1) scaleUp.setClusterName(DynamicCluster) high=wn.createWatch('highMark') high.setExpressionLanguage('EL') high.getSchedule().setMinute('*') high.getSchedule().setSecond('*/10') high.getRuleType() high.setAlarmType('AutomaticReset') high.setAlarmResetPeriod(150000) high.setRuleExpression("wls:ClusterHighThroughput('"+DynamicCluster+"', '10s', '30s', 250, 60)") high.addNotification(scaleUp) high.setEnabled(true)
例6-2 動的クラスタをスケール・ダウンするポリシーの作成
scaleDown=wn.lookupScaleDownAction('scaleDown') if scaleDown == None: print "Creating scale down action" scaleDown=wn.createScaleDownAction('scaleDown') scaleDown.setScalingSize(1) scaleDown.setClusterName(DynamicCluster) low=wn.createWatch('lowMark') low.setExpressionLanguage('EL') low.getSchedule().setMinute('*') low.getSchedule().setSecond('*/10') low.getRuleType() low.setAlarmType('AutomaticReset') low.setAlarmResetPeriod(60000) low.setRuleExpression("wls:ClusterLowThroughput('"+DynamicCluster+"', '10s', '60s', 50, 75)") low.addNotification(scaleDown) low.setEnabled(true)
ノート:
動的クラスタの自動拡張度を構成するには、スケーリング・ポリシーとそれに対応するエラスティック・アクションを定義したドメイン・スコープの診断システム・モジュールを作成し、その診断モジュールのターゲットを管理サーバーに設定する必要があります。
親トピック: ポリシーベースのスケーリング
スマート・ルールの導入
スマート・ルールは、一連の設定可能パラメータを持ち、その設定可能パラメータの値を指定することで複合ポリシー式を作成できるようにする、事前パッケージ済のファンクションです。
スマート・ルールは、単独で、または複合ポリシー式を作成するために他の述語とともに、ポリシー式内で述語として使用できます。スマート・ルールのポリシー式は、Java Expression Language (EL)を使用して指定されます。『Oracle WebLogic Server診断フレームワークの構成と使用』のスマート・ルールベースのポリシーの構成に関する項を参照してください。
ポリシーベースのスケーリングでは、スマート・ルールが使用できます。「ポリシーベースのスケーリング例」では、スマート・ルールのwls:ClusterHighThroughput()
およびwls:ClusterLowThroughput()
をルール式で使用するポリシーの使用方法を説明します。これら2つのスマート・ルールは、例6-1および例6-2でも示しています。
-
例6-1は、
wls:ClusterHighThroughput()
スマート・ルールを示しています。このスマート・ルールは、各管理対象サーバーのThreadPoolRuntimeMBean.Throughput
属性の平均値によって示される、クラスタにおける平均スループットが増大しているかどうかを測定します。例に示されているように、このスマート・ルールは、動的クラスタ
DynamicCluster
内の少なくとも60パーセントのサーバーにおいて、10秒間隔で収集した過去30秒の平均Throughput
値が250以上の場合に起動されます(つまりtrue
と評価されます)。このスマート・ルールが起動されると、スケール・アップ・アクションscaleUp
が実行され、クラスタでサーバー・インスタンスが起動されます。 -
例6-2は、
wls:ClusterLowThroughput()
スマート・ルールを示しています。このスマート・ルールは、各管理対象サーバーのThreadPoolRuntimeMBean.Throughput
属性の平均値によって示される、クラスタにおける平均スループットが減少しているかどうかを測定します。例に示されているように、このスマート・ルールは、動的クラスタ
DynamicCluster
内の少なくとも75パーセントのサーバーにおいて、10秒間隔で収集した過去60秒の平均Throughput
値が50未満の場合に起動されます(つまりtrue
と評価されます)。このスマート・ルールが起動されると、スケール・ダウン・アクションscaleDown
が実行され、クラスタでサーバー・インスタンスが停止されます。
スマート・ルールベースのポリシーの作成および構成の詳細は、次を参照してください。
-
Fusion Middleware Controlコンソールを使用して、『Fusion Middleware ControlによるOracle WebLogic Serverの管理』のポリシーおよびアクションの作成と構成に関する項を参照してください。
-
『Oracle WebLogic Server診断フレームワークの構成と使用』のスマート・ルール・リファレンスに関する項を参照してください。
親トピック: ポリシーベースのスケーリング
ポリシーベースのスケーリング例
wls:HighThroughput()
およびwls:LowThroughput()
スマート・ルールを使用して高負荷時に動的クラスタをスケール・アップし、要求が減少したら動的クラスタをスケール・ダウンするポリシーを作成できます。
次のトピックでは、動的クラスタのポリシーベースのスケーリングを示すデモを実行するためのタスクについて説明します。
親トピック: ポリシーベースのスケーリング
前提条件
正常にこの例を実行するには、先に環境を準備して、この例で使用する必要なファイルをダウンロードします。
この項では、次のタスクを取り上げます。
必要なソフトウェアのインストール
この例を実行するには、次のソフトウェアをダウンロードしてインストールします。
-
Oracle WebLogic Server—手順および詳細は、『Oracle WebLogic ServerおよびCoherenceのインストールと構成』の「Oracle WebLogic ServerとCoherenceのソフトウェアのインストール」を参照してください。
ノート:
この例のためにWebLogic Serverをインストールして使用するには、有効なJDK 8がある必要があります。『Oracle WebLogic Serverの新機能』のJDK 8認定に関する項を参照してください。
-
Apache HTTPサーバー - サポートされているApache HTTPサーバーのインストール環境があることを確認します。https://www.oracle.com/technetwork/middleware/ias/downloads/fusion-certification-100350.htmlを参照してください。
-
WebLogic Server対応のApache HTTPサーバー2.2.xプラグインは、My Oracle Support (http://support.oracle.com)およびSoftware Delivery Cloud (http://edelivery.oracle.com)のWebサイトから、必要なバイナリ・ファイルおよびヘルパー・ファイルを含むzipファイルとしてダウンロードできます。Apache HTTPサーバーのプラグインを構成する方法の詳細は、Apache HTTPサーバー・プラグインの構成に関する項を参照してください。
-
Apache JMeter - Apache JMeterは、
http://jmeter.apache.org/download_jmeter.cgi
から、説明を表示してダウンロードおよびインストールできます。
親トピック: 前提条件
必要なファイルのダウンロードと解凍
拡張度デモのJARファイルは、WebLogic Serverブログの記事動的クラスタの拡張度からダウンロードできます。
この例で使用する拡張度JARから、次のファイルを解凍します。
ノート:
同じディレクトリに、次のファイルをすべて保存します。この例では、このディレクトリをDEMO_HOME
と呼びます。
-
create-domain
スクリプト - このスクリプトによってこの例のドメインが作成されます。 -
Elasticity5MinuteDemo.jmx
- この例で使用するJMeterテスト・プラン。 -
Elasticity1HourDemo.jmx
- オプションの、より長いJMeterテスト・プラン。
親トピック: 前提条件
環境の設定
WebLogic ServerをORACLE_HOME
ディレクトリにインストールしたら、setWLSEnv
スクリプト・コマンドを実行して、この例に環境変数を設定します。
-
コマンド・ウィンドウを開きます。
ノート:
Windowsシステム上でこのデモを実行する場合、管理者権限が必要になる場合があります。その場合は、次のとおりにコマンド・ウィンドウを開きます。
-
「起動」をクリックします。
-
コマンド・プロンプトを右クリックして「管理者として実行」を選択します。
「スタート」メニューに「コマンド プロンプト」がない場合、「検索」フィールドに
「コマンド」
と入力し、「コマンド プロンプト」を右クリックします。 -
求められたら、管理者の資格証明を入力します。
-
-
コマンド・ウィンドウで、
ORACLE_HOME
/wlserver/server/bin
ディレクトリに移動します。 -
setWLSEnv
スクリプトを実行します。たとえば:Windows:
ORACLE_HOME\wlserver\server\bin> setWLSEnv.cmd
Unix:
prompt> sh setWLSEnv.sh
親トピック: ポリシーベースのスケーリング例
ドメインとそのリソースの作成
create-domain
スクリプトを使用してドメインを作成すると、この例のために、次のようにドメインが設定されます。
-
elasticity_domain
ドメインとディレクトリを作成します。 -
動的クラスタ
DynamicCluster
と4つの動的サーバーDynamicCluster-1
、DynamicCluster-2
、DynamicCluster-3
およびDynamicCluster-4
を作成し、構成します。 -
スマート・ルールベースのポリシー
highMark
とlowMark
、およびエラスティック・アクションscaleDown
とscaleUp
を作成して構成します。
ドメインを作成するには:
親トピック: ポリシーベースのスケーリング例
Apache Webサーバーの構成と起動
Apache HTTPサーバーおよびApache HTTPサーバーのプラグインのインストール後、次の詳細を使用してhttpd.conf
ファイルを構成してください。
LoadModule weblogic_module /home/myhome/weblogic-plugins/lib/mod_wl.so
また、WebLogicクラスタと、そのクラスタ内の管理対象サーバーのすべてのポートを指定します。かわりにクラスタのDNS名を指定することもできます。たとえば:
<IfModule mod_weblogic.c>
WebLogicCluster localhost:8001,localhost:8002
</IfModule>
<Location>
SetHandler weblogic-handler
</Location>
Apache Webサーバーの起動
Apacheのbin
ディレクトリで次のコマンドを使用して、Apache Webサーバーを起動します。
httpd.exe
sudo systemctl start httpd
親トピック: ポリシーベースのスケーリング例
動的サーバーの構成とアクティビティの表示
start-servers
スクリプトを実行すると、次のWebLogic Serverインスタンスが起動します。
-
管理サーバー
-
DynamicCluster
という名前が付いた、動的クラスタにある次の2つのサーバー・インスタンス:-
DynamicCluster-1
-
DynamicCluster-2
-
WebLogicリモート・コンソールまたはFusion Middleware Controlを使用して、DynamicCluster
の構成と、クラスタ内で実行中デモとして現在実行中のサーバー・インスタンスの数を表示できます。
たとえば、WebLogicリモート・コンソールにDynamicCluster
を表示するには、次のようにします。
『Oracle WebLogic Serverサーバーの起動と停止の管理』のサーバーの起動と停止に関する項を参照してください。
親トピック: ポリシーベースのスケーリング例
拡張度デモの再実行と停止
JMeter GUIから拡張度デモを再実行することも、次のようにstop-serversスクリプトを実行して、デモと実行中のすべてのサーバー・インスタンスを停止することもできます。
Windows:
DEMO_HOME> stop-servers.cmd
Unix:
DEMO_HOME> sh stop-servers.sh
親トピック: ポリシーベースのスケーリング例