리눅스/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