Solaris OS용 Sun Cluster 개념 안내서

쿼럼 및 쿼럼 장치

이 절에서는 다음 항목에 대해 설명합니다.


주 –

Sun Cluster 소프트웨어에서 쿼럼 장치로 지원하는 특정 장치 목록은 Sun 서비스 공급자에게 문의하십시오.


클러스터 노드는 데이터와 자원을 공유하기 때문에 클러스터 한 개를 동시에 활성화되는 별도 분할 영역으로 분할하면 안됩니다. 활성화된 분할 영역이 여러 개이면 데이터가 훼손될 수 있습니다. CMM(Cluster Membership Monitor)과 쿼럼 알고리즘은 클러스터 상호 연결이 분할되더라도 같은 클러스터의 한 인스턴스가 항상 운영되도록 보장합니다.

쿼럼과 CMM에 대한 소개는 Solaris OS용 Sun Cluster 개요클러스터 멤버쉽을 참조하십시오.

클러스터 분할 영역에서는 두 가지 유형의 문제가 발생합니다.

정보 분리는 노드 간의 클러스터 상호 연결이 끊어지고 하위 클러스터로 분할되는 경우에 발생합니다. 한 분할 영역의 노드는 다른 분할 영역의 노드와 통신할 수 없기 때문에 각 분할 영역은 자체를 유일한 분할 영역으로 “인식합니다.”

정보 유실은 클러스터가 종료된 후, 종료하기 전의 클러스터 구성 데이터를 사용하여 다시 시작할 경우에 발생합니다. 이 문제는 최근에 작동한 클러스터 분할 영역에 속하지 않은 노드에서 클러스터를 시작하면 발생할 수 있습니다.

Sun Cluster 소프트웨어는 다음 두 가지 방법으로 정보 분리 및 정보 유실을 방지합니다.

대부분의 투표를 가진 분할 영역은 쿼럼을 얻어 작동할 수 있습니다. 이러한 다수 투표 체계는 한 클러스터에 세 개 이상의 노드가 구성된 경우 정보 분리와 정보 유실을 방지합니다. 그러나, 세 개 이상의 노드가 한 클러스터에 구성되어 있을 때는 노드 투표 수를 세는 것 만으로 충분하지 않습니다. 노드가 두 개인 클러스터에서는 다수가 둘입니다. 그러한 2 노드 클러스터가 분할되는 경우 두 분할 영역 중 한 쪽에서 쿼럼을 얻으려면 외부 투표가 필요합니다. 필요한 외부 투표는 쿼럼 장치에서 제공합니다.

쿼럼 투표 수 정보

다음 정보를 확인하려면 scstat -q 명령을 사용합니다.

이 명령에 대한 자세한 내용은 scstat(1M)을 참조하십시오.

두 노드와 쿼럼 장치는 쿼럼을 형성하기 위해 클러스터에 투표를 제공합니다.

노드는 노드의 상태에 따라 투표를 제공합니다.

쿼럼 장치는 장치에 연결된 투표 수를 기준으로 투표를 제공합니다. 쿼럼 장치를 구성할 때 Sun Cluster 소프트웨어는 N-1의 투표 수를 쿼럼 장치에 할당합니다. 여기서 N은 쿼럼 장치에 연결된 투표 수입니다. 예를 들어, 투표 수가 0이 아닌 두 노드에 연결된 쿼럼 장치는 쿼럼이 1입니다(2 - 1).

쿼럼 장치가 투표를 제공하는 경우는 다음 중 하나의 조건이 충족될 때입니다.

쿼럼 장치는 Solaris OS용 Sun Cluster 시스템 관리 안내서의 5 장, 쿼럼 관리에 설명된 절차를 사용하여 클러스터 설치 중이나 이후에 구성할 수 있습니다.

장애 차단 정보

클러스터에서 가장 중요한 문제는 클러스터를 분할하는 장애(정보 분리)입니다. 정보 분리 현상이 발생하면 일부 노드에서는 통신을 할 수 없으므로 개별 노드나 일부 노드가 개별 클러스터나 하위 집합 클러스터를 형성하려고 할 수 있습니다. 각 하위 집합 또는 분할 영역은 멀티 호스트 장치를 단독으로 액세스하고 소유하고 있다고 “인식”할 수 있습니다. 여러 노드에서 디스크에 쓰기를 시도하면 데이터가 손상됩니다.

장애 차단 기능은 디스크에 대한 액세스를 물리적으로 막음으로써 멀티 호스트 장치에 대한 노드 액세스를 제한합니다. 노드가 클러스터에서 나갈 경우(실패하거나 분할되어), 실패 방지는 그 노드가 더이상 디스크에 액세스할 수 없게 만듭니다. 현재 구성원 노드들만 디스크에 대한 액세스를 갖게 되므로, 데이터 무결성이 유지됩니다.

디스크 장치 서비스는 멀티 호스트 장치를 사용하는 서비스에 대한 페일오버 기능을 제공합니다. 현재 디스크 장치 그룹의 기본 노드(소유자) 역할을 하는 클러스터 구성원에 장애가 발생하거나 연결할 수 없으면 새 기본 노드가 선택됩니다. 새 기본 노드를 사용하면 잠시 중단되었던 디스크 장치 그룹에 대한 액세스를 계속 수행할 수 있습니다. 이 프로세스 중에 기존의 기본 노드에 있는 장치에 대한 액세스 권한을 제거한 다음 새 기본 노드를 시작해야 합니다. 그러나 구성원이 클러스터에서 이탈하여 도달할 수 없게 되면 클러스터는 기본 노드였던 장치를 해제하도록 해당 노드에 알릴 수 없습니다. 그러므로 남아있는 구성원이 실패한 구성원의 전역 장치를 제어하고 액세스할 수 있도록 하는 수단이 필요합니다.

Sun Cluster 시스템은 SCSI 디스크 예약 기능을 사용하여 실패 방지를 구현합니다. SCSI 예약 기능을 사용하면 장애가 발생한 노드가 멀티 호스트 디스크에 액세스하지 못하도록 멀티 호스트 장치가 해당 노드를 “차단”합니다.

SCSI-2 디스크 예약 기능은 디스크에 연결된 모든 노드에 대한 액세스 권한을 부여하는 예약 형식을 지원합니다(예약이 없는 경우). 또한 액세스를 단일 노드로 제한합니다(예약이 있는 노드).

클러스터 상호 연결을 통해 다른 노드가 더 이상 통신할 수 없다는 것을 발견한 클러스터 구성원은 장애 차단 절차를 시작하여 다른 노드가 공유 디스크에 액세스하지 못하도록 합니다. 장애 차단이 발생하면 차단된 노드는 중단(패닉)되고 “예약 충돌” 메시지가 콘솔에 나타납니다.

노드가 더 이상 클러스터 구성원이 아닌 경우에는, 이 노드와 다른 노드가 공유하는 모든 디스크에 대한 SCSI 예약이 트리거됩니다. 차단된 노드는 차단된 사실을 “인식”하지 못할 수도 있으며, 공유 디스크 중 하나에 액세스를 시도하면 예약이 감지되어 작동이 중단(패닉)됩니다.

장애 방지를 위한 페일패스트 기법

장애가 발생한 노드가 다시 부트되어 공유 저장소에 쓰지 못하도록 하기 위하여 클러스터 프레임워크에서 사용하는 기법을 페일패스트라고 합니다.

클러스터를 구성하는 노드는 쿼럼 디스크를 포함하여 액세스할 수 있는 디스크에 대하여 특정 ioctl, MHIOCENFAILFAST를 계속 사용할 수 있도록 합니다. ioctl은 디스크 드라이버에 대한 지시어입니다. ioctl은 다른 노드에서 예약된 디스크이기 때문에 디스크에 액세스할 수 없는 경우 노드가 자체적으로 중단(패닉)할 수 있는 기능을 제공합니다.

MHIOCENFAILFAST ioctl을 사용하면 드라이브는 노드가 디스크에 대해 실행하는 모든 읽기 및 쓰기 작업에서 반환되는 오류에서 Reservation_Conflict 오류 코드를 검사합니다. ioctl은 백그라운드에서 주기적으로 디스크에 테스트 작업을 실행하여 Reservation_Conflict 오류 코드를 검사합니다. Reservation_Conflict 오류 코드가 반환되면 포그라운드 및 백그라운드 제어 흐름 경로가 모두 중단됩니다.

SCSI-2 디스크의 경우에는 예약이 지속되지 않습니다. 즉, 노드를 재부트하면 예약이 취소됩니다. PGR (Persistent Group Reservation)이 있는 SCSI-3 디스크의 경우에는 예약 정보가 디스크에 저장되어 노드를 재부트한 후에도 유지됩니다. 페일패스트 기법은 SCSI-2 디스크를 사용했는지 또는 SCSI-3 디스크를 사용했는지 여부에 관계없이 동일하게 작동합니다.

노드가 클러스터의 다른 노드와 연결이 끊어지고 쿼럼을 채울 수 있는 분할 영역에 포함되지 않은 경우에는 다른 노드에 의해 강제로 클러스터에서 제거됩니다. 분할 영역에 포함되고 쿼럼을 채울 수 있는 또 다른 노드가 공유 디스크를 예약할 수 있습니다. 쿼럼이 없는 노드에서 공유 디스크에 액세스를 시도하면 페일패스트 기법이 작동하여 예약 충돌이 발생하고 시스템이 중단(패닉)됩니다.

패닉 후에는 노드가 재부트되어 클러스터에 다시 연결될 수도 있고, 클러스터가 SPARC 기반 시스템으로 구성된 경우에는 OpenBootTM PROM (OBP) 프롬프트가 표시될 수도 있습니다. auto-boot? 매개 변수 설정에 따라 수행할 작업이 결정됩니다. SPARC 기반 클러스터의 OpenBoot PROM ok 프롬프트에서 eeprom(1M)을 사용하여auto-boot?를 설정할 수 있습니다. 또한 x86 기반 클러스터에서는 이 매개 변수를 BIOS가 부트된 후에 선택적으로 실행하는 SCSI 유틸리티를 사용하여 설정할 수 있습니다.

쿼럼 구성 정보

다음 목록에는 쿼럼 구성에 대한 정보가 포함되어 있습니다.

피해야 하는 쿼럼 구성에 대한 예는 바람직하지 않은 쿼럼 구성을 참조하십시오. 권장되는 쿼럼 구성에 대한 예는 권장되는 쿼럼 구성을 참조하십시오.

쿼럼 장치 요구 사항 준수

다음 요구 사항을 준수해야 합니다. 이 요구 사항을 무시하면 클러스터의 가용성이 손상될 수 있습니다.

피해야 하는 쿼럼 구성에 대한 예는 바람직하지 않은 쿼럼 구성을 참조하십시오. 권장되는 쿼럼 구성에 대한 예는 권장되는 쿼럼 구성을 참조하십시오.

쿼럼 장치 모범 사례 준수

다음 정보를 사용하여 토폴로지에 가장 적합한 쿼럼 구성을 평가합니다.

문제를 피해가는 쿼럼 구성에 대한 예는 바람직하지 않은 쿼럼 구성을 참조하십시오. 권장되는 쿼럼 구성에 대한 예는 권장되는 쿼럼 구성을 참조하십시오.

권장되는 쿼럼 구성

이 절에서는 권장되는 쿼럼 구성에 대한 예를 보여줍니다. 피해야 하는 쿼럼 구성에 대한 예는 바람직하지 않은 쿼럼 구성을 참조하십시오.

2–노드 구성 쿼럼

2 노드 클러스터를 형성하려면 두 개의 쿼럼 투표가 필요합니다. 두 개의 투표는 두 개의 클러스터 노드 또는 한 개의 노드와 한 개의 쿼럼 장치에서만 얻을 수 있습니다.

그림 3–2 2–노드 구성

그림: 하나의 쿼럼 장치를 두 노드에 연결한 노드 A와 노드 B를 보여줍니다.

세 개 이상의 노드로 구성된 쿼럼

세 개 이상의 노드로 구성된 클러스터는 쿼럼 장치 없이 구성할 수 있습니다. 그러나 이렇게 구성하면 클러스터에서 대부분의 노드 없이 클러스터를 시작할 수 없습니다.

그림: 구성1: NodeA-D. A/B는 (->) QD1에 연결. C/D -> QD2. 구성2: NodeA-C. A/C -> QD1. B/C -> QD2. 구성3: NodeA-C -> 한 개의 QD.

비전형적인 쿼럼 구성

그림 3–3에서는 노드 A 노드 B에서 업무에 필수적인 응용 프로그램(예: Oracle 데이터베이스)을 실행하고 있다고 가정합니다. 노드 A노드 B를 사용할 수 없고 공유 데이터에 액세스할 수 없는 경우 전체 클러스터를 다운시키는 것을 원할 수 있습니다. 그렇지 않은 경우 이 구성은 고가용성을 제공하지 않기 때문에 최적의 구성이 아닙니다.

이러한 예외 사항과 관련된 모범 사례에 대한 자세한 내용은 쿼럼 장치 모범 사례 준수를 참조하십시오.

그림 3–3 비전형적 구성

그림: 노드 A-D. 노드 A/B는 QD1-4에 연결. 노드 C는 QD4에 연결. 노드 D는 QD4에 연결. 총 투표 수 = 10. 쿼럼을 위해 필요한 투표 수 = 6.

바람직하지 않은 쿼럼 구성

이 절에서는 피해야 하는 쿼럼 구성에 대한 예를 보여줍니다. 권장되는 쿼럼 구성에 대한 예는 권장되는 쿼럼 구성을 참조하십시오.

그림: 구성1: NodeA-B. A/B -> QD1/2. 구성2: NodeA-D. A/B -> QD1/2. 구성3: NodeA-C. A/B-> QD1/2 & C -> QD2.