pacemaker  를 구성 하면서 vip network interface 에 대한 Link Detection 과정에서 ethmonitor 을 사용하고
있는데 아래와 같은 메시지가 발생된다.

WARNING: Interface bond0 does not exist

현재 해당 시스템은 bond0(ethmonitor) – br0(ip) 형태로 bond0 인터페이스에 대하여 br0 로 bridge network 을
구성한 형태이다.

원인을 찾아보던중 ethmonitor 의 소스를 확인 해본 결과 아래와 같은 구문이 실행되는 것을 확인 하였다.

ip -o -f inet addr show|grep bond0|cut -d 'm -f2|sort -u|grep -v '^ipsec[0-9][0-9]*$'

그리고 위의 WARNING 메시지가 출력되는 부분에 아래와 같은 comment 가 적혀 있었다.
It might be a interface which is temporarily not available , therefore we want to continue here

그런데??? 이상하다??? 위 구문으로 bond0 인터페이스가 잡히지 않는다.

이유는 간단했다. 

위 구문중 ” -f inet addr show ” 구문이 network interface  상에서 ipv4 ip 가 잡혀있는 인터페이스를
찾는 부분 때문에 bridge 로 구성된 bond0 ( ip 가 없는 ) 인터페이스를 찾지 못 하는 것이었다.

허탈함…

 

RHCS6 번의 패키지를 설치하고 ricci 서비스를 기동하려 했으나.
아무런 반응도 없고? 서비스가 기동되지 않을때?

—————————————————–
[root@gfs01 ~]# /etc/init.d/ricci start
[root@gfs01 ~]# /etc/init.d/ricci status
[root@gfs01 ~]# /etc/init.d/ricci stop
[root@gfs01 ~]#
—————————————————–

왜??? 반응이 없을까???

디버그를 해 보니??? 뭔가 변수가 안 들어오네?

—————————————————–

+ NSS_CERTS_DIR=/var/lib/ricci/certs
+ NSS_PKCS12=/var/lib/ricci/certs/server.p12
++ id -u
+ ‘[‘ 0 = 0 ‘]’
+ ‘[‘ ” = yes ‘]’ <== 요기 값이 안 들어옴
+ exit 1
—————————————————–

그래서 이유를 찾던중? 아래 파일의 내용을 확인해보니?

file : /etc/init.d/ricci  

—————————————————–
#
# If we’re not configured, then don’t start anything.
#
[ “${NETWORKING}” = “yes” ] || exit 1

—————————————————–

네트워킹 관련 값을 찾아오더라는???

추측에 추측을 해 본결과.

—————————————————–
file /etc/sysconfig/network

HOSTNAME=gfs01.cs
—————————————————–

파일에 내용이 좀 모자르네???

그래서 아래 내용을 추가해줌.

—————————————————–
NETWORKING=yes
HOSTNAME=gfs01.cs
—————————————————–

결과?
—————————————————–
[root@gfs01 ~]# /etc/init.d/ricci start
ricci 시작 중: [ OK ]
[root@gfs01 ~]# /etc/init.d/ricci status
ricci (pid 10434)를 실행하고 있습니다..
[root@gfs01 ~]#
[root@gfs01 ~]# /etc/init.d/ricci stop
Shutting down ricci: [ OK ]
[root@gfs01 ~]#
—————————————————–
정상 작동 함.

해당 시스템은 RHEL6.6 버전이 설치되어 있으며 RHCS 구성을 위하여
관련 패키지만 RHEL6.8 버전으로 설치해 놓은 상황

RHCS 를 다 구성하고 cman_tool version -r 으로 설정 동기화를 실행 하였으나
아무런 반응이 없고 멈춰있는 상태?

원인을 찾던중 아래와 같은 문서를 발견.

A cluster node cannot be added to luci and ccs_sync is not propagating the /etc/cluster/cluster.conf
Link : https://access.redhat.com/solutions/2471081

내용을 보면 ricci-0.16.2-86.el6(RFE: ricci should accept only TLSv1.2 and exclude RC4) 버전이
openssl, nss(nss-3.21.0-8.el6 or later) 에 대해서도 RHEL 6.8 에 포함된 버전으로 업데이트를
진행해야 한다고 함.

대략 난감으로… ricci 버전을 RHEL6.6 버전으로 다운 그레이드.
대박~!
정상 작동 함.

 

RHEL5,6 기반에 RHCS 서비스 데몬을 시작 하면서 아래와 같은 로그가 발생된다?

Error storing oracledb: Duplicate

이유가 뭘까?

이유는 /usr/share/cluster 디렉토리에 있었다.

Link : https://access.redhat.com/solutions/21663

내용을 보면 위 디렉토리에 중복된 스크립트가 포함되어 있어서 발생된 로그다.

ex)

oracledb
oracledb.bak
oracledb.bak.orig

문제된 파일을 삭제하거나 다른곳으로 옮겨야 한다.

RHCS 에서 사용할 수 있는 여러가지의 Resource 들이 있다.
보통은 luci 에서 확인이 가능하지만 luci 의 List 에도 나타나지 않는 Resource 들도 있다.

대표적인 Resource 가 vm 리소스 인데…
내용을 확인해 보면 xen, kvm 을 사용할 수 있지만
나는 kvm 에 대해서만 설명을 하도록 한다.

사용 방법 :
<vm migrate=”pause” name=”rhel57_mini” restart_expire_time=”90” use_virsh=”1
xmlfile=”/etc/libvirt/qemu/rhel57_mini.xml” status_program=”ping -c1 -w1 192.168.102.61“/>

        <parameter name=”migrate“>
            <longdesc lang=”en”>
                Migration type (live or pause, default = live).
            </longdesc>
            <shortdesc lang=”en”>
                Migration type (live or pause, default = live).
            </shortdesc>
            <content type=”string” default=”live”/>
        </parameter>

    <parameters>
        <parameter name=”name” primary=”1″>
            <longdesc lang=”en”>
                This is the name of the virtual machine.
            </longdesc>
            <shortdesc lang=”en”>
                Name
            </shortdesc>
            <content type=”string”/>
        </parameter>

        <parameter name=”restart_expire_time” reconfig=”1″>
            <longdesc lang=”en”>
                Restart expiration time.  A restart is forgotten
                after this time.  When combined with the max_restarts
                option, this lets administrators specify a threshold
                for when to fail over services.  If max_restarts
                is exceeded in this given expiration time, the service
                is relocated instead of restarted again.
            </longdesc>
            <shortdesc lang=”en”>
                Restart expiration time; amount of time before a restart
                is forgotten.
            </shortdesc>
            <content type=”string” default=”0″/>
        </parameter>

        <parameter name=”use_virsh“>
            <longdesc lang=”en”>
                Force use of virsh instead of xm on Xen machines.
            </longdesc>
            <shortdesc lang=”en”>
                If set to 1, vm.sh will use the virsh command to manage
                virtual machines instead of xm.  This is required when
                using non-Xen virtual machines (e.g. qemu / KVM).
            </shortdesc>
            <content type=”integer” default=””/>
        </parameter>

        <parameter name=”xmlfile“>
            <longdesc lang=”en”>
                Full path to libvirt XML file describing the domain.
            </longdesc>
            <shortdesc lang=”en”>
                Full path to libvirt XML file describing the domain.
            </shortdesc>
            <content type=”string”/>
        </parameter>

        <parameter name=”status_program” reconfig=”1″>
            <longdesc lang=”en”>
                Ordinarily, only the presence/health of a virtual machine
                is checked.  If specified, the status_program value is
                executed during a depth 10 check.  The intent of this
                program is to ascertain the status of critical services
                within a virtual machine.
            </longdesc>
            <shortdesc lang=”en”>
                Additional status check program
            </shortdesc>
            <content type=”string” default=””/>
        </parameter>

그 외 세부적인 파라미터를 알고 싶으면 RHCS 패키지 설치 후 File Name : /usr/share/cluster/vm.sh
파일을 참고 하기 바랍니다.

vm Resource 를 사용하게되면 기존 Script 형식의 Resource 와 마찮가지로
하나의 Process(vm) 이 죽게되면 다시 Start 를 시켜주지만 vm 내부에서 발생되는 문제에 대해서는
감지하기가 힘들다
이런경우 status_program 파라미터를 이용하여 ping 을 날린다거나 port 를 체크하여 vm 상태를 체크할 수 있다.

 

 

 

 

RHEL6.3 의 RHCS 환경에서 Resource 가 netfs 일때
실제 volume 이 mount 되어 있지만 RHCS 에서 해당 volume 를 not mount 라고 인지를 하여
remount 를 시도 하다가 Fail 로 빠져 버리는 경우 아래의 링크를 참고 하기 바란다.

관련하여 Bug 가 등록되어 있으며 아래의 링크를 참고하기 바란다.
Link : https://access.redhat.com/site/solutions/187833

해결 방법 : http://rhn.redhat.com/errata/RHBA-2013-0288.html

RHCS 환경에서 KVM Resource 를 사용하기 위하여 참고해야 될 내용…

#2-Node Red Hat KVM Cluster Tutorial
https://alteeve.ca/w/2-Node_Red_Hat_KVM_Cluster_Tutorial#Making_Our_VMs_Highly_Available_Cluster_Services

#RedHat cluster on RHEL6 and KVM-based VMs
http://run.tournament.org.il/redhat-cluster-on-rhel6-and-kvm-based-vms/

Guest fencing on a RHEL KVM host
http://www.daemonzone.net/e/3/

#Guest Fencing
http://clusterlabs.org/wiki/Guest_Fencing

#Virtualization Support for High Availability in Red Hat Enterprise Linux 5 and 6
https://access.redhat.com/site/articles/29440

#How can I configure fence devices for my RHEL KVM or Xen guests running in a cluster?
https://access.redhat.com/site/solutions/5936

How to configure Red Hat Cluster with fencing of two KVM guests running on two different KVM hosts?
https://access.redhat.com/site/solutions/293183

VMWARE 환경에서 VM 간의 RHCS 구성시에 필요한 내용이다.

참고…

@ vSphere Web Services SDK WSDL files obtained directly from vCenter Server are not complete
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2010507

@ Fence Device and Agent Information for Red Hat Enterprise Linux
https://access.redhat.com/articles/28603

@ Virtualization Support for RHEL High Availability and Resilient Storage Clusters
https://access.redhat.com/articles/29440

@ How to configure Vmware fencing ( fence_vmware_soap ) for RHCS ?
https://access.redhat.com/knowledge/solutions/68064

@ fence_vmware_soap does not function correctly against vSphere 5 SOAP API
https://access.redhat.com/knowledge/solutions/66774

@ fence_vmware_soap in RHEL 5 cluster does not work if the target node is on another ESX(i) host ?
https://access.redhat.com/knowledge/solutions/67947

@ Using the fence_vmware_soap fence agent fails with “Unable to obtain correct plug status or plug is not available”
https://access.redhat.com/knowledge/solutions/62221

@ A cluster node fails to be fenced with “fence_vmware_soap” and gets a timeout error message
https://access.redhat.com/knowledge/solutions/74363

@ RHEL High Availability: Manual Fencing (fence_manual vs. fence_ack_manual)

https://access.redhat.com/knowledge/articles/36302

 

@ App HA in VMs – Agenda – Red Hat Summit – [ likosar_perkins_application_availability_in_virtual_environments.pdf ]

*) 2013. 05.20 – vCenter 버전 5.1 부터는 위에 언급한 SDK 가 이미 내장되어 있다.

*) fence_vmware_soap 를 이용한 vm fencing 방법?

# fence_vmware_soap -z -l root -p mypasswd -a esxhost1.example.com -o list
rhel5rhcs-node1, 564d1874-b56f-711d-4167-3d97eaf24647
rhel5rhcs-node2, 564db341-39fc-1383-5e6d-3a71e14c540d
>> 해당 VM의 UUID 확인

# fence_vmware_soap  -a esxhost1.example.com -l root -p mypasswd -v -z -U 564d1874-b56f-711d-4167-3d97eaf24647 -o reboot
>> 해당 vm Rebooting 시키기

*) 2014.07.17 – RHEL5 에서 구성한 cluster.conf 예제 첨부
<clusternodes>
<clusternode name=”node1.hb” nodeid=”1″ votes=”1″>
<fence>
<method name=”1″>
<device name=”fence_vmware” port=”node1″ uuid=”421aa9ea-89fd-xxxx-fb25-2ce531616c04″/>
</method>
</fence>
</clusternode>
<clusternode name=”node2.hb” nodeid=”2″ votes=”1″>
<fence>
<method name=”1″>
<device name=”fence_vmware” port=”node2″ uuid=”421af28e-c77c-xxxx-d5e1-6bd2520e21f5″/>
</method>
</fence>
</clusternode>
</clusternodes>
<cman expected_votes=”3″ quorum_dev_poll=”29000″/>
<fencedevices>
<fencedevice agent=”fence_vmware_soap” ipaddr=”esxhost1.example.com” login=”id” name=”fence_vmware” passwd=”***” ssl=”1″/>
</fencedevices>

*) 2016.03.09 – 기존 링크 업데이트 

일반적으로 RHCS 환경에서 HeartBeat Network 에대하여 Switch Hub 환경을 제안한다.
그러나 고객측에선 비용적인 문제로 인하여 Switch Hub 환경이 아닌 CrossOver Cable 환경으로 구성해 줄것을 요구한다.

이런경우 본 제품은 CrossOver Cable 환경의 HeartBeat Network 를 권장 및 지원하지 않는다고 강조 하지만 잘 적용이 안 된다.

관련하여 Red Hat 의 Document 를 첨부한다.

Detail :
Network infrastructure used for the cluster heartbeat network must be switched and should be configured to eliminate single points of failure that could lead to split-brain situations (for example, it would not be recommended to have four nodes on Switch A and four nodes on Switch B with only a single interconnect between Switch A and Switch B). In addition, Red Hat does not support the use of crossover cables for the cluster heartbeat network between nodes in a two-node cluster.
link : https://access.redhat.com/site/articles/40051 (RHN ID 필요)

Detail :
– Why is bonding in active/backup mode not supported with direct connection using crossover cables?
Link : https://access.redhat.com/site/solutions/202583
>> A (eth2,3) – B(eth2,3) 로 bonding 을 구성된 시스템중에 A 서버가 문제가 발생되어
재 부팅을 하게되면 역시 마찬가지로 B 서버의 eth2,3 도 offline 된다는 문제가 있다.
해당 라인이 HeartBeat 일경우는 문제가 커짐.

– Are Crossover Cables supported for Red Hat High Availability cluster interconnect?
Link : https://access.redhat.com/solutions/151203