4.8. 펜싱 구성
펜싱 구성을 사용하면 AWS 클러스터의 노드가 자동으로 분리되므로 노드가 클러스터 리소스를 사용하거나 클러스터 기능을 손상시키지 않습니다.
여러 방법을 사용하여 AWS 클러스터에서 펜싱을 구성할 수 있습니다. 이 섹션에서는 다음을 제공합니다.
- 기본 구성에 대한 표준 절차입니다.
- 자동화에 중점을 둔 고급 구성을 위한 대체 구성 절차입니다.
표준 절차
다음 AWS 메타데이터 쿼리를 입력하여 각 노드의 인스턴스 ID를 가져옵니다. 차단 장치를 구성하려면 이러한 ID가 필요합니다. 자세한 내용은 인스턴스 메타데이터 및 사용자 데이터를 참조하십시오.
# echo $(curl -s http://169.254.169.254/latest/meta-data/instance-id)
예제:
[root@ip-10-0-0-48 ~]# echo $(curl -s http://169.254.169.254/latest/meta-data/instance-id) i-07f1ac63af0ec0ac6
다음 명령을 입력하여 펜스 장치를 구성합니다. gRPC
mk_host_map
명령을 사용하여 RHEL 호스트 이름을 인스턴스 ID에 매핑합니다. 이전에 설정한 AWS Access Key 및 AWS Secret Access Key를 사용합니다.# pcs stonith \ create <name> fence_aws access_key=access-key secret_key=<secret-access-key> \ region=<region> pcmk_host_map="rhel-hostname-1:Instance-ID-1;rhel-hostname-2:Instance-ID-2;rhel-hostname-3:Instance-ID-3" \ power_timeout=240 pcmk_reboot_timeout=480 pcmk_reboot_retries=4
예제:
[root@ip-10-0-0-48 ~]# pcs stonith \ create clusterfence fence_aws access_key=AKIAI123456MRMJA secret_key=a75EYIG4RVL3hdsdAslK7koQ8dzaDyn5yoIZ/ \ region=us-east-1 pcmk_host_map="ip-10-0-0-48:i-07f1ac63af0ec0ac6;ip-10-0-0-46:i-063fc5fe93b4167b2;ip-10-0-0-58:i-08bd39eb03a6fd2c7" \ power_timeout=240 pcmk_reboot_timeout=480 pcmk_reboot_retries=4
대체 절차
클러스터의 VPC ID를 가져옵니다.
# aws ec2 describe-vpcs --output text --filters "Name=tag:Name,Values=clustername-vpc" --query 'Vpcs[*].VpcId' vpc-06bc10ac8f6006664
클러스터의 VPC ID를 사용하여 VPC 인스턴스를 가져옵니다.
$ aws ec2 describe-instances --output text --filters "Name=vpc-id,Values=vpc-06bc10ac8f6006664" --query 'Reservations[*].Instances[*].{Name:Tags[? Key==
Name
]|[0].Value,Instance:InstanceId}' | grep "\-node[a-c]" i-0b02af8927a895137 clustername-nodea-vm i-0cceb4ba8ab743b69 clustername-nodeb-vm i-0502291ab38c762a5 clustername-nodec-vm가져온 인스턴스 ID를 사용하여 클러스터의 각 노드에서 펜싱을 구성합니다. 예를 들면 다음과 같습니다.
[root@nodea ~]# CLUSTER=clustername && pcs stonith create fence${CLUSTER} fence_aws access_key=XXXXXXXXXXXXXXXXXXXX pcmk_host_map=$(for NODE \ in node{a..c}; do ssh ${NODE} "echo -n \${HOSTNAME}:\$(curl -s http://169.254.169.254/latest/meta-data/instance-id)\;"; done) \ pcmk_reboot_retries=4 pcmk_reboot_timeout=480 power_timeout=240 region=xx-xxxx-x secret_key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [root@nodea ~]# pcs stonith config fence${CLUSTER} Resource: clustername (class=stonith type=fence_aws) Attributes: access_key=XXXXXXXXXXXXXXXXXXXX pcmk_host_map=nodea:i-0b02af8927a895137;nodeb:i-0cceb4ba8ab743b69;nodec:i-0502291ab38c762a5; pcmk_reboot_retries=4 pcmk_reboot_timeout=480 power_timeout=240 region=xx-xxxx-x secret_key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Operations: monitor interval=60s (clustername-monitor-interval-60s)
검증
클러스터 노드 중 하나에 대해 펜싱 에이전트를 테스트합니다.
# pcs stonith fence awsnodename
참고명령 응답이 표시되는 데 몇 분이 걸릴 수 있습니다. 펜싱 중인 노드의 활성 터미널 세션을 확인하는 경우 fence 명령을 입력한 후 터미널 연결이 즉시 종료되는 것을 확인할 수 있습니다.
예제:
[root@ip-10-0-0-48 ~]# pcs stonith fence ip-10-0-0-58 Node: ip-10-0-0-58 fenced
상태를 확인하여 노드가 펜싱되었는지 확인합니다.
# pcs status
예제:
[root@ip-10-0-0-48 ~]# pcs status Cluster name: newcluster Stack: corosync Current DC: ip-10-0-0-46 (version 1.1.18-11.el7-2b07d5c5a9) - partition with quorum Last updated: Fri Mar 2 19:55:41 2018 Last change: Fri Mar 2 19:24:59 2018 by root via cibadmin on ip-10-0-0-46 3 nodes configured 1 resource configured Online: [ ip-10-0-0-46 ip-10-0-0-48 ] OFFLINE: [ ip-10-0-0-58 ] Full list of resources: clusterfence (stonith:fence_aws): Started ip-10-0-0-46 Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled
이전 단계에서 차단된 노드를 시작합니다.
# pcs cluster start awshostname
상태를 확인하여 노드가 시작되었는지 확인합니다.
# pcs status
예제:
[root@ip-10-0-0-48 ~]# pcs status Cluster name: newcluster Stack: corosync Current DC: ip-10-0-0-46 (version 1.1.18-11.el7-2b07d5c5a9) - partition with quorum Last updated: Fri Mar 2 20:01:31 2018 Last change: Fri Mar 2 19:24:59 2018 by root via cibadmin on ip-10-0-0-48 3 nodes configured 1 resource configured Online: [ ip-10-0-0-46 ip-10-0-0-48 ip-10-0-0-58 ] Full list of resources: clusterfence (stonith:fence_aws): Started ip-10-0-0-46 Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled