Sun Cluster 3.0 12/01 개념

정족수 및 정족수 장치

클러스터 노드는 데이터와 자원을 공유하기 때문에 클러스터가 동시에 작동하는 별도 파티션으로 분리되지 않습니다. CMM을 사용하면 클러스터 상호 연결이 분할된 경우에도 하나 이상의 클러스터가 항상 작동합니다.

클러스터 파티션에서는 브레인 분할 및 앰네시아 두 가지 유형의 문제가 발생합니다. 브레인 분할은 노드 사이의 클러스터 상호 연결이 끊어져서 클러스터가 하위 클러스터로 분할될 경우에 발생합니다. 그러면 각 하위 클러스터가 다른 파티션을 인식하지 못하고 자체 파티션만 있는 것으로 인식합니다. 이 문제는 클러스터 노드 사이의 통신 문제 때문에 발생합니다. 앰네시아는 클러스터가 종료된 후에 클러스터가 종료된 시간보다 오래된 클러스터 데이터를 사용하여 다시 시작할 경우에 발생합니다. 디스크에 여러 가지 프레임워크 데이터 버전이 저장되어 있을 경우에 최신 버전을 사용할 수 없으면 새로 구성된 클러스터가 시작될 때 이 문제가 발생할 수 있습니다.

각 노드에 한 표씩 부여하고 대부분의 표가 작동 클러스터에 참여하도록 지시하면 브레인 분할 및 앰네시아 문제를 방지할 수 있습니다. 다수 표가 있는 파티션은 정족수가 충족되기 때문에 작동할 수 있습니다. 클러스터에 노드가 두 개 이상이면 이러한 다수 표 메커니즘을 사용할 수 있습니다. 노드가 두 개인 클러스터에서는 두 개가 다수입니다. 이러한 클러스터가 분할되면 각 파티션이 정족수를 얻기 위해 외부 표가 필요합니다. 필요한 외부 표는 정족수 장치에서 제공합니다. 두 노드 사이에 공유하는 디스크를 정족수 장치로 사용할 수 있습니다. 정족수 장치로 사용하는 디스크에도 사용자 데이터를 저장할 수 있습니다.

표 3-3에서는 Sun Cluster 소프트웨어가 정족수를 사용하여 브레인 분할 및 앰네시아 문제를 해결하는 방법을 설명합니다.

표 3-3 클러스터 정족수와 브레인 분할 및 앰네시아 문제

파티션 유형 

정족수 해결 방법 

브레인 분할 

다수 표가 있는 파티션(하위 클러스터)만 클러스터로 실행되도록 합니다. 이 경우에 다수 표를 갖는 파티션은 하나만 있을 수 있습 니다. 

앰네시아 

클러스터가 부트될 때 최근 클러스터 멤버쉽의 구성원이었던 노드를 하나 이상 포함하도록 합니다. 그러면 최신 구성 데이터를 사용할 수 있습니다. 

정족수 알고리즘은 동적으로 작동합니다. 즉, 클러스터 이벤트가 계산을 트리거하면 클러스터 수명 동안 계산 결과가 변경될 수 있습니다.

정족수 표 계산

클러스터 노드와 정족수 장치가 모두 투표하여 정족수를 채웁니다. 기본적으로 클러스터 노드가 부트되어 클러스터 구성원이 되면 클러스터에 정족수 투표 수 하나가 증가합니다. 노드를 설치하는 중이거나 관리자가 노드를 유지 보수 상태로 전환한 경우에는 노드의 투표 수가 0이 될 수도 있습니다.

정족수 장치의 정족수 투표 수는 장치에 연결된 노드 수에 따라 결정됩니다. 정족수 장치가 설정되면 최대 투표 수 N-1개를 받습 니다. 여기서 N은 정족수 장치에 대한 포트가 있고 투표 수가 0이 아닌 노드 수입니다. 예를 들어, 투표 수가 0이 아닌 두 개의 노 드에 연결된 정족수 장치의 정족수 투표 수는 1(2-1)이 됩니다.

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


주 -

현재 정족수 장치가 연결된 노드 중에서 하나 이상의 노드가 클러스터 구성원인 경우에만 정족수 장치가 투표 수에 포함됩니다. 또한, 클러스터 부트 중에는 현재 정족수 장치가 연결된 노드 중 하나 이상이 부트되고 있어야 하고 최근 부트된 클러스터가 종료될때 노드가 이 클러스터의 구성원이었어야만 정족수 장치가 투표 수에 포함됩니다.


정족수 구성

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

그림 3-3 정족수 장치 구성의 예

Graphic

정족수 지침

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


정보 -

각 정족수 장치에 장애가 발생하지 않도록 보호하려면 노드 세트 사이에 두 개 이상의 정족수 장치를 구성하십시오. 다른 인클로저의 디스크를 사용하고, 각 노드 사이에 홀수 개의 정족수 장치를 구성하십시오.


장애 방지

클러스터에서 가장 중요한 문제는 클러스터를 분할하는 장애(브레인 분할)입니다. 이러한 문제가 발생하면, 모든 노드가 통신을 할 수 있는 것이 아니기 때문에 개별 노드나 노드 하위 세트가 개별 클러스터나 하위 세트 클러스터를 만들 수 있습니다. 각 하위 세트나 파티션이 멀티호스트 디스크에 대하여 단 하나의 액세스 및 소유권을 갖고 있는 것으로 인식할 수도 있습니다. 여러 노드가 디스크에 쓰려고 시도하면 데이터가 손상될 수 있습니다.

장애 방지는 물리적으로 디스크에 대한 액세스를 금지하여 멀티호스트 디스크에 대한 노드 액세스를 제한합니다. 노드에 장애가 발생하거나 분할되어 노드가 클러스터에서 제외되면 장애 방지 기능에 의해 해당 노드가 더 이상 디스크에 액세스할 수 없게 됩니다. 현재 구성원 노드만 디스크에 액세스할 수 있기 때문에 데이터 무결성이 유지됩니다.

디스크 장치 서비스는 멀티호스트 디스크를 사용하는 서비스에 페일오버 기능을 제공합니다. 현재 디스크 장치 그룹의 1차(소유자) 노드로 작동하는 클러스터 구성원에 장애가 발생하거나 연결이 안되면 잠깐 중단된 후에 디스크 장치 그룹에 대한 액세스를 계속할 수 있도록 새로운 1차 노드가 선택됩니다. 이 프로세스에서 새로운 1차 노드가 시작되려면 먼저 이전 1차 노드가 장치에 대한 액세스를 중지해야 합니다. 그러나 구성원이 클러스터에서 제외되어 연결되지 않으면 클러스터에서 장치에 대한 1차 소유권을 해제하도록 해당 노드에 알릴 수 없습니다. 따라서 작동하는 구성원이 장애가 발생한 구성원으로부터 제어 권한을 받아 글로벌 장치에 액세스할 수 있도록 하는 수단이 필요합니다.

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 디스크를 사용하는 경우에 모두 동일하게 작동합니다.

노드가 클러스터의 다른 노드와 연결이 끊어지고 정족수를 채울 수 있는 파티션에 포함되지 않은 경우에는 다른 노드에 의해 강제로 클러스터에서 제거됩니다. 정족수를 채울 수 있는 파티션에 포함된 다른 노드가 공유 디스크에 예약을 설정하고, 정족수가 채워지지 않은 노드가 예약된 공유 디스크에 액세스하려고 시도하면 페일패스트 메커니즘에 의해 예약 충돌이 발생하여 종료됩니다.

노드가 종료된 후에 다시 부팅되어 클러스터에 다시 연결될 수도 있고 OpenBoot PROM (OBP) 프롬프트 상태로 있을 수도 있습니다. 취하는 조치는 OBP의 auto-boot? 설정에 따라 결정됩니다.