차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

pacemaker_with_rhel7_part_09_-_define_the_resource_behaviour [2017/03/17 17:06] (현재)
koov 만듦
줄 1: 줄 1:
 +====== 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 클러스터에는 클러스터 작업을하기 전에 이해해야 할 측면 / 주요 요소가 있습니다. 그렇지 않으면 서비스에 불필요한 중단 / 중단이 발생할 수 있습니다. 가장 중요한 요소는 선호 리소스 위치 설정, 종속성 정의 순서, 리소스 실패 카운트, 리소스 고정, 복제, 복제 / 마스터 / 슬레이브,​ 승격 / 강등 등입니다. 기사를 살펴보고 클러스터 작동에 이러한 요소가 어떻게 기여하는지 이해합니다.
 +
 +===== 클러스터 상태 =====
 +
 +<WRAP prewrap>
 +<code bash>
 +[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 ~]#
 +</​code>​
 +</​WRAP>​
 +
 +
 +===== 기본 자원 위치 =====
 +
 +Pacaemaker / corosync는 리소스가 선호하는 위치를 선택할 수 있도록합니다. ''​pcs constraint''​명령을 사용하여 원하는 위치를 정의 할 수 있습니다. 여기서 우리는 점수가 50 인 UA-HA로서 "​UAKVM2"​ 리소스의 선호 노드를 암시하고 있습니다. 여기서 점수는 리소스를 어딘지에서 실행하는 것이 얼마나 좋을지를 나타냅니다.
 +
 +
 +<WRAP prewrap>
 +<code bash>
 +[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 ~]#
 +</​code>​
 +</​WRAP>​
 +
 + 
 +
 +점수를 지정하지 않으면 리소스가 UA-HA에서 항상 실행되는 것을 선호합니다. 기본 점수는 ''​INFINITY''​입니다.
 +
 + 
 +<WRAP center round info 60%>
 +PCS 맨 페이지에서,​
 +<WRAP prewrap>
 +<code bash>
 +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)
 +</​code>​
 +</​WRAP>​
 +</​WRAP>​
 +
 +위치 제한 조건을 사용하면 특정 노드가 특정 리소스를 실행하지 않도록 할 수 있습니다.
 +
 +<WRAP prewrap>
 +<code bash>
 +[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 ~]#
 +</​code>​
 +</​WRAP>​
 +
 + 
 +
 +제약 조건 ID를 사용하여 언제든지 위치 제약 조건을 제거 할 수 있습니다.
 +
 +제약 id를 얻으려면 "​-full"​옵션을 사용하십시오.
 +
 +<WRAP prewrap>
 +<code bash>
 +[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 ~]#
 +</​code>​
 +</​WRAP>​
 +
 + 
 +
 +우리가 만든 제약 조건을 제거하십시오.
 +
 +<WRAP prewrap>
 +<code bash>
 +[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 ~]#
 +</​code>​
 +</​WRAP>​
 +
 + 
 +<WRAP center round box 90%>
 +제약 조건을 정의 할 때 점수도 처리해야합니다. 모든 종류의 점수는 클러스터가 작동하는 방법에 필수적입니다. 실제로 리소스 마이그레이션에서 성능이 저하 된 클러스터에서 중지 할 리소스를 결정할 때까지 어떤 식 으로든 점수를 조작하여 모든 것을 얻을 수 있습니다. 점수는 리소스별로 계산되며 리소스에 대해 부정적인 점수를 가진 노드는 해당 리소스를 실행할 수 없습니다. 리소스에 대한 점수를 계산 한 후 클러스터는 가장 높은 점수를 갖는 노드를 선택합니다. INFINITY는 현재 1,000,000 개로 정의됩니다. 추가 또는 뺄셈은 다음 세 가지 기본 규칙을 따른다.
 +모든 값 + INFINITY = INFINITY
 +
 +모든 값 - INFINITY = -INFINITY
 +
 +INFINITY - INFINITY = -INFINITY
 +
 +리소스 제한 조건을 정의 할 때 각 제한 조건에 대해 점수를 지정하십시오. 점수는 이 리소스 제한에 지정하는 값을 나타냅니다. 점수가 높은 제약 조건은 점수가 낮은 제약 조건보다 먼저 적용됩니다. 주어진 리소스에 대해 다른 점수로 추가 위치 제한 조건을 작성하면 리소스가 장애 조치 될 노드의 순서를 지정할 수 있습니다.
 +</​WRAP>​
 +
 +===== 리소스 순서 : (자원 종속성 정의) =====
 +
 +리소스 그룹을 사용하지 않는 경우 리소스 순서를 정의해야합니다. 대부분의 경우 리소스는 순차적으로 시작해야합니다. 예를 들어, 볼륨 그룹 리소스보다 파일 시스템 리소스를 먼저 시작할 수 없습니다. IP 리소스는 Apache 리소스를 시작하기 전에 온라인 상태 여야합니다.
 +
 +리소스 그룹이 없고 다음 리소스가 클러스터에 구성되어 있다고 가정 해 보겠습니다.
 +
 +<WRAP prewrap>
 +<code bash>
 +[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
 +</​code>​
 +</​WRAP>​
 + 
 +
 +이 시점에서 제약 조건은 구성되어 있지 않습니다.
 +
 +<WRAP prewrap>
 +<code bash>
 +[root@UA-HA ~]# pcs constraint
 +Location Constraints:​
 +Ordering Constraints:​
 +Colocation Constraints:​
 +[root@UA-HA ~]#
 +</​code>​
 +</​WRAP>​
 +
 + 
 +
 +리소스 순서 계획 :
 +
 +  - 볼륨 그룹 (LVM) - vgres
 +  - 파일 시스템 - webvolfs (웹 사이트 데이터를 저장하기 위해)
 +  - IP 주소 - 클러스터 IP (웹 사이트에 액세스하려면)
 +  - 아파치 - webres (웹 서비스를 제공하기 위해)
 +
 +
 +위의 리소스 순서대로 적용하려면 다음 명령 세트를 사용하십시오.
 +
 +<WRAP prewrap>
 +<code bash>
 +[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 ~]#
 +</​code>​
 +</​WRAP>​
 +
 +리소스 종속성을 성공적으로 구성했습니다.
 +
 + 
 +
 +==== 리소스 종속성을 제거하려면 다음 명령 집합을 사용하십시오. ====
 + 
 +1. id가있는 제약 조건을 나열하십시오.
 +
 +<WRAP prewrap>
 +<code bash>
 +[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 ~]#
 +</​code>​
 +</​WRAP>​
 +
 +2. 다음 명령을 사용하여 순서 제한 조건을 제거하십시오.
 +
 +<WRAP prewrap>
 +<code bash>
 +[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 ~]#
 +</​code>​
 +</​WRAP>​
 +
 +<WRAP center round box 90%>
 +리소스 그룹이없는 경우 리소스 순서 제한 조건을 구성해야합니다. 리소스 그룹이있는 경우 리소스 순서를 지정하고 수동 작업을 줄입니다.
 +</​WRAP>​
 + 
 +===== 리소스 실패 횟수 및 마이그레이션 임계 값 =====
 +
 +마이그레이션 임계 값은 실패한 리소스가 실행중인 노드에서 시작하려고 시도해야하는 횟수를 정의합니다. 예를 들어, 리소스에 대해 ''​migration-threshold=2''​를 정의하면,​ 2 개의 실패 후에 자동으로 새 노드로 마이그레이션됩니다.
 +
 +마이그레이션 임계 값을 설정하려면 다음 명령을 사용하십시오.
 +
 +<WRAP prewrap>
 +<code bash>
 +[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 ~]#
 +</​code>​
 +</​WRAP>​
 +
 +구성된 실패 임계 값에 도달하면 리소스 실패 횟수가 재생됩니다. 실행중인 노드에서이 리소스가 실패하면 동일한 노드에서 4 번 리소스를 시작하려고 시도합니다. 여전히 실패하면 구성 가능한 제한 조건에 따라 사용 가능한 다음 노드로 리소스를 이동시킵니다.
 +
 +==== 실패 횟수를 보려면 다음 명령 중 하나를 사용하십시오. ====
 +
 +
 +<WRAP prewrap>
 +<code bash>
 +[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 ~]# 
 +</​code>​
 +</​WRAP>​
 + 
 + 
 +
 +==== 실패 횟수를 수동으로 재설정 하시겠습니까?​ ====
 +
 +
 +<WRAP prewrap>
 +<code bash>
 +[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 ~]#
 +</​code>​
 +</​WRAP>​
 +
 +또는
 +
 +<WRAP prewrap>
 +<code bash>
 +[root@UA-HA ~]# pcs resource failcount reset UAKVM2_res UA
 +</​code>​
 +</​WRAP>​
 +
 + 
 +
 +리소스 실패 횟수를 다시 확인하십시오.
 +
 +<WRAP prewrap>
 +<code bash>
 +[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 ~]#
 +</​code>​
 +</​WRAP>​
 +
 + 
 +
 +===== 리소스 고착성 Resource-Stickiness =====
 +
 +어떤 경우에는 정상적인 리소스가 클러스터에서 이동하는 것을 방지하는 것이 좋습니다. 리소스 이동시에는 거의 항상 가동 중지 시간이 필요합니다. 오라클 데이터베이스와 같은 복잡한 서비스의 경우이 시간이 길어질 수 있습니다. 이 문제를 해결하기 위해 Pacemaker에는 서비스가 어디에 있느냐가 얼마나 좋아 하는지를 제어하는 ​​리소스 고착성이라는 개념이 있습니다.
 +
 +1. 리소스 상태를 확인하십시오 :
 +
 +<WRAP prewrap>
 +<code bash>
 +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
 +</​code>​
 +</​WRAP>​
 +
 + 
 +
 +2. UA-HA에서 클러스터 서비스를 중지합시다.
 +
 +<WRAP prewrap>
 +<code bash>
 +[root@UA-HA ~]# pcs cluster stop
 +Stopping Cluster (pacemaker)... Stopping Cluster (corosync)...
 +[root@UA-HA ~]#
 +</​code>​
 +</​WRAP>​
 +
 + 
 +
 +3. UAKVM2 리소스 그룹은 UA-HA2로 자동 이동해야합니다.
 +
 +<WRAP prewrap>
 +<code bash>
 +[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
 +</​code>​
 +</​WRAP>​
 +
 + 
 +
 +4. UA-HA에서 클러스터 서비스를 시작하고 UAKVM2에서 어떤 일이 발생하는지 확인합니다.
 +
 +<WRAP prewrap>
 +<code bash>
 +[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
 +</​code>​
 +</​WRAP>​
 +
 +UAKVM2는 UA-HA 노드로 다시 이동하지만 일종의 정지 시간이 생깁니다. 리소스 스틱을 구성한 경우 리소스가 한 노드에서 다른 노드로 이동하는 것을 방지 할 수 있습니다.
 +
 +<WRAP prewrap>
 +<code bash>
 +[root@UA-HA ~]# pcs resource defaults resource-stickiness=100
 +[root@UA-HA ~]# pcs resource defaults
 +resource-stickiness:​ 100
 +[root@UA-HA ~]#
 +</​code>​
 +</​WRAP>​
 +
 +2 단계에서 4 단계까지 수행하고 차이점을 확인하십시오. UAVM2는 UA-HA2에서 실행 중이어야합니다.
 +
 + 
 +
 +===== colocation =====
 +
 +하나의 리소스 위치가 다른 리소스의 위치에 의존 할 때, 이것을 ''​colocation''​이라고 합니다. 나는 당신이 리소스 그룹을 사용하지 않을 때 필요한 colocaiton과 리소스 순서를 알려 드립니다.
 +
 +볼륨 그룹 리소스 및 파일 시스템 리소스를 구성했다고 가정합니다. 리소스 순서를 먼저 구성해야합니다. 그러나 클러스터는 하나의 노드에서 볼륨 그룹 리소스를 시작하고 다른 노드에서 파일 시스템 리소스를 시작하려고 시도 할 수 있습니다. 이러한 경우, 볼륨 그룹 리소스를 실행중인 노드를 파일 시스템 리소스를 실행하는 클러스터에 알려야합니다.
 +
 +우리가 vgres (LVM VG)와 webvolfs (파일 시스템) 사이의 위치를 ​​어떻게 구성 할 수 있는지 살펴 보겠습니다.
 +
 +<WRAP prewrap>
 +<code bash>
 +[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 ~]#
 +</​code>​
 +</​WRAP>​
 +
 +우리는 vgres와 webvolf 사이에 colocation 매개 변수를 성공적으로 설정했습니다. 이 경우 webvolfs 리소스가 vgres를 따릅니다.
 +
 +
  
  • pacemaker_with_rhel7_part_09_-_define_the_resource_behaviour.txt
  • 마지막으로 수정됨: 2017/03/17 17:06
  • 저자 koov