プライマリ・コンテンツに移動
Oracle® Clusterware管理およびデプロイメント・ガイド
12c リリース1 (12.1)
B71322-07
目次へ移動
目次
索引へ移動
索引

前
次

ポリシー・セット構成の例

app1app2およびapp3という3つの異なるアプリケーションで使用される4ノード・クラスタがあり、pool1pool2およびpool3という3つのサーバー・プールを作成したと想定します。各アプリケーションは専用のサーバー・プールで動作するように割り当て、app1は2つのサーバーを希望し、app2app3はそれぞれ1つのサーバーを希望するように、サーバー・プールを構成します。サーバー・プールの構成は、次のようになります。

$ crsctl status serverpool pool1 -p
NAME=pool1
IMPORTANCE=0
MIN_SIZE=2
MAX_SIZE=2
SERVER_NAMES=
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:mjk:rwx,pgrp:g900:rwx,other::r--
SERVER_CATEGORY=

$ crsctl status serverpool pool2 -p
NAME=pool2
IMPORTANCE=0
MIN_SIZE=1
MAX_SIZE=1
SERVER_NAMES=
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:mjk:rwx,pgrp:g900:rwx,other::r--
SERVER_CATEGORY=

$ crsctl status serverpool pool3 -p
NAME=pool3
IMPORTANCE=0
MIN_SIZE=1
MAX_SIZE=1
SERVER_NAMES=
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:mjk:rwx,pgrp:g900:rwx,other::r--
SERVER_CATEGORY=

注意:

前述の例に示すcrsctl status serverpoolコマンドは、CRSCTLを使用してサーバー・プールを作成した場合にのみ機能します。

ただし、この構成では、一部のアプリケーションは日、週または月の様々なときにサーバー時間を必要とする事実を考慮しません。たとえば、電子メール・アプリケーションは通常、業務時間中はより多くのリソースを使用して、夜間および週末は使用するリソースは少なくて済みます。

また、app1は、業務時間中は2つのサーバーを必要とし、夜間は1つのみのサーバーを必要とし、週末はサーバーを必要としないと想定します。同時に、app2app3はそれぞれ、業務時間中は1つのサーバーを必要とし、夜間はapp2は2つのサーバーを必要とし、app3は1つのサーバーを必要とします。週末は、app2は1つのサーバーを必要とし、app3は3つのサーバーを必要とします。このシナリオは、クラスタに対して構成する必要がある3つの構成を示しています。

  1. 昼間:

    • app1は2つのサーバーを使用します。
    • app2app3はそれぞれ1つのサーバーを使用します。
  2. 夜間:

    • app1は1つのサーバーを使用します。
    • app2は2つのサーバーを使用します。
    • app3は1つのサーバーを使用します。
  3. 週末:

    • app1は実行されません(0のサーバー)。
    • app2は1つのサーバーを使用します。
    • app3は3つのサーバーを使用します。

ポリシー・セットの作成

これらの前提を考えた場合、crsctl create policysetコマンドを実行して、Defaultという単一ポリシーを使用してポリシー・セットを作成します。これは、crsctl status serverpoolコマンドによって表示される構成を反映します。Defaultポリシーを使用すると、この例で想定されたニーズに対応するために他のポリシーを作成できます。crsctl create policysetコマンドによって、例3-1のようなテキスト・ファイルが作成されます。

例3-1 ポリシー・セットのテキスト・ファイル

SERVER_POOL_NAMES=Free pool1 pool2 pool3
POLICY
  NAME=Default
  SERVERPOOL
    NAME=pool1
    IMPORTANCE=0
    MAX_SIZE=2
    MIN_SIZE=2
    SERVER_CATEGORY=
  SERVERPOOL
    NAME=pool2
    IMPORTANCE=0
    MAX_SIZE=1
    MIN_SIZE=1
    SERVER_CATEGORY=
  SERVERPOOL
    NAME=pool3
    IMPORTANCE=0
    MAX_SIZE=1
    MIN_SIZE=1
    SERVER_CATEGORY=

ポリシーの変更

この例で想定されているニーズに対応するように前述のポリシー・セットを変更するには、ポリシーの名前をDefaultからDayTimeに変更することによってテキスト・ファイルを編集し、すでに説明した3つのシナリオに対してポリシーを定義します。次に、ポリシーをコピーして2回貼付けを行って、2つのポリシーを作成します。これらには、例3-2に示すように、NightTimeWeekendという名前を付けます。

例3-2 変更されたポリシー・セットのテキスト・ファイル

SERVER_POOL_NAMES=Free pool1 pool2 pool3
POLICY
  NAME=DayTime
  SERVERPOOL
    NAME=pool1
    IMPORTANCE=0
    MAX_SIZE=2
    MIN_SIZE=2
    SERVER_CATEGORY=
  SERVERPOOL
    NAME=pool2
    IMPORTANCE=0
    MAX_SIZE=1
    MIN_SIZE=1
    SERVER_CATEGORY=
  SERVERPOOL
    NAME=pool3
    IMPORTANCE=0
    MAX_SIZE=1
    MIN_SIZE=1
    SERVER_CATEGORY=
POLICY
  NAME=NightTime
  SERVERPOOL
    NAME=pool1
    IMPORTANCE=0
    MAX_SIZE=1
    MIN_SIZE=1
    SERVER_CATEGORY=
  SERVERPOOL
    NAME=pool2
    IMPORTANCE=0
    MAX_SIZE=2
    MIN_SIZE=2
    SERVER_CATEGORY=
  SERVERPOOL
    NAME=pool3
    IMPORTANCE=0
    MAX_SIZE=1
    MIN_SIZE=1
    SERVER_CATEGORY=
POLICY
  NAME=Weekend
  SERVERPOOL
    NAME=pool1
    IMPORTANCE=0
    MAX_SIZE=0
    MIN_SIZE=0
    SERVER_CATEGORY=
  SERVERPOOL
    NAME=pool2
    IMPORTANCE=0
    MAX_SIZE=1
    MIN_SIZE=1
    SERVER_CATEGORY=
  SERVERPOOL
    NAME=pool3
    IMPORTANCE=0
    MAX_SIZE=3
    MIN_SIZE=3
    SERVER_CATEGORY=

個々のポリシーの名前の変更に加えて、各ポリシーの各サーバー・プールのMAX_SIZEポリシー属性とMIN_SIZEポリシー属性も、アプリケーションのニーズに従って変更されたことに注意してください。

次のコマンドによって、ファイルに格納されているポリシー・セットがOracle Clusterwareに登録されます。

$ crsctl modify policyset -file file_name

前述の例に示すのと同じ結果を得るには、crsctl modify policysetコマンドを使用してDefaultポリシー・セット全体を編集し、crsctl modify serverpoolコマンドを使用して、特定のポリシーに対する個々のサーバー・プール属性を変更します。

次のコマンドでは、3つのサーバー・プールを管理するようにDefaultポリシー・セットを変更します。

$ crsctl modify policyset –attr "SERVER_POOL_NAMES=Free pool1 pool2 pool3"

次のコマンドでは、3つのポリシーを追加します。

$ crsctl add policy DayTime
$ crsctl add policy NightTime
$ crsctl add policy Weekend

次のコマンドでは、ポリシーの要件に従って3つのサーバー・プールを構成します。

$ crsctl modify serverpool pool1 -attr "MIN_SIZE=2,MAX_SIZE=2" -policy DayTime
$ crsctl modify serverpool pool1 -attr "MIN_SIZE=1,MAX_SIZE=1" -policy NightTime
$ crsctl modify serverpool pool1 -attr "MIN_SIZE=0,MAX_SIZE=0" -policy Weekend

$ crsctl modify serverpool pool2 -attr "MIN_SIZE=1,MAX_SIZE=1" -policy DayTime
$ crsctl modify serverpool pool2 -attr "MIN_SIZE=2,MAX_SIZE=2" -policy NightTime
$ crsctl modify serverpool pool2 -attr "MIN_SIZE=1,MAX_SIZE=1" -policy Weekend

$ crsctl modify serverpool pool3 -attr "MIN_SIZE=1,MAX_SIZE=1" -policy DayTime
$ crsctl modify serverpool pool3 -attr "MIN_SIZE=1,MAX_SIZE=1" -policy NightTime
$ crsctl modify serverpool pool3 -attr "MIN_SIZE=3,MAX_SIZE=3" -policy Weekend

これで、3つのアプリケーションの要件に対応するためにサーバー・プールを管理する3つの個々のポリシーができます。

ポリシーのアクティブ化

これでポリシー・セットが構成され、3つの異なるポリシーを使用して3つのサーバー・プールを制御します。必要に応じてポリシーをアクティブ化でき、各ポリシーの構成に従ってOracle Clusterwareでサーバー・プールを再構成するように指示することができます。

次のコマンドでは、DayTimeポリシーをアクティブ化します。

$ crsctl modify policyset -attr "LAST_ACTIVATED_POLICY=DayTime"

リソースの現在のステータスは、次のとおりです。

$ crsctl status resource -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
app1
      1        ONLINE  ONLINE       mjk_has3_2               STABLE
      2        ONLINE  ONLINE       mjk_has3_0               STABLE
app2
      1        ONLINE  ONLINE       mjk_has3_1               STABLE
app3
      1        ONLINE  ONLINE       mjk_has3_3               STABLE

サーバー・プールのステータスは、次のとおりです。

$ crsctl stat serverpool
NAME=Free
ACTIVE_SERVERS=

NAME=Generic
ACTIVE_SERVERS=

NAME=pool1
ACTIVE_SERVERS=mjk_has3_0 mjk_has3_2

NAME=pool2
ACTIVE_SERVERS=mjk_has3_1

NAME=pool3
ACTIVE_SERVERS=mjk_has3_3

サーバーはDayTimeポリシーに従って割り当てられ、アプリケーションはそれぞれのサーバーで実行されます。

次のコマンドでは、Weekendポリシーをアクティブ化します(サーバー・プールには様々なサイズがあるため、サーバーがサーバー・プール間を移動するにつれて、停止するアプリケーションもあれば、起動するアプリケーションもあります)。

$ crsctl modify policyset -attr "LAST_ACTIVATED_POLICY=Weekend"
CRS-2673: Attempting to stop 'app1' on 'mjk_has3_2'
CRS-2673: Attempting to stop 'app1' on 'mjk_has3_0'
CRS-2677: Stop of 'app1' on 'mjk_has3_0' succeeded
CRS-2672: Attempting to start 'app3' on 'mjk_has3_0'
CRS-2677: Stop of 'app1' on 'mjk_has3_2' succeeded
CRS-2672: Attempting to start 'app3' on 'mjk_has3_2'
CRS-2676: Start of 'app3' on 'mjk_has3_2' succeeded
CRS-2676: Start of 'app3' on 'mjk_has3_0' succeeded

リソースの現在のステータスは、次のとおりです。

$ crsctl status resource -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details      
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
app1
      1        ONLINE  OFFLINE                               STABLE
      2        ONLINE  OFFLINE                               STABLE
app2
      1        ONLINE  ONLINE       mjk_has3_1               STABLE
app3
      1        ONLINE  ONLINE       mjk_has3_0               STABLE
      2        ONLINE  ONLINE       mjk_has3_2               STABLE
      3        ONLINE  ONLINE       mjk_has3_3               STABLE
--------------------------------------------------------------------------------

サーバー・プールのステータスは、次のとおりです。

$ crsctl status serverpool
NAME=Free
ACTIVE_SERVERS=

NAME=Generic
ACTIVE_SERVERS=

NAME=pool1
ACTIVE_SERVERS=

NAME=pool2
ACTIVE_SERVERS=mjk_has3_1

NAME=pool3
ACTIVE_SERVERS=mjk_has3_0 mjk_has3_2 mjk_has3_3

crsctl modify policysetコマンドを使用して、Oracle Clusterwareは、サーバー・プール構成を変更し、ポリシーの要件に従ってサーバーを移動し、アプリケーションの停止と起動を行いました。

関連項目:

この例に示すCRSCTLコマンドの詳細は、「Oracle Clusterware制御(CRSCTL)ユーティリティ・リファレンス」を参照してください。