プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebLogic Server動的クラスタの拡張度の構成
12c (12.2.1.3.0)
E90326-03
目次へ移動
目次

前
次

7 ポリシーベースのスケーリング

WebLogic Serverでは、ドメイン・スコープの診断システム・モジュールで構成されているポリシーによって監視される要求の変化またはその他の条件に応じて、動的クラスタで自動的にスケーリング操作を実行できる、ポリシーベースのスケーリングをサポートしています。次の項では、WebLogic Serverでのポリシー・ベースのスケーリングについて説明し、スマート・ルールを使用してクラスタの平均スループットを追跡するポリシーベースのスケーリングの例を示します。

ポリシーベースのスケーリングとは

ポリシーベースのスケーリングは、ポリシーおよび関連付けられたアクションに基づき、WebLogic診断フレームワーク(WLDF)のポリシーおよびアクション・コンポーネントを活用します。ポリシーは、動的クラスタでスケーリング操作が発生する条件を設定し、その条件が満たされると、スケーリング・アクションがスケーリング操作を実行します。WLDFのポリシーおよびアクション・コンポーネントの詳細は、Oracle WebLogic Server診断フレームワークの構成と使用のポリシーとアクションの構成を参照してください。

WLDFには2つのエラスティック・アクション、スケール・アップおよびスケール・ダウンが用意されており、スケーリング操作を実行するポリシーに割り当てることができます。スケール・アップおよびスケール・ダウン・アクションの詳細は、「エラスティック・アクション」を参照してください。1つのスケーリング・アクションのみ、指定のポリシーに割り当てることができます。

たとえば、例7-1は、起動するとスケール・アップ・アクションを実行するポリシーを作成、構成するWLSTコマンドを示しています。次の点に注意してください。

  • スケール・アップ・アクションscaleUpが作成されます。このアクションは、動的クラスタDynamicClusterを、サーバー・インスタンス1つのみスケール・アップするように構成されます。

  • highMarkという名前のポリシーが、10秒ごとに評価されるように構成されます。

  • ポリシーが起動される、つまりtrueと評価されると、対応するスケール・アップ・アクションが実行されます。

同様に、例7-2は、起動するとスケール・ダウン・アクションを実行するポリシーの構成を示しています。次の点に注意してください。

  • スケール・ダウン・アクションscaleDownが作成されます。このアクションは、動的クラスタDynamicClusterを、サーバー・インスタンス1つのみスケール・ダウンするように構成されます。

  • LowMarkという名前のポリシーが、10秒ごとに評価されるように構成されます。

  • ポリシーが起動される、つまりtrueと評価されると、対応するスケール・ダウン・アクションが実行されます。

例7-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)

例7-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つのスマート・ルールは、例7-1および例7-2でも示しています。

  • 例7-1は、wls:ClusterHighThroughput()スマート・ルールを示しています。このスマート・ルールは、各管理対象サーバーのThreadPoolRuntimeMBean.Throughput属性の平均値によって示される、クラスタにおける平均スループットが増大しているかどうかを測定します。

    例に示されているように、このスマート・ルールは、動的クラスタDynamicCluster内の少なくとも60パーセントのサーバーにおいて、10秒間隔で収集した過去30秒の平均Throughput値が250以上の場合に起動されます(つまりtrueと評価されます)。このスマート・ルールが起動されると、スケール・アップ・アクションscaleUpが実行され、クラスタでサーバー・インスタンスが起動されます。

  • 例7-2は、wls:ClusterLowThroughput()スマート・ルールを示しています。このスマート・ルールは、各管理対象サーバーのThreadPoolRuntimeMBean.Throughput属性の平均値によって示される、クラスタにおける平均スループットが減少しているかどうかを測定します。

    例に示されているように、このスマート・ルールは、動的クラスタDynamicCluster内の少なくとも75パーセントのサーバーにおいて、10秒間隔で収集した過去60秒の平均Throughput値が50未満の場合に起動されます(つまりtrueと評価されます)。このスマート・ルールが起動されると、スケール・ダウン・アクションscaleDownが実行され、クラスタでサーバー・インスタンスが停止されます。

WebLogic Server管理コンソールおよびFusion Middleware Controlを使用したスマート・ルールベースのポリシーの作成および構成の詳細は、次の項を参照してください。

『Oracle WebLogic Server診断フレームワークの構成と使用』のスマート・ルール・リファレンスに関する項を参照してください。

ポリシーベースのスケーリング例

wls:HighThroughput()およびwls:LowThroughput()スマート・ルールを使用して高負荷時に動的クラスタをスケール・アップし、要求が減少したら動的クラスタをスケール・ダウンするポリシーを作成できます。

注意:

この項の例では、WebLogic Serverおよび同じ場所に配置されたOracle Traffic Director 12cをWindows上で使用します。

前提条件

正常にこの例を実行するには、先に環境を準備して、この例で使用する必要なファイルをダウンロードします。

この項では、次のタスクを取り上げます。

必要なソフトウェアのインストール

この例を実行するには、次のソフトウェアをダウンロードしてインストールします。

  • Oracle WebLogic Server: 手順および詳細は、『Oracle WebLogic ServerおよびCoherenceのインストールと構成』の「Oracle WebLogic ServerとCoherenceのソフトウェアのインストール」を参照してください。

    注意:

    この例のためにWebLogic Serverをインストールして使用するには、有効なJDK 8がある必要があります。『Oracle WebLogic Server 12.2.1.3.0の新機能』のJDK 8認定に関する項を参照してください。

  • Visual Studio用のMicrosoft Visual C++再頒布可能パッケージ - ドメインを解凍し、Oracle Traffic Directorを起動するには、その前にVisual C++がインストールされている必要があります。ダウンロードは、https://www.microsoft.com/en-us/download/confirmation.aspx?id=40784にあります。

  • Oracle Traffic Director (OTD) - Oracle Traffic Directorのダウンロードは、http://www.oracle.com/technetwork/middleware/otd/downloads/index.htmlから可能です。

    この例は、WebLogic Serverを介して管理される、同じ場所に配置されたOracle Traffic Directorを使用します。WebLogic Serverをインストールしたのと同じORACLE_HOMEディレクトリに、Oracle Traffic Directorをインストールします。インストール時に、「インストール・タイプ」画面で同じ場所に配置されたOTDを選択します。

    『Oracle Traffic Directorの管理』のOracle Traffic Directorの概要に関する項を参照してください。

  • Apache JMeter - Apache JMeterは、http://jmeter.apache.org/download_jmeter.cgiから、説明を表示してダウンロードおよびインストールできます。

必要なファイルのダウンロードと解凍

拡張度デモのJARファイルは、次の場所にあるWebLogic Serverブログの記事動的クラスタの拡張度からダウンロードできます。

https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/f4a5b21d-66fa-4885-92bf-c4e81c06d916/File/540d5bc5bdb70b2b779130ee381cf061/otd_wls_elasticity_demo.zip

この例で使用する拡張度JARから、次のファイルを解凍します。

注意:

同じディレクトリに、次のファイルをすべて保存します。この例では、このディレクトリをDEMO_HOMEと呼びます。

  • collocated_wls_otd_elasticity_domain.jar - この例で使用するドメイン・テンプレート。このドメイン・テンプレートは、必要な動的クラスタ、Oracle Traffic Directorインスタンスおよびポリシーとアクションを作成し、動的クラスタにweb.warアプリケーションをデプロイするなどして、ドメインを設定します。

  • unpack-elasticity-domainスクリプト - このスクリプトは、unpackコマンドを実行してcollocated_wls_otd_elasitcity_domain.jarファイルを解凍し、この例で使用するドメインelasticity_domainを作成します。

    このスクリプトのWindowsバージョンの名前は、unpack-elasticity-domain.cmdです。Unixバージョンは、unpack-elasticity-domain.shです。

  • Elasticity5MinuteDemo.jmx - この例で使用するJMeterテスト・プラン。

  • Elasticity1HourDemo.jmx - オプションの、より長いJMeterテスト・プラン。

環境の設定

WebLogic ServerおよびOracle Traffic Directorを同じORACLE_HOMEディレクトリにインストールしたら、setWLSEnvスクリプト・コマンドを実行して、この例に環境変数を設定します。

  1. コマンド・ウィンドウを開きます。

    注意:

    Windowsシステム上でこのデモを実行する場合、管理者権限が必要になる場合があります。その場合は、次のとおりにコマンド・ウィンドウを開きます。

    1. 「起動」をクリックします。

    2. コマンド・プロンプトを右クリックして「管理者として実行」を選択します。

      「スタート」メニューに「コマンド プロンプト」がない場合、「検索」フィールドに「コマンド」と入力し、「コマンド プロンプト」を右クリックします。

    3. 求められたら、管理者の資格証明を入力します。

  2. コマンド・ウィンドウで、ORACLE_HOME/wlserver/server/binディレクトリに移動します。

  3. setWLSEnvスクリプトを実行します。例:

    Windows:

    ORACLE_HOME\wlserver\server\bin> setWLSEnv.cmd
    

    Unix:

    prompt> sh setWLSEnv.sh

ドメイン・テンプレートの解凍

ドメイン・テンプレートcollocated_wls_otd_elasticity_domain.jarを解凍すると、この例のドメインが、次のように設定されます。

  • elasticity_domainドメインとディレクトリを作成します。

  • 動的クラスタDynamicClusterと4つの動的サーバーDynamicCluster-1DynamicCluster-2DynamicCluster-3およびDynamicCluster-4を作成し、構成します。

  • ラウンドロビン・ロード・バランシングおよび動的検出のために構成された新しいサーバー・プールorigin-server-pool-1などの、Oracle Traffic Directorインスタンスelasticity-otdを作成し、構成します。

  • スマート・ルールベースのポリシーhighMarklowMark、およびエラスティック・アクションscaleDownscaleUpを作成して構成します。

ドメイン・テンプレートを解凍する手順:

  1. デモJARファイルを解凍したディレクトリに移動します。たとえば、Windowsの場合は次のようにします。
    ORACLE_HOME\wlserver\server\bin> cd DEMO_HOME
    
  2. unpack-elasticity-domainスクリプトを実行します。次に例を示します。

    Windows:

    DEMO_HOME> unpack-elasticity-domain.cmd
    

    Unix:

    DEMO_HOME> sh unpack-elasticity-domain.sh
    

『PackおよびUnpackコマンドによるテンプレートとドメインの作成』のunpackコマンドに関する項を参照してください。

管理サーバーとノード・マネージャの起動

ドメイン・テンプレートを解凍したら、次のようにstart-serversスクリプトを実行することによって、管理サーバーおよびノード・マネージャを起動します。

Windows:

DEMO_HOME> start-servers.cmd

Unix:

DEMO_HOME> sh start-servers.sh

start-serversスクリプトも、Oracle Traffic Directorインスタンスを起動しようとします。ただし、初めてこのスクリプトを実行する場合は、次のエラー・メッセージが表示される可能性があります。

Error starting otd_elasticity-otd_localhost, likely already running or not yet configured

Oracle Traffic Directorインスタンスの起動で説明しているように、このメッセージは、Oracle Traffic Directorインスタンスがまだ構成されない場合に生成されます。

注意:

このデモのためのWebLogic Server管理コンソールおよびFusion Middleware Controlは、ポート20001にあります。これらのコンソールに関する情報は、「Oracle Traffic Directorインスタンスの起動」および「動的サーバーの構成とアクティビティの表示」を参照してください。

『Oracle WebLogic Serverサーバーの起動と停止の管理』のサーバーの起動と停止に関する項を参照してください。

『Oracle WebLogic Serverのノード・マネージャの管理』のノード・マネージャの起動と停止に関する項 を参照してください。

Oracle Traffic Directorインスタンスの起動

このデモを始めて実行する場合は、create-otdスクリプトを実行する必要があります。その後は、管理サーバーとノード・マネージャの起動で説明しているように、サーバー・インスタンスを起動するとOracle Traffic Directorが起動されます。

create-otdスクリプトを実行するには、管理サーバーとノード・マネージャを起動したコマンド・ウィンドウで、次のコマンドを入力します。

Windows:

DEMO_HOME> create-otd.cmd

Unix:

DEMO_HOME> sh create-otd.sh

このスクリプトでは次のことを行います。

  • ポート20009に、新しいOracle Traffic Directorインスタンスelasticity-otdを作成します。

  • 新しいサーバー・プールorigin-server-pool-1を作成します。

  • ラウンドロビン・ロード・バランシングおよび動的検出のためのサーバー・プールを構成します。

『Oracle Traffic Directorの管理』のOracle Traffic Directorインスタンスの起動、停止および再起動に関する項を参照してください。

Fusion Middleware Controlを使用してOracle Traffic Directorインスタンスを表示する手順:

  1. ブラウザのアドレス・バーに次のURLを入力して、Fusion Middleware Controlを起動します。
    localhost:200001/em
    
  2. unpack-elasticity-domainスクリプトで提供された管理者の資格証明の入力によるログイン。
  3. 「WebLogicドメイン」メニューから、「管理」→「OTD構成」を選択します。
  4. 「Oracle Traffic Director構成」表で、elasticity-otdを選択します。

    Fusion Middleware Controlコンソールに表示されるメインのOracle Traffic Directory監視ページには、サーバー・アクティビティに関する統計が表示されます。

ブラウザにURLhttp://localhost:20009/web/HelloServletを入力することで、Oracle Traffic Directorインスタンスをテストすることもできます。ページを数回リフレッシュして、ロード・バランシングが機能していることを確認します。ページ上の番号表示が変わるはずです。

WLSTを使用してインスタンスの状態を確認し、確実に実行中であるようにするには、次のコマンドを入力します。

state("elasticity-otd")

動的サーバーの構成とアクティビティの表示

start-serversスクリプトを実行すると、管理サーバーとノード・マネージャの起動で説明されているように、次のWebLogic Serverインスタンスが起動します。

  • 管理サーバー

  • DynamicClusterという名前が付いた、動的クラスタにある次の2つのサーバー・インスタンス:

    • DynamicCluster-1

    • DynamicCluster-2

WebLogic Server管理コンソールかFusion Middleware Controlを使用して、DynamicClusterの構成と、クラスタ内で実行中デモとして現在実行中のサーバー・インスタンスの数を表示できます。

たとえば、WebLogic Server管理コンソールにDynamicClusterを表示するには、次のようにします。

  1. ブラウザのアドレス・バーに次のURLを入力して、WebLogic Server管理コンソールを起動します。
    localhost:20001/console
    
  2. unpack-elasticity-domainスクリプトで提供された管理者の資格証明の入力によるログイン。
  3. コンソールのホーム・ページで、「サーバー」をクリックします。

    「サーバーのサマリー」ページに、現在実行中および停止中のサーバーがリストされます。このページは、サーバー・インスタンスの状態を表示するデモの実行として参照できます。

『Oracle WebLogic Serverサーバーの起動と停止の管理』のサーバーの起動と停止に関する項を参照してください。

JMeterを使用したデモの実行

JMeterからテスト・プランを実行する手順:

  1. コマンド・プロンプトを開いて、インストールされているJMeterのbinディレクトリに移動します。たとえば、C:\JMeter\apache-jmeter-2.13\binです。
  2. 次のコマンドを入力して、JMeterをGUIモードで起動します。
    jmeter.bat
    
  3. JMeterコンソールで、「ファイル」→「開く」を選択して、Elasticity5MinuteDemo.jmxを選択します。
  4. 「オプション」メニューから、「ログ・ビューア」が選択されていることを確認します。
  5. 左のナビゲーション・ペインで、活用度Pingサーブレット・ドライバが選択されていることを確認します(図7-1参照)。

    図7-1 JMeterテスト・ナビゲーション・ペイン

    図7-1の説明が続きます
    「図7-1 JMeterテスト・ナビゲーション・ペイン」の説明
  6. 「Run」→「Start」を選択します。

監視ダッシュボードを使用したスケーリング操作の監視

JMeterでテスト・プランを起動したら、WebLogic Server管理コンソールの管理ダッシュボードを使用して、JMeterテストにより生成されるサーバー・アクティビティを表示できます。実行中のサーバー・インスタンス数が負荷に応じて4までランプアップすることを確認できます。シナリオが完了すると、追加のインスタンスは、最小実行サーバー・インスタンス数の2つに達するまでスケール・ダウンされます。このシナリオ全体は、5分間続きます。

モニタリング・ダッシュボードにアクセスする手順:

  1. 「動的サーバーの構成とアクティビティの表示」に説明されているように、まだ実行されていない場合、WebLogic Server管理コンソールを起動します。
  2. 「チャートとグラフ」の下で、「監視ダッシュボード」をクリックします。
  3. 監視ダッシュボードで、起動ボタンをクリックします(図7-2参照)。

    図7-2 監視ダッシュボードの起動ボタン

    図7-2の説明が続きます
    「図7-2 監視ダッシュボードの起動ボタン」の説明
  4. JMeterが、シミュレーションされた動的クラスタでのクライアント呼出し量をランプアップすると、スケーリング・アクションを実行するスケーリング・ポリシーが起動されます。

    新しいサーバー・インスタンスが起動される瞬間の、現在実行中のサーバー・インスタンスのスループットに注目してください。図7-3に、出力例を示します。取得するグラフは、マシンのパフォーマンス特性に応じて異なる場合があります。

    図7-3 動的サーバーのスケーリング・アクティビティ

    図7-3の説明が続きます
    「図7-3 動的サーバーのスケーリング・アクティビティ」の説明

図7-3で、次に注目してください。

  • 上部の4つのグラフに、管理対象サーバー・インスタンスDynamicCluster-1DynamicCluster-2DynamicCluster-3およびDynamicCluster-4に関するスループットが表示されています。

  • 上2つのグラフに表示されているサーバー・インスタンスDynamicCluster-1およびDynamicCluster-2は、スループットのスパイクが2:42:00頃に始まっています。

  • DynamicCluster-3のグラフは、サーバー・インスタンスDynamicCluster-1およびDynamicCluster-2でスループットのスパイクが発生したときにこの第3のサーバーが起動されたことを示しています。

  • 下部のグラフは、クラスタ内のアクティブな管理対象サーバーの数(ClusterRuntimeMBeanインスタンスのAliveServerCount属性の値)を示しています。このグラフは、第3および第4のサーバー・インスタンスがいつ頃に起動されたかを示しています。

  • 第3のサーバー・インスタンスDynamicCluster-3は、2:42:00と2:43:30の間に起動されました。

  • 第4のサーバー・インスタンスDynamicCluster-4は、最初の3つのサーバー・インスタンスにおけるスループットの増加と軌を一にして、2:46:00の直後に起動されたことに注目してください。

  • 新しいサーバー・インスタンスが起動されると、他のサーバー・インスタンス上のスループットが、それに対応して低下することに注目してください。

拡張度デモの再実行と停止

JMeter GUIから拡張度デモを再実行することも、次のようにstop-serversスクリプトを実行して、デモとすべてのサーバー・インスタンス(Oracle Traffic Directorなど)を停止することもできます。

Windows:

DEMO_HOME> stop-servers.cmd

Unix:

DEMO_HOME> sh stop-servers.sh