忘れかけのIT備忘録

今まで学んできた知識や小技、なるほど!と思ったことをメモするブログです。

RACの起動の流れ

RACの起動シーケンスについて調査しました。
RAC触ったことある人なら誰でも知っているよ!と言われそうな気がしますが、復習がてら備忘録に残します。

RACクラスタ管理ソフトウェアにOracle Clusterwareを使用しています。
Oracle Clusterwareは、Grid Infrastructureと呼ばれる製品に含まれるクラスタ管理ソフトウェアです。
リソースの状態を定期的に監視し、障害発生時にリソース再起動および別ノードへ再配置することで高可用性を実現しています。

Oracle Clusterwareは、Oracle Clusterwareスタック(OHASスタック、CRSスタック)で構成されています。

●構成

OHAS (Oracle High Availability Services)
Oracle Clusterwareスタックの起動、停止、監視などを管理する

orarootagent
rootユーザ権限で起動する必要のあるOracle ClusterwareスタックとOracle Clusterwareリソースの起動、停止、監視などを管理するエージェント
OHASから起動するorarootagentとCRSから起動するorarootagentがある

CSS Agent (cssdagent)、CSS Monitor (cssdmonitor)
CSSを管理するエージェント
CSS Agent:クラスタの監視、I/Oフェンシング(※1)を提供する
CSS Monitor:CSSデーモンを監視する(ハングアップしていないかなど)
(※1) クラスタから削除されたノードからのI/O停止

Oracle Agent (oraagent)
Oracle Clusterwareリソースの起動、停止、監視などを管理するエージェント
OHASから起動するoraagentとCRSから起動するoraagentがある

CRS (Cluster Ready Services)
Oracle Clusterwareリソース(クラスタリソース、ローカルリソース)の起動、停止、監視などを管理する
リソース障害の場合、リソースの再起動やフェイルオーバーする

CSS (Cluster Synchronization Services)
クラスタ環境のメンバーシップを制御する
CSSデーモンがノード間のハードビートを行い、通信ができない場合(スプリット・ブレイン)の解決を行う
CSSデーモンが停止するとノードが再起動される

EVM (Event Manager)
クラスタ環境で発生したイベント(Oracle Clusterwareリソース状態の変化)を処理する

OCLSKD (Oracle Clusterware Kill Daemon)
インスタンスやノードの削除リクエストを処理する

CTSS (Cluster Time Synchronization Service)
NTP構成していない場合、システム時刻の同期サービスを提供する

DISKMON (Disk Monitor)
HP Oracle Exadata Storageストレージを使用している場合、ストレージ監視とI/Oフェンシングを提供する

mDNS (Multicast DNS)
GNSを使用している場合、各ノードのDNSリクエストを受け付ける

GPnP (Grid Plug and Play)
GPnPプロファイルを読み込み、CRSスタックにプロファイルを提供する

GNS (Grid Naming Service)
クラスタ環境の名前解決を提供する

SCAN VIP、ノードVIP
SCANリスナーとリスナーが使用する仮想IP
パブリックNICの別名IPとして割り当てられる

ASM Instance、ASM Diskgroup
ASMインスタンスとASMディスクグループの起動、停止、監視などを管理する

ONS (Oracle Notification Services)、eONS
FAN(高速アプリケーション通知)で使用するリモートとのイベントの送受信を提供する
eONSはEM用のONS

SCANリスナー、リスナー
Oracle Netクライアントからの着信接続要求をリスニングし、サーバーへの通信を管理

DB Instance、Service
データベースインスタンスとサービスの起動、停止、監視などを管理する

【補足】
デーモン:バックグラウンドプロセス
エージェント:デーモンの処理を代わりに行う代理プロセス
スタック:プロセスの集合体
OHASスタック:クラスタ環境に必要なプロセスを管理する
CRSスタック:RAC環境に必要なリソースを管理する

●起動の流れ
・概要

OCR (Oracle Cluster Registory)
CRSスタックの情報を管理するリポジトリ
共有ストレージに配置される
Oracle Clusterwareリソース(ホスト名、インターコネクト情報、各リソースのプロファイル情報、ステータスなど)の情報が格納される

OLR (Oracle Local Registory)
OHASスタックの情報を管理するリポジトリ
ローカルストレージに配置される
Oracle Clusterwareプロセスの情報が格納される

・詳細(プロセスレベル)

①OHASデーモンがOLRからOracle Clusterwareスタック情報を取得し、起動する
②GPnPデーモンがGPnPプロファイル(※1)からストレージ構成情報を取得し、CRSスタック(CSSD、CRSD、EVMD)に提供する
③GPnPプロファイルから取得した情報を参照して、CSSデーモンが投票ディスクとI/O開始
④GPnPプロファイルから取得した情報を参照して、ASMがASM SPFILEを使用してASMインスタンスを起動する
⑤GPnPプロファイルから取得した情報を参照して、CRSデーモンがOCRとI/O開始

(※1)
ストレージ構成の変化などを動的にストレージ構成情報を格納しているファイル
各ノードに配置され、XML形式になっている
GPnPプロファイルの情報として
・投票ディスク、OCR、ASM SPFILEの場所
・ノードVIP、SCAN VIPなどのネットワーク情報
が格納されている

【補足】GPnPプロファイルの導入背景
CSSDは起動時に投票ディスクにアクセスする必要があります
11gR1までは投票ディスクが格納されているASMが起動しないとCSSDが投票ディスクにアクセスできませんでした(ASMが起動するまで、CSSD起動を待つ必要がありました)
11gR2からGPnPプロファイルが導入され、GPnPプロファイルから投票ディスクの場所を取得してアクセスできるようになったため、ASMの起動を待つ必要がなくなりました(ASMの起動状態に依存しません)

■参考

#クラスタ起動コマンド実行結果
[root@node1 ~]# /u01/app/12.1.0/grid/bin/crsctl start crs -wait
CRS-4123: Starting Oracle High Availability Services-managed resources
CRS-2672: 'ora.mdnsd'('node1')の起動を試行しています
CRS-2672: 'ora.evmd'('node1')の起動を試行しています
CRS-2676: 'ora.evmd'('node1')の起動が成功しました
CRS-2676: 'ora.mdnsd'('node1')の起動が成功しました
CRS-2672: 'ora.gpnpd'('node1')の起動を試行しています
CRS-2676: 'ora.gpnpd'('node1')の起動が成功しました
CRS-2672: 'ora.gipcd'('node1')の起動を試行しています
CRS-2676: 'ora.gipcd'('node1')の起動が成功しました
CRS-2672: 'ora.cssdmonitor'('node1')の起動を試行しています
CRS-2676: 'ora.cssdmonitor'('node1')の起動が成功しました
CRS-2672: 'ora.cssd'('node1')の起動を試行しています
CRS-2672: 'ora.diskmon'('node1')の起動を試行しています
CRS-2676: 'ora.diskmon'('node1')の起動が成功しました
CRS-2676: 'ora.cssd'('node1')の起動が成功しました
CRS-2672: 'ora.cluster_interconnect.haip'('node1')の起動を試行しています
CRS-2672: 'ora.ctssd'('node1')の起動を試行しています
CRS-2676: 'ora.ctssd'('node1')の起動が成功しました
CRS-2676: 'ora.cluster_interconnect.haip'('node1')の起動が成功しました
CRS-2672: 'ora.asm'('node1')の起動を試行しています
CRS-2676: 'ora.asm'('node1')の起動が成功しました
CRS-2672: 'ora.storage'('node1')の起動を試行しています
CRS-2676: 'ora.storage'('node1')の起動が成功しました
CRS-2672: 'ora.crf'('node1')の起動を試行しています
CRS-2676: 'ora.crf'('node1')の起動が成功しました
CRS-2672: 'ora.crsd'('node1')の起動を試行しています
CRS-2676: 'ora.crsd'('node1')の起動が成功しました
CRS-6017: サーバー: node1でのリソースの自動起動を処理しています
CRS-2672: 'ora.net1.network'('node1')の起動を試行しています
CRS-2676: 'ora.net1.network'('node1')の起動が成功しました
CRS-2672: 'ora.ons'('node1')の起動を試行しています
CRS-2673: 'ora.node1.vip'('node2')の停止を試行しています
CRS-2677: 'ora.node1.vip'('node2')の停止が成功しました
CRS-2672: 'ora.node1.vip'('node1')の起動を試行しています
CRS-2676: 'ora.node1.vip'('node1')の起動が成功しました
CRS-2672: 'ora.LISTENER.lsnr'('node1')の起動を試行しています
CRS-2676: 'ora.ons'('node1')の起動が成功しました
CRS-2676: 'ora.LISTENER.lsnr'('node1')の起動が成功しました
CRS-6016: サーバーnode1でのリソースの自動起動が完了しました
CRS-6024: Oracle Cluster Ready Services管理下のリソースの起動が完了しました
CRS-4123: Oracle High Availability Services has been started.

#クラスタ停止コマンド実行結果
[root@node1 ~]# /u01/app/12.1.0/grid/bin/crsctl stop crs
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'node1'
CRS-2673: Attempting to stop 'ora.crsd' on 'node1'
CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on 'node1'
CRS-2673: Attempting to stop 'ora.orcl.hoge.svc' on 'node1'
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'node1'
CRS-2673: Attempting to stop 'ora.LISTENER_SCAN1.lsnr' on 'node1'
CRS-2677: Stop of 'ora.orcl.hoge.svc' on 'node1' succeeded
CRS-2673: Attempting to stop 'ora.orcl.db' on 'node1'
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'node1' succeeded
CRS-2673: Attempting to stop 'ora.node1.vip' on 'node1'
CRS-2677: Stop of 'ora.LISTENER_SCAN1.lsnr' on 'node1' succeeded
CRS-2673: Attempting to stop 'ora.scan1.vip' on 'node1'
CRS-2677: Stop of 'ora.orcl.db' on 'node1' succeeded
CRS-2673: Attempting to stop 'ora.DATA.dg' on 'node1'
CRS-2673: Attempting to stop 'ora.FRA.dg' on 'node1'
CRS-2677: Stop of 'ora.DATA.dg' on 'node1' succeeded
CRS-2677: Stop of 'ora.FRA.dg' on 'node1' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'node1'
CRS-2677: Stop of 'ora.asm' on 'node1' succeeded
CRS-2677: Stop of 'ora.node1.vip' on 'node1' succeeded
CRS-2672: Attempting to start 'ora.node1.vip' on 'node2'
CRS-2677: Stop of 'ora.scan1.vip' on 'node1' succeeded
CRS-2672: Attempting to start 'ora.scan1.vip' on 'node3'
CRS-2676: Start of 'ora.node1.vip' on 'node2' succeeded
CRS-2676: Start of 'ora.scan1.vip' on 'node3' succeeded
CRS-2672: Attempting to start 'ora.LISTENER_SCAN1.lsnr' on 'node3'
CRS-2676: Start of 'ora.LISTENER_SCAN1.lsnr' on 'node3' succeeded
CRS-2673: Attempting to stop 'ora.ons' on 'node1'
CRS-2677: Stop of 'ora.ons' on 'node1' succeeded
CRS-2673: Attempting to stop 'ora.net1.network' on 'node1'
CRS-2677: Stop of 'ora.net1.network' on 'node1' succeeded
CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'node1' has completed
CRS-2677: Stop of 'ora.crsd' on 'node1' succeeded
CRS-2673: Attempting to stop 'ora.mdnsd' on 'node1'
CRS-2673: Attempting to stop 'ora.gpnpd' on 'node1'
CRS-2673: Attempting to stop 'ora.ctssd' on 'node1'
CRS-2673: Attempting to stop 'ora.evmd' on 'node1'
CRS-2673: Attempting to stop 'ora.storage' on 'node1'
CRS-2673: Attempting to stop 'ora.drivers.acfs' on 'node1'
CRS-2677: Stop of 'ora.storage' on 'node1' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'node1'
CRS-2677: Stop of 'ora.drivers.acfs' on 'node1' succeeded
CRS-2677: Stop of 'ora.gpnpd' on 'node1' succeeded
CRS-2677: Stop of 'ora.ctssd' on 'node1' succeeded
CRS-2677: Stop of 'ora.mdnsd' on 'node1' succeeded
CRS-2677: Stop of 'ora.evmd' on 'node1' succeeded
CRS-2677: Stop of 'ora.asm' on 'node1' succeeded
CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'node1'
CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'node1' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'node1'
CRS-2677: Stop of 'ora.cssd' on 'node1' succeeded
CRS-2673: Attempting to stop 'ora.crf' on 'node1'
CRS-2677: Stop of 'ora.crf' on 'node1' succeeded
CRS-2673: Attempting to stop 'ora.gipcd' on 'node1'
CRS-2677: Stop of 'ora.gipcd' on 'node1' succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'node1' has completed
CRS-4133: Oracle High Availability Services has been stopped.
赤文字:OHASスタック停止開始・終了
青文字:CRSスタックの停止開始・終了

■参考資料
オラクルマスター教科書 Oracle Expert RAC 11gR2
Oracle Database 11g Release 2 RAC実践ガイド 基礎から学ぶRAC構築・管理
Oracle高可用性サービス技術スタック