리눅스/Pacemaker(HA Cluster)

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

ㅎㄷㄹㅁㅇ 2024. 4. 5. 09:23
반응형

Pacemaker 구성 3

 

목차

     

    Pacemaker Resource

    Pacemaker 클러스터를 사용하는 목적은 이중화에 있습니다. HA, Loadbalance 등의 목적으로 등록된 리소스(서비스) 를 목적에 맞게 고가용성으로 사용하는 것을 목적으로 합니다. 클러스터에 등록되는 리소스는 규격에 맞게 작성된 스크립트의 형태로 동작 할 수도 있고, 사용자가 직접 스크립트를 작성해서 사용 할 수도 있습니다. 

     

    리소스 에이전트는 리소를 관리하는 도구입니다. 리소스를 start/stop/monitoring을 진행합니다. Pacemaker 데몬에 포함되어 있으며, 스크립트의 형태로 동작합니다. 위에서 언급했듯이 규격에 맞게 이미 제공된 스크립트 들이 존재합니다. 

     

    기존에 제공되는 표준과 서비스는 아래와 같이 확인이 가능합니다. 

     

    - 스크립트 디렉토리
    # ll /usr/lib/ocf/resource.d/
    
    - 사용 가능한 모든 리소스 목록을 표시합니다.
    # pcs resource list 
    
    - 사용 가능한 리소스 에이전트 표준 목록을 표시합니다.
    # pcs resource standards
    
    - 사용 가능한 리소스 에이전트 공급자 목록을 표시합니다.
    # pcs resource providers
    
    - 리로스 정보 확인
    # pcs resource describe ocf:heartbeat:apache

     

     

    Resource Agent(RA) 표준

    아래는 에이전트가 사용하는 표준입니다. 

     

    * OCF - Open Cluster Framework Resource Agent API를 준수하고 /usr/lib/ocf/resource.d/공급자아래에 있는 실행 파일의 이름입니다.

    * LSB - Linux 표준 기본 Init 스크립트 작업을 따르는 실행 파일의 이름입니다. 유형이 전체 경로를 지정하지 않으면 시스템은 /etc/init.d 디렉터리에서 시스템을 찾습니다.

    * systemd - 설치된 systemd 장치의 이름입니다.

    * service - Pacemaker는 지정된 유형 을 먼저 lsb 에이전트로 검색한 다음 systemd 에이전트로 검색합니다.

    * rsh - /usr/share/nagios/plugins 디렉터리에 있으며 /usr/libexec/nagios/plugins 디렉터리에 있는 실행 파일의 이름입니다. /OCF 스타일 메타데이터는 /usr/share/nagios/plugins-metadata 디렉터리에 별도로 저장됩니다(일반 플러그인의 경우 nagios -agents-metadata 패키지에 사용 가능).

     

     

     

    Pacemaker 리소스 등록

    리소스 관련 옵션 설정

    # pcs resource defaults migration-threshold=1
    # pcs resource defaults resource-stickiness=1000
    # pcs resource defaults failure-timeout=30s
    # pcs resource defaults

     

    migration-threshold : fail의 기준값을 두고 리소스의 fail로 인해 failcount가 증가하게 된다면 해당 리소스 or 그룹을 절체 한다. ping 등의 리소스 사용 시 node Attribute 값을 설정해줍니다. 예를 들어 ping clone 설정 및 location rule 사용 시 (rule score=-INFINITY vip2 lt 1 or not_defined vip2) migration-threshold을 1로 설정했을 때 vip가 통신불가 상태로 변경 시 node Attribute가 0으로 감소하면 rule을 만족하여 score가 변경되며 이러한 방법 등으로 활용가능합니다.

     

    resource-stickness : 자원의 이동에는 대부분 가동중지 시간이 필요하며, DB 리소스처럼 복잡한 서비스는 이 시간이 길어질 수 있습니다. 이 문제를 해결하기위해서 pacemaker에서 제공하는 개념이 리소스 stickness. 기본값은 0 이지만, 이 숫자를 늘려 서비스가 이동하는 것을 제어할 수 있습니다. stickness 값이 노드 별로 가중치를 두어 리소스가 이동합니다.

     

    failure-timeout :리소스 fail이 발생한 후 설정된 시간이 지난 후 자동으로 fail-count가 초기화됩니다. fail-count가 초기화 되지 않고 error log가 pcs status 정보에 남아있는 경우 리소스 절체가 이루어지지 않습니다. 

     

     

    리소스 추가

    추가 할 리소스는 표준화된 방식으로 사용하는 것이 좋습니다. 규격에 맞게 사용하면 타 사이트나 서비스군에 적용하기 쉽습니다. 또한 범용성이 넓어져 서비스가 다른 곳으로 이관되어도 유지보수 사용자에 의해 만들어진 스크립트 보다 쉽다는 장점이 있습니다.   

     

    테스트를 위해서 vip 리소스를 추가 해보겠습니다. 

    # pcs resource create vip ocf:heartbeat:IPaddr2 cidr_netmask=24 ip=192.168.122.186 nic=eth0 --group test_svc
    # pcs resource create vip_ping ocf:pacemaker:ping debug=1 host_list=192.168.122.1 name=vip1 timeout=6
    # pcs resource clone vip_ping
    더보기

    - Constraint 추가 설정 

    # pcs constraint location test_svc prefers c77_ha01.hb=200
    # pcs constraint location test_svc prefers c77_ha02.hb=0
    # pcs constraint location TEST_vip rule score=-INFINITY vip1 lt 1 or not_defined vip1

     

    리소스 삭제

    # pcs resource delete vip_ping
    # pcs resource delete vip

     

     

    • pcs status로 확인
    # pcs status
    Cluster name: ha_cluster
    Stack: corosync
    Current DC: c77_ha01.hb (version 1.1.20-5.el7-3c4c782f70) - partition with quorum
    Last updated: Fri Apr  5 14:44:49 2024
    Last change: Fri Apr  5 14:39:42 2024 by root via cibadmin on c77_ha01.hb
    
    2 nodes configured
    5 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
     Resource Group: test_svc
         vip	(ocf::heartbeat:IPaddr2):	Started c77_ha01.hb
     Clone Set: vip_ping-clone [vip_ping]
         Started: [ c77_ha01.hb c77_ha02.hb ]
    
    Daemon Status:
      corosync: active/disabled
      pacemaker: active/disabled
      pcsd: active/enabled

     

    •  IP 정보 확인
    # ip -f inet -o addr
    1: lo    inet 127.0.0.1/8 scope host lo\       valid_lft forever preferred_lft forever
    2: eth0    inet 192.168.122.184/24 brd 192.168.122.255 scope global noprefixroute eth0\       valid_lft forever preferred_lft forever
    2: eth0    inet 192.168.122.186/24 brd 192.168.122.255 scope global secondary eth0\       valid_lft forever preferred_lft forever
    3: eth1    inet 200.200.10.184/24 brd 200.200.10.255 scope global noprefixroute eth1\       valid_lft forever preferred_lft forever
    4: eth2    inet 200.200.20.184/24 brd 200.200.20.255 scope global noprefixroute eth2\       valid_lft forever preferred_lft forever

     

    • pcs config show 정보를 통해 현재 설정되어 있는 리소스 보기
    # pcs config show
    Cluster Name: ha_cluster
    Corosync Nodes:
     c77_ha01.hb c77_ha02.hb
    Pacemaker Nodes:
     c77_ha01.hb c77_ha02.hb
    
    Resources:
     Group: test_svc
      Resource: vip (class=ocf provider=heartbeat type=IPaddr2)
       Attributes: cidr_netmask=24 ip=192.168.122.186 nic=eth0
       Operations: monitor interval=10s timeout=20s (vip-monitor-interval-10s)
                   start interval=0s timeout=20s (vip-start-interval-0s)
                   stop interval=0s timeout=20s (vip-stop-interval-0s)
     Clone: vip_ping-clone
      Resource: vip_ping (class=ocf provider=pacemaker type=ping)
       Attributes: debug=1 host_list=192.168.122.1 name=vip1 timeout=6
       Operations: monitor interval=10 timeout=60 (vip_ping-monitor-interval-10)
                   start interval=0s timeout=60 (vip_ping-start-interval-0s)
                   stop interval=0s timeout=20 (vip_ping-stop-interval-0s)
    
    Stonith Devices:
     Resource: ipmifence1 (class=stonith type=fence_ipmilan)
      Attributes: auth=password ipaddr=200.200.20.1 ipport=631 lanplus=1 login=admin passwd=password pcmk_host_list=c77_ha01.hb
      Operations: monitor interval=60s (ipmifence1-monitor-interval-60s)
     Resource: ipmifence2 (class=stonith type=fence_ipmilan)
      Attributes: auth=password ipaddr=200.200.20.1 ipport=632 lanplus=1 login=admin passwd=password pcmk_host_list=c77_ha02.hb
      Operations: monitor interval=60s (ipmifence2-monitor-interval-60s)
    Fencing Levels:
    
    Location Constraints:
      Resource: vip
        Constraint: location-vip
          Rule: boolean-op=or score=-INFINITY  (id:location-vip-rule)
            Expression: vip1 lt 1  (id:location-vip-rule-expr)
            Expression: not_defined vip1  (id:location-vip-rule-expr-1)
    Ordering Constraints:
    Colocation Constraints:
    Ticket Constraints:
    
    Alerts:
     No alerts defined
    
    Resources Defaults:
     failure-timeout=30s
     migration-threshold=1
     resource-stickiness=1000
    Operations Defaults:
     No defaults set
    
    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
    
    Quorum:
      Options:

     

     

    VIP 리소스를 추가했습니다. 접은 글을 보시면 Constraints 부분이 추가 된 것을 확인 하실 수 있습니다. 이 부분은 Pacemaker의 제약조건의 부분으로 서비스가 시작되는 노드나, 리소스의 의존성 같은 부분을 설정 할 수 있습니다. "A 리소스가 Start 되어야 B 리소가 Start 된다." 같은 설정도 추가 할 수 있습니다. 다음 글은 제약 조건에 대해서 작성해보도록 하겠습니다. 

     

     

     

     

     

    이전 글 보기

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

     

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

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

    handari.tistory.com

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

     

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

    더보기 Pacemaker 구성 2 목차 STONITH란? STONITH는 "Shoot The Other Node In The Head"의 약자로 고가용성 컴퓨팅 및 클러스터에서 사용됩니다. 클러스터 컴퓨팅 환경에서 노드(서버)가 오작동하거나 응답하지

    handari.tistory.com

    Ref.

    http://www.chlux.co.kr/bbs/board.php?bo_table=board02&wr_id=132&sca=OS
    https://yoanp.github.io/blog/pcs%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-ha%EA%B5%AC%EC%84%B1/
    https://access.redhat.com/documentation/ko-kr/red_hat_enterprise_linux/9/html/configuring_and_managing_high_availability_clusters/ref_interpreting-resource-exit-codes-configuring-and-managing-high-availability-clusters

    반응형
    TOP