♦ RHCS 정보
OS : RHEL 6.5
NODE : 2 NODE
Resource : Oracle11g R2 , nas4free iSCSI externel Storage(2 Volume), VIP(192.168.0.43)
Fence Device : Supermicro mainboard IPMI Port
♦ 호스트 정보
[root@csnode01 ~]# cat /etc/hosts
192.168.0.41 csnode01
192.168.0.42 csnode02
192.168.0.43 vip
192.168.10.41 hb01
192.168.10.42 hb02
192.168.10.11 fence01
192.168.10.12 fence02
192.168.0.29 nas4free
♦ cluster.conf 설정 값
[root@csnode01 ~]# cat /etc/cluster/cluster.conf <?xml version="1.0"?> <cluster config_version="43" name="Oracle-Cluster"> <clusternodes> <clusternode name="hb01" nodeid="1"> <fence> <method name="Method01"> <device name="kdump" nodename="hb01"/> </method> <method name="Method02"> <device name="f1"/> </method> </fence> </clusternode> <clusternode name="hb02" nodeid="2"> <fence> <method name="Method01"> <device name="kdump" nodename="hb02"/> </method> <method name="Method02"> <device name="f2"/> </method> </fence> </clusternode> </clusternodes> <cman expected_votes="1" two_node="1"> <multicast addr="239.192.9.224"/> </cman> <rm> <resources> <ip address="192.168.0.43/24" sleeptime="10"/> <fs device="/dev/vg01/oradata01" fsid="27619" mountpoint="/data/oradata01" name="iscsi"/> <script file="/etc/init.d/oracle" name="oracle"> <action depth="*" interval="0s" name="status"/> </script> <fs device="/dev/vg00/share" fsid="27300" mountpoint="/share" name="iscsi2"/> </resources> <failoverdomains> <failoverdomain name="FO" ordered="1"> <failoverdomainnode name="hb01" priority="1"/> <failoverdomainnode name="hb02" priority="1"/> </failoverdomain> </failoverdomains> <service name="svc01" recovery="relocate"> <fs ref="iscsi"/> <ip ref="192.168.0.43/24"/> <script ref="oracle"/> <fs ref="iscsi2"/> </service> </rm> <fencedevices> <fencedevice agent="fence_kdump" name="kdump"/> <fencedevice agent="fence_ipmilan" ipaddr="fence01" login="ADMIN" name="f1" passwd="password" power_wait="10"/> <fencedevice agent="fence_ipmilan" ipaddr="fence02" login="ADMIN" name="f2" passwd="password" power_wait="10"/> </fencedevices> </cluster>
♦ 문제 일으키기
양쪽 노드에서 핫빗 NIC를 내려서 핫빗 체크 및 IPMI Fence 장치로 reboot 신호를 보내지 못하게 만들어 fencing을 할 수 없는 상황으로 만들었 때 Split Brain(핑퐁 치는 현상)을 구현한다.
1) 양쪽 노드에서 핫빗 NIC (eth2)를 일부러 죽인다.
2) 핫빗 체크 및 IPMI Fence 장치로 reboot 신호를 보내지 못하게 되는, 즉 fencing을 할 수 없는 상황으로 된다.
3) 각 노드가 자신이 master node 임을 인지하고 fencing 모드에 돌입한다.
4) 무한 반복으로 fencing을 친다.
-> 이런 현상의 NIC 고장외의 이유는 이 포스팅의 '메뉴얼 펜싱' 부분을 살펴본다.
♦ 해결하기
그리고 해결을 위해 아래와 같이 진행한다. - 아래와 같은 절차를 안 밟으면 rgmanager, cman 이 내려가지 않는다.
1) 서비스가 구동 중이었던 csnode01에서 오라클을 내리기 -> VIP 회수 -> 외장 스토리지 볼륨 umount
2) 각 노드에서 메뉴얼 펜싱
3) 각 노드에서 rgmanager stop
4) 각 노드에서 cman stop --> 아래 동영상에서는 여기까지만 진행
5) 각 노드에서 eth2 장치 올리기
6) 각 노드에서 cman, rgmanager 시작하기
아래는 위 과정을 나타낸 gif 동영상이다. (아래 이미지를 클릭하면 움직이는 그림이 출력된다.)