pacemaker_with_rhel7_part_09_-_define_the_resource_behaviour

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 ~]#

리소스 순서 계획 :

  1. 볼륨 그룹 (LVM) - vgres
  2. 파일 시스템 - webvolfs (웹 사이트 데이터를 저장하기 위해)
  3. IP 주소 - 클러스터 IP (웹 사이트에 액세스하려면)
  4. 아파치 - 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 ~]#

어떤 경우에는 정상적인 리소스가 클러스터에서 이동하는 것을 방지하는 것이 좋습니다. 리소스 이동시에는 거의 항상 가동 중지 시간이 필요합니다. 오라클 데이터베이스와 같은 복잡한 서비스의 경우이 시간이 길어질 수 있습니다. 이 문제를 해결하기 위해 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이라고 합니다. 나는 당신이 리소스 그룹을 사용하지 않을 때 필요한 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를 따릅니다.

로그인하면 댓글을 남길 수 있습니다.
  • pacemaker_with_rhel7_part_09_-_define_the_resource_behaviour.txt
  • 마지막으로 수정됨: 2019/07/09 10:38
  • 저자 koov