♦ 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 동영상이다. (아래 이미지를 클릭하면 움직이는 그림이 출력된다.)
