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) - 2
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
'리눅스 > Pacemaker(HA Cluster)' 카테고리의 다른 글
[HA] STONITH - fence device 별 stonith-timeout 설정 (0) | 2024.10.08 |
---|---|
[HA] SBD Fencing Device 설정 (0) | 2024.10.07 |
[HA] Pacemaker Cluster (CentOS7, KVM, pacemaker) - 4 (0) | 2024.04.17 |
[HA] Pacemaker Cluster (CentOS7, KVM, pacemaker) - 2 (0) | 2024.04.04 |
[HA] Pacemaker Cluster (CentOS7, KVM, pacemaker) - 1 (0) | 2023.08.29 |