楽しいRAC構築の動作検証♪
RAC vipフェイルオーバーメモ
☆サービスC用の検証メモ
■Oracle Client環境
サービスCに対するtnsnames.ora
SVC =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac01-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac02-vip)(PORT = 1521))
(LOAD_BALANCE = no)
)
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = SVC)
)
)
※FAILOVERはデフォルトON
■検証内容
①Oracle ClientからServiceCに対して接続
②ノード1のpublicipをifconfig downコマンドよりダウンを実行
③ノード1のvipとSVC(サービスC)がノード2にフェイルオーバーする
④Oracle Clientのセッションが切断される
⑤Oracle ClientからServiceCに対して手動で接続
⑥Oracle Clientがrac02インスタンスに接続していることを確認
⑦ノード1のインスタンスとCRSのリソースを完全停止
⑧Oracle Clientはvip2の方で接続してることを確認
⑨ノード2にフェイルオーバーしたvip1は⑦より、停止
■詳細ログ
①
[root@client ~]$ sqlplus system/password@SVC
SQL> select instance_name from v$instance;
INSTANCE_NAME
------------------------------------------------
rac01
②
[root@rac01 ~]# ifconfig eth0 down
③
[root@rac02 ~]$ crs_stat -t
??p キソ ・ソ。シ...・ネ セヨ ・ロ・ケ・ネ
------------------------------------------------------------
ora.....SVA.cs application OFFLINE OFFLINE
ora....c01.srv application ONLINE OFFLINE
ora.....SVB.cs application ONLINE ONLINE rac02
ora....c02.srv application ONLINE ONLINE rac02
ora.....SVC.cs application ONLINE ONLINE rac01
ora....c01.srv application ONLINE ONLINE rac02
ora.asakusa.db application ONLINE ONLINE rac02
ora....01.inst application ONLINE OFFLINE
ora....02.inst application ONLINE ONLINE rac02
ora....01.lsnr application ONLINE OFFLINE
ora.rac01.gsd application ONLINE ONLINE rac01
ora.rac01.ons application ONLINE ONLINE rac01
ora.rac01.vip application ONLINE ONLINE rac02
ora....02.lsnr application ONLINE ONLINE rac02
ora.rac02.gsd application ONLINE ONLINE rac02
ora.rac02.ons application ONLINE ONLINE rac02
ora.rac02.vip application ONLINE ONLINE rac02
[root@rac02 ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:A1:5D:54
inet addr:192.168.1.104 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fea1:5d54/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:24483 errors:0 dropped:0 overruns:0 frame:0
TX packets:21677 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2428513 (2.3 MiB) TX bytes:2000192 (1.9 MiB)
Interrupt:177 Base address:0x1400
eth0:1 Link encap:Ethernet HWaddr 00:0C:29:A1:5D:54
inet addr:192.168.1.114 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:177 Base address:0x1400
eth0:2 Link encap:Ethernet HWaddr 00:0C:29:A1:5D:54
inet addr:192.168.1.113 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:177 Base address:0x1400
④
SQL> select instance_name from v$instance;
select instance_name from v$instance
*
行1でエラーが発生しました。:
ORA-03135: 接続が失われました
⑤⑥
[root@client ~]$ sqlplus system/password@SVC
SQL> select instance_name from v$instance;
INSTANCE_NAME
------------------------------------------------
rac02
⑦
[root@rac01 ~]# srvctl stop instance -d ASAKUSA -i rac01
[root@rac01 ~]# srvctl stop nodeapps -n rac01
[root@rac01 ~]# crs_stat -t
名前 型 ター...ト 状態 ホスト
------------------------------------------------------------
ora.....SVA.cs application OFFLINE OFFLINE
ora....c01.srv application ONLINE OFFLINE
ora.....SVB.cs application ONLINE ONLINE rac02
ora....c02.srv application ONLINE ONLINE rac02
ora.....SVC.cs application ONLINE ONLINE rac01
ora....c01.srv application ONLINE ONLINE rac02
ora.asakusa.db application ONLINE ONLINE rac02
ora....01.inst application OFFLINE OFFLINE
ora....02.inst application ONLINE ONLINE rac02
ora....01.lsnr application OFFLINE OFFLINE
ora.rac01.gsd application OFFLINE OFFLINE
ora.rac01.ons application OFFLINE OFFLINE
ora.rac01.vip application OFFLINE OFFLINE
ora....02.lsnr application ONLINE ONLINE rac02
ora.rac02.gsd application ONLINE ONLINE rac02
ora.rac02.ons application ONLINE ONLINE rac02
ora.rac02.vip application ONLINE ONLINE rac02
[root@rac01 ~]# crsctl stop crs
Stopping resources.
Successfully stopped CRS resources
Stopping CSSD.
Shutting down CSS daemon.
Shutdown request successfully issued.
⑧
SQL> select instance_name from v$instance;
INSTANCE_NAME
------------------------------------------------
rac02
⑨
[root@rac02 ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:A1:5D:54
inet addr:192.168.1.104 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fea1:5d54/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:24678 errors:0 dropped:0 overruns:0 frame:0
TX packets:21857 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2445357 (2.3 MiB) TX bytes:2022059 (1.9 MiB)
Interrupt:177 Base address:0x1400
eth0:1 Link encap:Ethernet HWaddr 00:0C:29:A1:5D:54
inet addr:192.168.1.114 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:177 Base address:0x1400
eth1 Link encap:Ethernet HWaddr 00:0C:29:A1:5D:5E
inet addr:10.0.0.2 Bcast:10.0.0.7 Mask:255.255.255.248
inet6 addr: fe80::20c:29ff:fea1:5d5e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1070976 errors:0 dropped:0 overruns:0 frame:0
TX packets:1148960 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:633733337 (604.3 MiB) TX bytes:768068334 (732.4 MiB)
Interrupt:185 Base address:0x1480
リスナーの再起動をさせない設定について検証
①再起動の制御ができると思われるリソース・プロファイルのパラメータ"AUTO_START"の値を変更してみたが、効果なし。
自動復旧してしまいます。
②リソースのチェックの時間"CHECK_INTERVAL"を600秒から0秒にし、リスナーをダウンを検知させない方法で試してみたら、自動復旧はしなかった。
この場合だとCRS上でリスナーがダウンしたことがわからないままなので、よろしくないと思う。
自動復旧の抑制はできないということにしてクローズ。
自動復旧の抑制についての検証について記述。
まずわかったことは、リスナーを含めCRSが監視しているリソースは全て障害時に再起動を行うらしい。
再起動できない場合はフェイルオーバーを実行。
○CRS監視対象リソース(crs_stsatで見れるもの)
・仮想IPアドレス
・Oracleリスナー
・サービス
・Oracleインスタンス
・ASMインスタンス
・ONS
・GSD
○クラスタのプロセス(PSコマンドでみれるもの)
・EVM →プロセス再起動
・CRS →プロセス再起動
・CSS →ノード再起動
また、これらのリソースごと(クラスタのプロセスは除く)にCRS上でリソースプロファイルというものを持っている。($ crs_stat -p で表示されるパラメータ)
プロファイルに含まれる属性にAUTO_STARTというもので制御できるかもしれない。
または、ACTION_SCRIPTという属性に記載されているパス"racgwrap"というファイルに直接書き換えればできそうな気がする。(テキストかバイナリか不明)
再度調査!
(Oracle10g のRACのリスナーは1ノード単位で作成する。
ノード1でのRACがダウンしてしまった場合、ノード2のリスナー経由でデータベースに接続することができる。
検証1.killコマンドでリスナープロセスをダウンさせる。
・alert.logやlistener.logに出力されない。
・crs_stat -t コマンドでもONLINEの状態
・lsnrctl status コマンドでは、検知されている。
・ps -ef | grep tnslistener では非表示
・数分すると、lisner_rac01.logで自動復旧のメッセージが出現
⇒結論として、killでダウンさせたリスナーは自動復旧される。
検証2.手動でリスナーを停止させた場合
・srvctl stop lisntenerコマンドで手動停止
・lisnter_rac01.logで停止確認
・crs_stat -t でOFFLINE確認
・ps -ef | grep tnslistener非表示
⇒コマンドによる停止を行った場合は、自動起動されない。
最近のコメント