【Oracle】Racのインスタンスと連動したリソースをOracle Clusterwareに登録する
前回の【Oracle】EnterpriseManagerを自動起動するようClusterwareに組み込むでリソースを登録すると、
どのノードでインスタンスが起動してようが、してなかろうが問答無用にリソースが起動する。
しかし、今回はインスタンスが立ち上がっているノードでのみリソースを起動して欲しかった。
Racをポリシーベースで使っていると、どこのノードでどのインスタンスが上がってくるかわからない。
その状態で、インスタンスが立ち上がったらそのノードにあわせてリソースを起動するようにしたメモ。
リソース仕様
・インスタンスが起動しているノードでのみ起動される
・インスタンスが起動しているのが前提で起動される
・30秒間隔でチェック
・実行ユーザはoracleユーザ
環境
・Oracle RAC 11g R2
・RACの管理方法はポリシーベース管理
・3ノード中、2ノードがアクティブで1ノードはスタンバイてきな感じで使われる環境です
・インスタンス名はapp
・サーバプール名はhogePool
登録方法
仕様でoracleユーザで実行する必要があるので以下をoracleユーザで実行する。
1 2 3 4 5 6 7 8 9 10 11 12 |
/u01/app/11.2.0/grid/bin/crsctl add resource hoge.app -type cluster_resource -attr " ACTION_SCRIPT=/home/oracle/scripts/hoge.sh, CHECK_INTERVAL=30, SCRIPT_TIMEOUT=60, RESTART_ATTEMPTS=2, CARDINALITY=2, START_DEPENDENCIES=attraction(intermediate:ora.app.db) pullup(ora.app.db), STOP_DEPENDENCIES=hard(shutdown:ora.app.db), ACL='owner:oracle:rwx,pgrp:oinstall:rwx,other::r--,group:oinstall:r-x,user:oracle:rwx', SERVER_POOLS=ora.hogePool, PLACEMENT=restricted, AUTO_START=restore" |
今回はクラスタリソースとして登録するので-type cluster_resourceを指定している。
同じくクラスタリソースであるappインスタンスの状態をみて、リソースを操作する必要があるのでcluster_resourceなんです。
ACTION_SCRIPTには実行するスクリプトを指定。
CHECK_INTERVALはリソースのチェック間隔。スクリプトのcheckが呼ばれます。
SCRIPT_TIMEOUTはタイムアウトの指定。
RESTART_ATEMPTSは今回、2回リソースの再起動を試みます。
CARDINALITYを2に指定することで、2ノードでしか動かさないように限定している。
START_DEPENDENCIESはappインスタンスが立ち上がるのと連動してリソースを起動させるように設定している
STOP_DEPENDENCIESはappインスタンスが落ちるのに連動してリソースも停止させるようにしてます。
ACLはリソースの所有者や実行権限などを設定してます。
PLACEMENT=restrictedを指定することで起動する状態をポリシーベースのポリシーに依存させることが出来る。
なお、restrictedを指定した場合はSERVER_POOLSでサーバプールの指定が必要なためora.hogePoolを指定している。
AUTO_START=restoreを指定することでサーバーが停止したときと同じ状態にリソースをリストアします。
以上でリソースを登録した後は、以下でリソースを起動させてあげる。
1 |
crsctl start res hoge.app |
いい感じに起動出来てるのを確認する。
1 2 3 4 5 6 7 8 9 |
$ crsctl stat res hoge.app -t -------------------------------------------------------------------------------- NAME TARGET STATE SERVER STATE_DETAILS -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- hoge.app 1 ONLINE ONLINE ora01 2 ONLINE ONLINE ora02 |
これでインスタンスに合わせてリソースも起動してくれることでしょう。