리눅스/Pacemaker(HA Cluster)

[HA] Pacemaker Cluster (CentOS7, KVM, pacemaker) - 2

ㅎㄷㄹㅁㅇ 2024. 4. 4. 11:15
반응형

Pacemaker 구성 2

 

목차

     

    STONITH란?

    STONITH는 "Shoot The Other Node In The Head"의 약자로 고가용성 컴퓨팅 및 클러스터에서 사용됩니다. 클러스터 컴퓨팅 환경에서 노드(서버)가 오작동하거나 응답하지 않을 경우 클러스터에서 해당 노드(서버)를 강제로 제거해 고가용성을 확보하기 위해 사용하는 기술을 말합니다.

     

    STONITH의 목적은 클러스터의 여러 노드가 자신을 기본 노드라고 믿고 실행 중인 서비스를 문제가 발생하지 않는 노드로 넘기는 것 동작을 통해 데이터 손상을 방지하는 것입니다. 해당 동작은 FenceDevice를 통해 수행합니다. 그래서 STONITH를 Fencing이라고도 합니다. 

     

    상대편 노드가 응답하지 않는다고 해서 이것이 데이터에 액세스하지 않는다는 의미는 아닙니다. 데이터의 무결성을 확신할 수 있는 유일한 방법은 STONITH를 사용하여 문제가 발생한 노드를 차단하는(죽이는) 것입니다.  다른 노드에서 데이터에 액세스할 수 있도록 허용하기 전에 노드가 실제로 오프라인인지 확인할 수 있도록 하는 것입니다.

     

     

    KVM에서 사용하는 Fence Device

    실제 운영 서버에서 클러스터를 사용하는 경우에는 가상화에서 사용하는 방식과 다른  Fencing을 사용합니다. VMware의 경우에는 fence_vmware_soap을 사용하고 Dell 서버에서는 fence_ipmilan을 통해서 사용합니다. (깊게 설명하게 되면 동작 과정이 복잡해 질 수 있으니 다른 글로 작성하겠습니다.) 

     

    KVM에서 사용 할 수 있는 Fencing device로는 fence_xvm, fence_ipmilan 등이 있으며, fence_ipmilan이 더 범용적이므로 해당 Fencing device를 통해서 구성 해보겠습니다. 

     

     

    STONITH 구성 (fence_ipmilan)

    VBMC 설치 및 실행

    VBMC는 Virtual Baseboard Management Controller의 약자입니다. 실제 베어 메탈 머신이 관리되는 방식과 유사하게 가상화 환경에서 가상의 BMC를 생성하여 IPMI 프로토콜을 사용 할 수 있도록 해주는 서비스입니다. 완전한 가상 환경에서 베어 메탈 배포를 테스트하는 데 사용할 수 있습니다.

     

    • vbmc 설치
    # yum install python-virtualbmc
    # which vbmc

     

    • vbmc 설정 
    # vbmc add [VM NAME] --port [포트정보] --address [H/B네트워크와 동일한 대역의 IP] --username [계정명] --password [패스워드]
    
    # vbmc list  
    
    # vbmc add c77_ha01 --port 631 --address 200.200.20.1 --username admin --password password
    # vbmc add c77_ha02 --port 632 --address 200.200.20.1 --username admin --password password
    # vbmc start c77_ha01
    # vbmc start c77_ha02
    
    # vbmc list | grep c77
    | c77_ha01       | running | 200.200.20.1  |  631 |
    | c77_ha02       | running | 200.200.20.1  |  632 |
    더보기

    * 위 설정에서 vbmc에 동일한 포트, 다른 IP를 할당 하는 것도 가능하나,  H/B 인터페이스에 해당 네트워크와 동일한 대역으로 추가 IP 할당이 필요하다. 

     

    • ipmi_tool 명령어를 통한 확인
    # ipmitool -I lanplus -p 631 -U admin -P password -H 200.200.20.1  power status
    Chassis Power is on
    # ipmitool -I lanplus -p 632 -U admin -P password -H 200.200.20.1  power status
    Chassis Power is on

     

     

    Pacemaker STONITH 설정

    fence_ipmilan

    ipmilan(Fence agent for IPMI over LAN)은 IPMI에 의해 제어되는 시스템에서 사용할 수있는 I/O Fencing Device(agent)입니다.

     

    • property 설정을 통한 stonith  enable 
    # pcs property show
    Cluster Properties:
     cluster-infrastructure: corosync
     cluster-name: ha_cluster
     dc-version: 1.1.20-5.el7-3c4c782f70
     have-watchdog: false
     
    # pcs property set stonith-enabled=true
    # pcs property set stonith-timeout=30s
    
    # pcs property show
    Cluster Properties:
     cluster-infrastructure: corosync
     cluster-name: ha_cluster
     dc-version: 1.1.20-5.el7-3c4c782f70
     have-watchdog: false
     stonith-enabled: true
     stonith-timeout: 30s

     

    • fence_ipmi 추가
    # pcs stonith create ipmifence1 fence_ipmilan auth=password ipaddr=200.200.20.1 ipport=631 lanplus=1 login=admin passwd=password pcmk_host_list=c77_ha01.hb
    # pcs stonith create ipmifence2 fence_ipmilan auth=password ipaddr=200.200.20.1 ipport=632 lanplus=1 login=admin passwd=password pcmk_host_list=c77_ha01.hb delay=10s
    
    # pcs stonith show
     ipmifence1	(stonith:fence_ipmilan):	Started c77_ha01.hb
     ipmifence2	(stonith:fence_ipmilan):	Started c77_ha02.hb
    더보기

    delay를 설정한 이유는 H/B 네트워크가 동시에 끊어졌다고 판단 할 경우 각 노드에서 반대편 노드로 Fencing을 수행 할 수 있기 때문에 이를 방지하기 위함입니다. 

     

    • pcs status로 확인
    # pcs status
    Cluster name: ha_cluster
    Stack: corosync
    Current DC: c77_ha02.hb (version 1.1.20-5.el7-3c4c782f70) - partition with quorum
    Last updated: Thu Apr  4 15:31:11 2024
    Last change: Thu Apr  4 15:29:29 2024 by root via cibadmin on c77_ha01.hb
    
    2 nodes configured
    2 resources configured
    
    Online: [ c77_ha01.hb c77_ha02.hb ]
    
    Full list of resources:
    
     ipmifence1	(stonith:fence_ipmilan):	Started c77_ha01.hb
     ipmifence2	(stonith:fence_ipmilan):	Started c77_ha02.hb
    
    Daemon Status:
      corosync: active/disabled
      pacemaker: active/disabled
      pcsd: active/enabled

     

     

     

    Pacemaker STONITH를 통한 fencing 수행

    리소스를 등록하지 않은 상태로 Node를 죽이는 테스트는 필요합니다. 리소스를 등록하기 전 Fencing 테스트를 충분히 한 후 리소스 등록을 진행하는 것이 좋습니다. 

     

    • 명령어를 통한 fencing 테스트 
    # pcs stonith fence c77_ha02.hb 
    Node: c77_ha02.hb fenced

     

     

    펜싱이 된 Node는 서버가 Restart 되며, 이후에 Node에서 클러스터를 시작합니다. 

    # pcs cluster start
    Starting Cluster (corosync)...
    Starting Cluster (pacemaker)...

     

     

    여기까지 Pacemaker에 Stonith, Fencing Device 등록 과정을 완료했습니다. 다음 글은 리소스 등록과 Constraint를 통한 순서 제어를 작성하겠습니다. 

     

     

    이전 글 보기

    [LINUX] Pacemaker Cluster (CentOS7, KVM, pacemaker) - 1

     

    [LINUX] Pacemaker Cluster (CentOS7, KVM, pacemaker) - 1

    Pacemaker 구성 1 목차 클러스터란 두대 이상의 서버들을 하나로 묶어서 하나의 서버로 동작하게 하는 것을 말합니다. 클러스터는 고가용성(High-availability, HA), 부하분산(load balance)등이 있습니다. 클

    handari.tistory.com

     

    Ref.

    https://atl.kr/dokuwiki/doku.php/fence_death_%EC%83%81%ED%99%A9%EC%9D%84_%EB%B0%A9%EC%A7%80%ED%95%98%EA%B8%B0_%EC%9C%84%ED%95%9C_2%EB%85%B8%EB%93%9C_%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0_%EC%84%A4%EC%A0%95

    반응형
    TOP