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

RHCS-SplitBrain

RHCS - Split Brain 현상 구현

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다