app1、app2およびapp3という3つの異なるアプリケーションで使用される4ノード・クラスタがあり、pool1、pool2およびpool3という3つのサーバー・プールを作成したと想定します。各アプリケーションは専用のサーバー・プールで動作するように割り当て、app1は2つのサーバーを希望し、app2とapp3はそれぞれ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つのみのサーバーを必要とし、週末はサーバーを必要としないと想定します。同時に、app2とapp3はそれぞれ、業務時間中は1つのサーバーを必要とし、夜間はapp2は2つのサーバーを必要とし、app3は1つのサーバーを必要とします。週末は、app2は1つのサーバーを必要とし、app3は3つのサーバーを必要とします。このシナリオは、クラスタに対して構成する必要がある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に示すように、NightTime
とWeekend
という名前を付けます。
例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)ユーティリティ・リファレンス」を参照してください。