Pacemaker With RHEL7 Part 09 - Define the Resource Behaviour
원본출처 : http://www.unixarena.com/2016/01/rhel-7-pacemaker-define-the-resource-behaviour.html
Pacemaker / Corosync 클러스터에는 클러스터 작업을하기 전에 이해해야 할 측면 / 주요 요소가 있습니다. 그렇지 않으면 서비스에 불필요한 중단 / 중단이 발생할 수 있습니다. 가장 중요한 요소는 선호 리소스 위치 설정, 종속성 정의 순서, 리소스 실패 카운트, 리소스 고정, 복제, 복제 / 마스터 / 슬레이브, 승격 / 강등 등입니다. 기사를 살펴보고 클러스터 작동에 이러한 요소가 어떻게 기여하는지 이해합니다.
클러스터 상태
[root@UA-HA ~]# pcs status Cluster name: UABLR Last updated: Sat Oct 17 19:44:40 2015 Last change: Sun Jan 10 14:18:25 2016 by root via crm_resource on UA-HA2 Stack: corosync Current DC: UA-HA2 (version 1.1.13-10.el7-44eb2dd) - partition with quorum 2 nodes and 5 resources configured Online: [ UA-HA UA-HA2 ] Full list of resources: Resource Group: WEBRG1 vgres (ocf::heartbeat:LVM): Started UA-HA webvolfs (ocf::heartbeat:Filesystem): Started UA-HA ClusterIP (ocf::heartbeat:IPaddr2): Started UA-HA webres (ocf::heartbeat:apache): Started UA-HA Resource Group: UAKVM2 UAKVM2_res (ocf::heartbeat:VirtualDomain): Started UA-HA PCSD Status: UA-HA: Online UA-HA2: Online Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled [root@UA-HA ~]#
기본 자원 위치
Pacaemaker / corosync는 리소스가 선호하는 위치를 선택할 수 있도록합니다. pcs constraint
명령을 사용하여 원하는 위치를 정의 할 수 있습니다. 여기서 우리는 점수가 50 인 UA-HA로서 “UAKVM2” 리소스의 선호 노드를 암시하고 있습니다. 여기서 점수는 리소스를 어딘지에서 실행하는 것이 얼마나 좋을지를 나타냅니다.
[root@UA-HA ~]# pcs constraint location UAKVM2 prefers UA-HA=50 [root@UA-HA ~]# pcs constraint Location Constraints: Resource: UAKVM2 Enabled on: UA-HA (score:50) Ordering Constraints: Colocation Constraints: [root@UA-HA ~]# pcs resource Resource Group: WEBRG1 vgres (ocf::heartbeat:LVM): Started UA-HA webvolfs (ocf::heartbeat:Filesystem): Started UA-HA ClusterIP (ocf::heartbeat:IPaddr2): Started UA-HA webres (ocf::heartbeat:apache): Started UA-HA Resource Group: UAKVM2 UAKVM2_res (ocf::heartbeat:VirtualDomain): Started UA-HA [root@UA-HA ~]#
점수를 지정하지 않으면 리소스가 UA-HA에서 항상 실행되는 것을 선호합니다. 기본 점수는 INFINITY
입니다.
PCS 맨 페이지에서,
location <resource id> prefers <node[=score]>... Create a location constraint on a resource to prefer the specified node and score (default score: INFINITY) location <resource id> avoids <node[=score]>... Create a location constraint on a resource to avoid the specified node and score (default score: INFINITY)
위치 제한 조건을 사용하면 특정 노드가 특정 리소스를 실행하지 않도록 할 수 있습니다.
[root@UA-HA ~]# pcs constraint location UAKVM2 avoids UA-HA2=50 [root@UA-HA ~]# pcs constraint Location Constraints: Resource: UAKVM2 Enabled on: UA-HA (score:50) Disabled on: UA-HA2 (score:-50) Ordering Constraints: Colocation Constraints: [root@UA-HA ~]#
제약 조건 ID를 사용하여 언제든지 위치 제약 조건을 제거 할 수 있습니다.
제약 id를 얻으려면 “-full”옵션을 사용하십시오.
[root@UA-HA ~]# pcs constraint --full Location Constraints: Resource: UAKVM2 Enabled on: UA-HA (score:50) (id:location-UAKVM2-UA-HA-50) Disabled on: UA-HA2 (score:-50) (id:location-UAKVM2-UA-HA2--50) Ordering Constraints: Colocation Constraints: [root@UA-HA ~]#
우리가 만든 제약 조건을 제거하십시오.
[root@UA-HA ~]# pcs constraint location remove location-UAKVM2-UA-HA-50 [root@UA-HA ~]# pcs constraint location remove location-UAKVM2-UA-HA2--50 [root@UA-HA ~]# pcs constraint Location Constraints: Ordering Constraints: Colocation Constraints: [root@UA-HA ~]#
제약 조건을 정의 할 때 점수도 처리해야합니다. 모든 종류의 점수는 클러스터가 작동하는 방법에 필수적입니다. 실제로 리소스 마이그레이션에서 성능이 저하 된 클러스터에서 중지 할 리소스를 결정할 때까지 어떤 식 으로든 점수를 조작하여 모든 것을 얻을 수 있습니다. 점수는 리소스별로 계산되며 리소스에 대해 부정적인 점수를 가진 노드는 해당 리소스를 실행할 수 없습니다. 리소스에 대한 점수를 계산 한 후 클러스터는 가장 높은 점수를 갖는 노드를 선택합니다. INFINITY는 현재 1,000,000 개로 정의됩니다. 추가 또는 뺄셈은 다음 세 가지 기본 규칙을 따른다.
모든 값 + INFINITY = INFINITY
모든 값 - INFINITY = -INFINITY
INFINITY - INFINITY = -INFINITY
리소스 제한 조건을 정의 할 때 각 제한 조건에 대해 점수를 지정하십시오. 점수는 이 리소스 제한에 지정하는 값을 나타냅니다. 점수가 높은 제약 조건은 점수가 낮은 제약 조건보다 먼저 적용됩니다. 주어진 리소스에 대해 다른 점수로 추가 위치 제한 조건을 작성하면 리소스가 장애 조치 될 노드의 순서를 지정할 수 있습니다.
리소스 순서 : (자원 종속성 정의)
리소스 그룹을 사용하지 않는 경우 리소스 순서를 정의해야합니다. 대부분의 경우 리소스는 순차적으로 시작해야합니다. 예를 들어, 볼륨 그룹 리소스보다 파일 시스템 리소스를 먼저 시작할 수 없습니다. IP 리소스는 Apache 리소스를 시작하기 전에 온라인 상태 여야합니다.
리소스 그룹이 없고 다음 리소스가 클러스터에 구성되어 있다고 가정 해 보겠습니다.
[root@UA-HA ~]# pcs resource vgres (ocf::heartbeat:LVM): Started UA-HA2 webvolfs (ocf::heartbeat:Filesystem): Started UA-HA2 ClusterIP (ocf::heartbeat:IPaddr2): Started UA-HA2 webres (ocf::heartbeat:apache): Started UA-HA2
이 시점에서 제약 조건은 구성되어 있지 않습니다.
[root@UA-HA ~]# pcs constraint Location Constraints: Ordering Constraints: Colocation Constraints: [root@UA-HA ~]#
리소스 순서 계획 :
- 볼륨 그룹 (LVM) - vgres
- 파일 시스템 - webvolfs (웹 사이트 데이터를 저장하기 위해)
- IP 주소 - 클러스터 IP (웹 사이트에 액세스하려면)
- 아파치 - webres (웹 서비스를 제공하기 위해)
위의 리소스 순서대로 적용하려면 다음 명령 세트를 사용하십시오.
[root@UA-HA ~]# pcs constraint order vgres then webvolfs Adding vgres webvolfs (kind: Mandatory) (Options: first-action=start then-action=start) [root@UA-HA ~]# pcs constraint order webvolfs then ClusterIP Adding webvolfs ClusterIP (kind: Mandatory) (Options: first-action=start then-action=start) [root@UA-HA ~]# pcs constraint order ClusterIP then webres Adding ClusterIP webres (kind: Mandatory) (Options: first-action=start then-action=start) [root@UA-HA ~]# pcs constraint Location Constraints: Ordering Constraints: start vgres then start webvolfs (kind:Mandatory) start webvolfs then start ClusterIP (kind:Mandatory) start ClusterIP then start webres (kind:Mandatory) Colocation Constraints: [root@UA-HA ~]#
리소스 종속성을 성공적으로 구성했습니다.
리소스 종속성을 제거하려면 다음 명령 집합을 사용하십시오.
1. id가있는 제약 조건을 나열하십시오.
[root@UA-HA ~]# pcs constraint --full Location Constraints: Ordering Constraints: start vgres then start webvolfs (kind:Mandatory) (id:order-vgres-webvolfs-mandatory) start webvolfs then start ClusterIP (kind:Mandatory) (id:order-webvolfs-ClusterIP-mandatory) start ClusterIP then start webres (kind:Mandatory) (id:order-ClusterIP-webres-mandatory) Colocation Constraints: [root@UA-HA ~]#
2. 다음 명령을 사용하여 순서 제한 조건을 제거하십시오.
[root@UA-HA ~]# pcs constraint order remove vgres order-vgres-webvolfs-mandatory [root@UA-HA ~]# pcs constraint order remove webvolfs order-webvolfs-ClusterIP-mandatory [root@UA-HA ~]# pcs constraint order remove ClusterIP order-ClusterIP-webres-mandatory [root@UA-HA ~]# pcs constraint --full Location Constraints: Ordering Constraints: Colocation Constraints: [root@UA-HA ~]#
리소스 그룹이없는 경우 리소스 순서 제한 조건을 구성해야합니다. 리소스 그룹이있는 경우 리소스 순서를 지정하고 수동 작업을 줄입니다.
리소스 실패 횟수 및 마이그레이션 임계 값
마이그레이션 임계 값은 실패한 리소스가 실행중인 노드에서 시작하려고 시도해야하는 횟수를 정의합니다. 예를 들어, 리소스에 대해 migration-threshold=2
를 정의하면, 2 개의 실패 후에 자동으로 새 노드로 마이그레이션됩니다.
마이그레이션 임계 값을 설정하려면 다음 명령을 사용하십시오.
[root@UA-HA ~]# pcs resource update UAKVM2_res meta migration-threshold="4" [root@UA-HA ~]# pcs resource show UAKVM2_res Resource: UAKVM2_res (class=ocf provider=heartbeat type=VirtualDomain) Attributes: hypervisor=qemu:///system config=/kvmpool/qemu_config/UAKVM2.xml migration_transport=ssh Meta Attrs: allow-migrate=true priority=100 migration-threshold=4 Operations: start interval=0s timeout=120s (UAKVM2_res-start-interval-0s) stop interval=0s timeout=120s (UAKVM2_res-stop-interval-0s) monitor interval=10 timeout=30 (UAKVM2_res-monitor-interval-10) migrate_from interval=0 timeout=120s (UAKVM2_res-migrate_from-interval-0) migrate_to interval=0 timeout=120 (UAKVM2_res-migrate_to-interval-0) [root@UA-HA ~]#
구성된 실패 임계 값에 도달하면 리소스 실패 횟수가 재생됩니다. 실행중인 노드에서이 리소스가 실패하면 동일한 노드에서 4 번 리소스를 시작하려고 시도합니다. 여전히 실패하면 구성 가능한 제한 조건에 따라 사용 가능한 다음 노드로 리소스를 이동시킵니다.
실패 횟수를 보려면 다음 명령 중 하나를 사용하십시오.
[root@UA-HA ~]# pcs resource failcount show UAKVM2_res Failcounts for UAKVM2_res UA-HA: 1 [root@UA-HA ~]# crm_failcount -r UAKVM2_res scope=status name=fail-count-UAKVM2_res value=1 [root@UA-HA ~]#
실패 횟수를 수동으로 재설정 하시겠습니까?
[root@UA-HA ~]# pcs resource cleanup UAKVM2_res Waiting for 2 replies from the CRMd.. OK Cleaning up UAKVM2_res on UA-HA, removing fail-count-UAKVM2_res Cleaning up UAKVM2_res on UA-HA2, removing fail-count-UAKVM2_res [root@UA-HA ~]#
또는
[root@UA-HA ~]# pcs resource failcount reset UAKVM2_res UA
리소스 실패 횟수를 다시 확인하십시오.
[root@UA-HA ~]# crm_failcount --r UAKVM2_res scope=status name=fail-count-UAKVM2_res value=0 [root@UA-HA ~]# [root@UA-HA ~]# pcs resource failcount show UAKVM2_res No failcounts for UAKVM2_res [root@UA-HA ~]#
리소스 고착성 Resource-Stickiness
어떤 경우에는 정상적인 리소스가 클러스터에서 이동하는 것을 방지하는 것이 좋습니다. 리소스 이동시에는 거의 항상 가동 중지 시간이 필요합니다. 오라클 데이터베이스와 같은 복잡한 서비스의 경우이 시간이 길어질 수 있습니다. 이 문제를 해결하기 위해 Pacemaker에는 서비스가 어디에 있느냐가 얼마나 좋아 하는지를 제어하는 리소스 고착성이라는 개념이 있습니다.
1. 리소스 상태를 확인하십시오 :
Full list of resources: Resource Group: WEBRG1 vgres (ocf::heartbeat:LVM): Started UA-HA2 webvolfs (ocf::heartbeat:Filesystem): Started UA-HA2 ClusterIP (ocf::heartbeat:IPaddr2): Started UA-HA2 webres (ocf::heartbeat:apache): Started UA-HA2 Resource Group: UAKVM2 UAKVM2_res (ocf::heartbeat:VirtualDomain): Started UA-HA
2. UA-HA에서 클러스터 서비스를 중지합시다.
[root@UA-HA ~]# pcs cluster stop Stopping Cluster (pacemaker)... Stopping Cluster (corosync)... [root@UA-HA ~]#
3. UAKVM2 리소스 그룹은 UA-HA2로 자동 이동해야합니다.
[root@UA-HA ~]# ssh UA-HA2 pcs status Cluster name: UABLR Last updated: Mon Jan 11 05:30:25 2016 Last change: Mon Jan 11 05:29:44 2016 by root via crm_attribute on UA-HA Stack: corosync Current DC: UA-HA2 (version 1.1.13-10.el7-44eb2dd) - partition with quorum 2 nodes and 5 resources configured Online: [ UA-HA2 ] OFFLINE: [ UA-HA ] Full list of resources: Resource Group: WEBRG1 vgres (ocf::heartbeat:LVM): Started UA-HA2 webvolfs (ocf::heartbeat:Filesystem): Started UA-HA2 ClusterIP (ocf::heartbeat:IPaddr2): Started UA-HA2 webres (ocf::heartbeat:apache): Started UA-HA2 Resource Group: UAKVM2 UAKVM2_res (ocf::heartbeat:VirtualDomain): Started UA-HA2
4. UA-HA에서 클러스터 서비스를 시작하고 UAKVM2에서 어떤 일이 발생하는지 확인합니다.
[root@UA-HA ~]# pcs cluster start Starting Cluster... [root@UA-HA ~]# ssh UA-HA2 pcs status Cluster name: UABLR Last updated: Mon Jan 11 05:30:39 2016 Last change: Mon Jan 11 05:29:44 2016 by root via crm_attribute on UA-HA Stack: corosync Current DC: UA-HA2 (version 1.1.13-10.el7-44eb2dd) - partition with quorum 2 nodes and 5 resources configured Online: [ UA-HA UA-HA2 ] Full list of resources: Resource Group: WEBRG1 vgres (ocf::heartbeat:LVM): Started UA-HA2 webvolfs (ocf::heartbeat:Filesystem): Started UA-HA2 ClusterIP (ocf::heartbeat:IPaddr2): Started UA-HA2 webres (ocf::heartbeat:apache): Started UA-HA2 Resource Group: UAKVM2 UAKVM2_res (ocf::heartbeat:VirtualDomain): Started UA-HA
UAKVM2는 UA-HA 노드로 다시 이동하지만 일종의 정지 시간이 생깁니다. 리소스 스틱을 구성한 경우 리소스가 한 노드에서 다른 노드로 이동하는 것을 방지 할 수 있습니다.
[root@UA-HA ~]# pcs resource defaults resource-stickiness=100 [root@UA-HA ~]# pcs resource defaults resource-stickiness: 100 [root@UA-HA ~]#
2 단계에서 4 단계까지 수행하고 차이점을 확인하십시오. UAVM2는 UA-HA2에서 실행 중이어야합니다.
colocation
하나의 리소스 위치가 다른 리소스의 위치에 의존 할 때, 이것을 colocation
이라고 합니다. 나는 당신이 리소스 그룹을 사용하지 않을 때 필요한 colocaiton과 리소스 순서를 알려 드립니다.
볼륨 그룹 리소스 및 파일 시스템 리소스를 구성했다고 가정합니다. 리소스 순서를 먼저 구성해야합니다. 그러나 클러스터는 하나의 노드에서 볼륨 그룹 리소스를 시작하고 다른 노드에서 파일 시스템 리소스를 시작하려고 시도 할 수 있습니다. 이러한 경우, 볼륨 그룹 리소스를 실행중인 노드를 파일 시스템 리소스를 실행하는 클러스터에 알려야합니다.
우리가 vgres (LVM VG)와 webvolfs (파일 시스템) 사이의 위치를 어떻게 구성 할 수 있는지 살펴 보겠습니다.
[root@UA-HA ~]# pcs constraint colocation add vgres with webvolfs INFINITY [root@UA-HA ~]# pcs constraint Location Constraints: Ordering Constraints: Colocation Constraints: vgres with webvolfs (score:INFINITY) [root@UA-HA ~]#
우리는 vgres와 webvolf 사이에 colocation 매개 변수를 성공적으로 설정했습니다. 이 경우 webvolfs 리소스가 vgres를 따릅니다.