7장. 고가용성 리소스 문제 해결
리소스 오류가 발생하는 경우 문제의 원인과 위치를 조사하고 실패한 리소스를 수정한 다음 선택적으로 리소스를 정리해야 합니다. 배포에 따라 리소스 오류의 가능한 원인이 많으며 리소스를 조사하여 문제를 해결하는 방법을 결정해야 합니다.
예를 들어 리소스 제한 조건을 확인하여 리소스가 서로 중단되지 않고 리소스가 서로 연결할 수 있는지 확인할 수 있습니다. 또한 다른 컨트롤러 노드보다 더 자주 펜싱되는 컨트롤러 노드를 검사하여 가능한 통신 문제를 식별할 수 있습니다.
리소스 문제의 위치에 따라 다음 옵션 중 하나를 선택합니다.
- 컨트롤러 노드 문제
- 컨트롤러 노드에 대한 상태 검사에 실패하는 경우 컨트롤러 노드 간 통신 문제를 나타낼 수 있습니다. 조사하려면 컨트롤러 노드에 로그인하고 서비스가 올바르게 시작될 수 있는지 확인합니다.
- 개별 리소스 문제
-
컨트롤러의 대부분의 서비스가 올바르게 실행 중인 경우
pcs status명령을 실행하고 특정 Pacemaner 리소스 오류에 대한 정보를 출력하거나systemctl명령을 실행하여 Pacemaker가 아닌 리소스 오류를 조사할 수 있습니다.
7.1. 고가용성 클러스터에서 리소스 제약 조건 보기
리소스 문제를 조사하기 전에 각 리소스가 있는 위치, 리소스 시작 순서 및 리소스를 다른 리소스와 함께 배치해야 하는 여부 등 서비스가 시작되는 방법에 대한 제약 조건을 볼 수 있습니다.
절차
다음 옵션 중 하나를 사용합니다.
모든 리소스 제약 조건을 보려면 컨트롤러 노드에 로그인하고 pcs constraint
show명령을 실행합니다.$ sudo pcs constraint show
다음 예제에서는 컨트롤러 노드의
pcs constraint show명령에서 잘린 출력을 보여줍니다.Location Constraints: Resource: galera-bundle Constraint: location-galera-bundle (resource-discovery=exclusive) Rule: score=0 Expression: galera-role eq true [...] Resource: ip-192.168.24.15 Constraint: location-ip-192.168.24.15 (resource-discovery=exclusive) Rule: score=0 Expression: haproxy-role eq true [...] Resource: my-ipmilan-for-controller-0 Disabled on: overcloud-controller-0 (score:-INFINITY) Resource: my-ipmilan-for-controller-1 Disabled on: overcloud-controller-1 (score:-INFINITY) Resource: my-ipmilan-for-controller-2 Disabled on: overcloud-controller-2 (score:-INFINITY) Ordering Constraints: start ip-172.16.0.10 then start haproxy-bundle (kind:Optional) start ip-10.200.0.6 then start haproxy-bundle (kind:Optional) start ip-172.19.0.10 then start haproxy-bundle (kind:Optional) start ip-192.168.1.150 then start haproxy-bundle (kind:Optional) start ip-172.16.0.11 then start haproxy-bundle (kind:Optional) start ip-172.18.0.10 then start haproxy-bundle (kind:Optional) Colocation Constraints: ip-172.16.0.10 with haproxy-bundle (score:INFINITY) ip-172.18.0.10 with haproxy-bundle (score:INFINITY) ip-10.200.0.6 with haproxy-bundle (score:INFINITY) ip-172.19.0.10 with haproxy-bundle (score:INFINITY) ip-172.16.0.11 with haproxy-bundle (score:INFINITY) ip-192.168.1.150 with haproxy-bundle (score:INFINITY)이 출력에는 다음과 같은 기본 제약 조건 유형이 표시됩니다.
- 위치 제한
리소스를 할당할 수 있는 위치를 나열합니다.
-
첫 번째 제한 조건은 galera-
role 특성을bundle 리소스를 설정하는 규칙을 정의합니다.true로 설정하여 노드에서 실행하도록 galera- -
두 번째 위치 제한 조건은 IP 리소스 ip-192.168.24.15 가
haproxy-role특성이true로 설정된 노드에서만 실행되도록 지정합니다. 즉, 클러스터에서 서비스에 연결할 수 있도록 하는 데 필요한haproxy서비스와 IP 주소를 연결합니다. - 세 번째 위치 제한 조건은 각 컨트롤러 노드에서 ipmilan 리소스가 비활성화되었음을 보여줍니다.
-
첫 번째 제한 조건은 galera-
- 제한 조건 순서
리소스를 시작할 수 있는 순서를 나열합니다. 이 예에서는 HAProxy 서비스 전에 시작할 가상 IP 주소 리소스 IPaddr2 를 설정하는 제약 조건을 보여줍니다.
참고순서 제한 조건은 IP 주소 리소스 및 HAproxy에만 적용됩니다. 계산과 같은 서비스는 Galera와 같은 종속 서비스의 중단을 유지할 것으로 예상되기 때문에 systemd는 다른 모든 리소스를 관리합니다.
- 공동 배치 제한
- 함께 배치해야 하는 리소스를 나열합니다. 모든 가상 IP 주소는 haproxy-bundle 리소스에 연결됩니다.
특정 리소스에 대한 제약 조건을 보려면 모든 컨트롤러 노드에 로그인하고
pcs property show명령을 실행합니다.$ sudo pcs property show출력 예:
Cluster Properties: cluster-infrastructure: corosync cluster-name: tripleo_cluster dc-version: 2.0.1-4.el8-0eb7991564 have-watchdog: false redis_REPL_INFO: overcloud-controller-0 stonith-enabled: false Node Attributes: overcloud-controller-0: cinder-volume-role=true galera-role=true haproxy-role=true rabbitmq-role=true redis-role=true rmq-node-attr-last-known-rabbitmq=rabbit@overcloud-controller-0 overcloud-controller-1: cinder-volume-role=true galera-role=true haproxy-role=true rabbitmq-role=true redis-role=true rmq-node-attr-last-known-rabbitmq=rabbit@overcloud-controller-1 overcloud-controller-2: cinder-volume-role=true galera-role=true haproxy-role=true rabbitmq-role=true redis-role=true rmq-node-attr-last-known-rabbitmq=rabbit@overcloud-controller-2
이 출력에서는 리소스 제약 조건이 올바르게 설정되었는지 확인할 수 있습니다. 예를 들어
galera-role특성은 모든 컨트롤러 노드에적용됩니다. 즉galera-bundle 리소스는이러한 노드에서만 실행됩니다.