Solaris OS용 Sun Cluster 개념 안내서

쿼럼 및 쿼럼 장치

클러스터 노드는 데이터와 자원을 공유하기 때문에 클러스터가 별도 분할 영역으로 분리되어 동시에 작동하지 않도록 해야 합니다. CMM을 사용하면 클러스터 상호 연결이 분할된 경우에도 특정 시점에 어느 하나의 클러스터만 작동하도록 할 수 있습니다.

클러스터 분할 영역에서는 정보 분리 및 정보 유실과 같은 두 가지 유형의 문제가 발생합니다. 정보 분리는 노드들 사이의 클러스터 상호 연결이 끊기고 클러스터가 서브 클러스터로 분할될 경우에 발생합니다. 이 때 각 서브 클러스터는 자신을 유일한 분할 영역으로 간주합니다. 이 문제는 클러스터 노드 사이의 통신 문제 때문에 발생합니다. 정보 유실은 시스템 종료 후 재시작한 클러스터가 종료 시점보다 오래된 데이터를 가지고 있는 경우에 발생합니다. 프레임워크 데이터 버전이 여러 개 있고 최신 버전을 사용할 수 없을 때 새로 구성된 클러스터가 시작되면 이 문제가 발생할 수 있습니다.

각 노드에 한 표씩을 부여한 후 작동 클러스터에 대해 다수결의 원칙을 적용하면 정보 분리 및 정보 유실 문제를 방지할 수 있습니다. 즉, 다수의 표를 가진 분할 영역은 쿼럼을 충족하므로 작동할 권한을 부여받게 됩니다. 클러스터에 노드가 세 개 이상이면 이러한 다수결 원칙을 적용할 수 있습니다. 노드가 두 개인 클러스터에서는 다수가 2입니다. 이러한 클러스터가 분할되면 각 분할 영역이 쿼럼을 얻기 위해 외부 표가 필요합니다. 필요한 외부 표는 쿼럼 장치에서 제공합니다. 두 노드 사이에 공유되는 모든 디스크가 쿼럼 장치가 될 수 있습니다. 쿼럼 장치로 사용되는 디스크에는 사용자 데이터가 저장될 수 있습니다.

쿼럼 알고리즘은 동적으로 작동됩니다. 즉, 클러스터 이벤트에서 계산을 트리거하기 때문에 클러스터 수명 동안 계산 결과가 변경될 수 있습니다.

쿼럼 투표 수

클러스터 노드와 쿼럼 장치가 모두 투표하여 쿼럼을 채웁니다. 기본적으로, 클러스터 노드는 부트하여 클러스터 구성원이 될 때 하나의 쿼럼 투표 수를 확보합니다. 또한 노드가 설치 중이거나 관리자가 노드를 유지 보수 상태에 둔 경우에는 노드의 투표 수가 0이 됩니다.

쿼럼 장치는 장치에 대한 노드 연결 수를 기초로 쿼럼 투표 수를 확보할 수 있습니다. 쿼럼 장치를 설정할 경우 N-1의 최대 투표 수를 획득해야 합니다. 여기서 N은 쿼럼 장치에 연결된 투표 수입니다. 예를 들어, 투표 수가 0이 아닌 두 노드에 연결된 쿼럼 장치는 쿼럼 수가 1입니다(2 - 1).

클러스터를 설치할 때 쿼럼 장치를 구성할 수도 있고 나중에 Sun Cluster 시스템 관리 안내서에서 설명하는 절차를 사용하여 쿼럼 장치를 구성할 수도 있습니다.


주 –

쿼럼 장치는 현재 접속되어 있는 노드들 중에서 최소한 하나의 노드가 클러스터 구성원일 경우에만 투표 수에 포함됩니다. 또한 클러스터 부트 시, 쿼럼 장치는 현재 접속되어 있는 노드들 중에서 최소한 하나의 노드가 부트되고 시스템이 종료되었을 때 최근에 부트된 클러스터의 구성원일 경우에만 투표 수에 포함됩니다.


쿼럼 구성

쿼럼 구성은 클러스터의 노드 수에 따라 달라집니다.

그림 3–2 쿼럼 장치 구성 예

그림: 그래픽에 대한 설명은 이전 컨텍스트를 참조하십시오.

쿼럼 지침

쿼럼 장치를 설정할 때 다음 지침을 사용하십시오.

장애 차단

클러스터의 중요 문제 중 하나는 클러스터를 분할하는 장애(정보 분리)입니다. 이러한 상황이 발생하면 일부 노드의 통신이 불가능하게 되어 개별 노드나 노드 서브 세트가 개별 클러스터나 하위 클러스터를 형성할 수도 있습니다. 이런 경우 각 서브 세트 또는 분할 영역이 멀티 호스트 디스크를 단독으로 액세스하고 소유하는 것으로 인식하게 될 수도 있으므로 디스크에 기록하려고 하는 여러 노드들로 데이터가 손상될 수 있습니다.

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

디스크 장치 서비스는 멀티 호스트 디스크를 사용하는 서비스에 대한 페일오버 기능을 제공합니다. 현재 디스크 장치 그룹의 기본(소유자) 노드로서 서비스를 제공하는 클러스터 구성원이 실패하거나 사용할 수 없게 되면, 새로운 기본 노드가 선택되고, 간단한 조작만으로 디스크 장치 그룹에 액세스할 수 있게 합니다. 이 프로세스 동안, 이전의 기본 노드는 새로운 기본 노드가 시작되기 전에 장치에 대한 액세스를 멈춰야만 합니다. 그러나 구성원이 클러스터에서 제거되어 사용할 수 없게 되면, 클러스터는 기본 노드였던 장치들을 해제하도록 노드에 알릴 수 없습니다. 그러므로 남아있는 구성원이 실패한 구성원의 전역 장치를 제어하고 액세스할 수 있도록 하는 수단이 필요합니다.

SunPlex 시스템은 SCSI 디스크 예약 기능을 사용하여 장애 차단을 구현합니다. SCSI 예약을 사용하면 실패한 노드는 멀티 호스트 디스크로부터 “차단”되므로 이 디스크에 액세스할 수 없습니다.

SCSI-2 디스크 예약은 디스크에 접속된 모든 노드에 대한 액세스를 부여하거나(어떤 예약도 없을 경우) 단일 노드(예약이 있는 노드)에 대한 액세스로 제한하는 방식을 사용합니다.

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

예약 충돌은 특정 노드가 더 이상 클러스터 구성원이 아님을 발견한 후 이 노드와 다른 노드 사이에 공유되어 있는 모든 디스크에 대해 SCSI 예약이 적용되는 경우 발생합니다. 차단된 노드는 차단되고 있음을 인식하지 못할 수 있으므로 공유 디스크 중 하나에 액세스를 시도하면 예약을 발견하게 되고 패닉 상태가 됩니다.

장애 차단을 위한 페일패스트 기법

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

클러스터를 구성하는 노드는 쿼럼 디스크를 포함하여 액세스할 수 있는 디스크에 대하여 특정 ioctl, MHIOCENFAILFAST를 계속 사용할 수 있도록 합니다. 이 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 유틸리티를 사용하여 설정할 수 있습니다.