클러스터 노드는 데이터 및 자원을 공유하므로, 클러스터는 데이터 및 자원 무결성을 유지하기 위한 단계를 취해야 합니다. 노드가 멤버쉽에 대한 클러스터 규칙을 따르지 않으면, 클러스터는 노드가 클러스터에 참여하는 것을 허용하지 않아야 합니다.
Sun Cluster에서 클러스터에 참여하는 노드를 판별하는 메카니즘을 정족수라고 합니다. Sun Cluster는 대다수 투표 알고리즘을 사용하여 정족수를 구현합니다. 클러스터 노드와 정족수 디바이스(두 개 이상의 노드 사이에 공유되는 디스크들) 둘 다 정족수를 형성하기 위해 투표합니다. 정족수 디바이스는 사용자 데이터에 포함될 수 있습니다.
정족수 알고리즘은 동적으로 작동됩니다. 클러스터 이벤트가 해당되는 계산을 트리거하는 대로, 계산 결과는 클러스터의 수명을 변경할 수 있습니다. 정족수는 일관되지 않는 데이터를 클라이언트가 사용할 수 있게 만들 수 있는 두 가지의 가능한 클러스터 문제점(브레인 분할 및 앰네시아)으로부터 보호합니다. 다음 테이블은 이러한 두 가지 문제점과 정족수로 이 문제점을 해결하는 방법에 대해 설명합니다.
표 3-3 클러스터 정족수와 브레인 분할 및 앰네시아 문제점
문제점 |
설명 |
정족수의 해결 |
---|---|---|
브레인 분할 |
노드들 사이의 클러스터 상호연결이 유실되고 클러스터가 서브 클러스터로 분할될 경우에 발생합니다. 이 때, 각 서브 클러스터는 스스로를 유일한 파티션이라고 간주합니다. |
대다수의 투표가 있는 파티션(서브 클러스터)만 실행되도록 합니다(그러한 대다수의 파티션은 하나만 존재합니다). |
앰네시아 |
클러스터가 시스템 종료 시간보다 이전에 클러스터 데이터에 대해 시스템을 종료한 후 재시작할 경우에 발생합니다. |
클러스터가 부트될 경우, 최근 클러스터 멤버쉽의 구성원이었던 최소한 하나의 노드가 있습니다(그러므로 최근 구성 데이터를 수반함). |
클러스터 노드 및 정족수 디바이스(두 개 이상의 노드 사이에 공유되는 디스크들) 둘 다 정족수를 형성하기 위해 투표합니다. 기본적으로, 클러스터 노드는 부트하여 클러스터 구성원이 될 때 하나의 정족수 투표수를 확보합니다. 또한 노드가 설치되거나 관리자가 노드를 유지보수 상태에 둘 경우, 노드는 투표 계수를 확보하지 못합니다.
정족수 디바이스는 디바이스에 대한 노드 연결 수를 기초로 정족수 투표수를 확보할 수 있습니다. 정족수 디바이스가 설정되면, 최대 투표수 N-1을 확보합니다. 여기서 N은 정족수 디바이스에 대한 포트를 갖고 있는, 투표수가 0이 아닌 노드들의 수입니다. 예를 들어, 투표수가 0이 아닌 두 노드에 연결된 정족수 디바이스는 정족수가 1입니다(2 - 1).
클러스터 설치 동안 정족수 디바이스를 구성하거나 나중에 Sun Cluster 3.0 System Administration Guide에서 설명된 프로시저를 사용하여 정족수 디바이스를 구성합니다.
정족수 디바이스는 현재 접속되어 있는 노드들 중에서 최소한 하나의 노드가 클러스터 구성원일 경우에만 투표수에 포함됩니다. 또한 클러스터 부트 시, 정족수 디바이스는 현재 접속되어 있는 노드들 중에서 최소한 하나의 노드가 부팅되고 시스템이 종료되었을 때 최근에 부트된 클러스터의 구성원일 경우에만 투표수에 포함됩니다.
정족수 구성은 클러스트의 노드 수에 따라 달라집니다.
2-노드 클러스터 - 2-노드 클러스터를 형성하려면 두 개의 정족수 투표가 필요합니다. 이러한 두 개의 투표는 두 개의 클러스터 노드 또는 하나의 노드와 정족수 디바이스로부터 제공됩니다. 그러나, 다른 노드가 실패할 경우 하나의 노드가 계속될 수 있도록 하려면 2-노드 클러스터에 정족수 디바이스가 구성되어 있어야 합니다.
노드가 세 개 이상인 클러스터 - 디스크 스토리지 인클로저에 대한 액세스를 공유하는 모든 노드 쌍 사이에 정족수 디바이스를 지정해야 합니다. 예를 들어, 그림 3-3에서 보여지는 클러스터와 비슷한 3-노드 클러스터가 있는 것으로 가정됩니다. 이 그림에서, nodeA 및 nodeB는 동일한 디스크 인클로져에 대한 액세스를 공유하고 nodeB 및 nodeC는 다른 디스크 인클로져에 대한 액세스를 공유합니다. 총 5개의 정족수 투표가 있습니다. 노드에서 세 개와 노드들 사이에 고유하는 정족수 디바이스에서 두 개의 투표가 제공됩니다. 클러스터를 형성하려면 정족수 투표에서 다수가 필요합니다.
디스크 스토리지 인클로저에 대한 액세스를 공유하는 모든 노드 쌍 사이에 정족수 디바이스를 지정할 필요는 없습니다. 그렇지 않으면 Sun Cluster에 의해 수행됩니다. 그러나, N+1 구성이 2-노드 클러스터로 변화한 곳의 경우 필요한 정족수 투표를 제공할 수 있으며, 두 개의 모든 디스크 인클로져에 액세스하는 노드 또한 실패합니다. 모든 쌍에 정족수 디바이스를 구성하는 경우, 남은 노드는 클러스터로서 작동할 수 있습니다.
이러한 구성의 예는 그림 3-3의 내용을 참조하십시오.
정족수 디바이스를 설정할 때 다음 지침을 사용하십시오.
동일한 공유 디스크 스토리지 인클로저에 접속된 모든 노드 사이에 정족수 디바이스를 설정하십시오. 공유 인클로저 내에서 정족수 디바이스로 하나의 디스크를 추가하여, 노드가 실패할 경우 다른 노드가 정족수를 유지하여 공유 인클로저의 디스크 디바이스 그룹을 마스터하도록 하십시오.
최소한 두 개의 노드에서 정족수 디바이스를 연결해야 합니다.
정족수 디바이스는 이중 포트 정족수 디바이스로 사용되는 SCSI-2 또는 SCSI-3 디스크가 될 수 있습니다. 세 개 이상의 노드에 연결된 디스크는 정족수 디바이스로 사용되는지에 관계없이 SCSI-3 PGR(Persistent Group Reservation)을 지원해야 합니다. 자세한 정보는 Sun Cluster 3.0 Installation Guide에서 계획 장을 참조하십시오
정족수 디바이스로 사용자 데이터를 포함하는 디스크를 사용할 수 있습니다.
일련의 노드 사이에 여러 개의 정족수 디바이스를 구성하십시오. 다른 인클로저의 디스크를 사용하고, 각 노드 사이에 홀수 개의 정족수 디바이스를 구성하십시오. 이것은 개별 정족수 디바이스 실패에 대해 보호됩니다.
클러스터에 대한 주요 문제점은 클러스터가 파티션되는(브레인 분할이라고 함) 실패입니다. 이러한 상황이 발생하면, 모든 노드가 통신할 수 있는 것은 아니므로 개인 노드나 노드 서브세트가 개인 또는 서브세트 클러스터를 형성할 수도 있습니다. 각 서브세트 또는 파티션은 멀티호스트 디스크에 대해 단 하나의 액세스 및 소유권을 갖고 있는 것으로 인식할 수도 있습니다. 디스크에 기록하려고 하는 여러 노드들로 데이터가 훼손될 수 있습니다.
실패 방지는 실제로 디스크에 대한 액세스를 금지하여 멀티호스트 디스크에 대한 노드 액세스를 제한합니다. 노드가 클러스터에서 나갈 경우(실패하거나 파티션되어), 실패 방지는 그 노드가 더이상 디스크에 액세스할 수 없게 만듭니다. 현재 구성원 노드들만 디스크에 대한 액세스를 갖게 되므로, 데이터 무결성이 유지됩니다.
디스크 디바이스 서비스는 멀티호스트 디스크를 사용하는 서비스에 대한 페일오버 기능을 제공합니다. 현재 디스크 디바이스 그룹의 1차(소유자) 노드로서 서비스를 제공하는 클러스터 구성원이 실패하거나 도달할 수 없게 되면, 새로운 1차 노드가 선택되고, 계속해서 부수적인 인터럽트만으로 디스크 디바이스 그룹에 액세스할 수 있게 합니다. 이 프로세스 동안, 이전의 1차 노드는 새로운 1차 노드가 시작되기 전에 디바이스에 대한 액세스를 멈춰야만 합니다. 그러나 구성원이 클러스터 밖으로 제거되어 도달할 수 없게 되면, 클러스터는 1차 노드였던 디바이스들을 해제하도록 노드에 알릴 수 없습니다. 그러므로 살아남은 구성원이 실패한 구성원으로부터 글로벌 전역를 제어하고 액세스할 수 있도록 하는 수단이 필요합니다.
Sun Cluster는 SCSI 디스크 예약을 사용하여 실패 방지를 구현합니다. SCSI 예약을 사용하면, 실패한 노드는 멀티호스트 디스크로부터 "금지되어" 디스크에 액세스할 수 없게 됩니다.
SCSI-2 디스크 예약은 디스크에 접속된 모든 노드에 대한 액세스를 부여하거나(어떤 예약도 없을 경우) 단일 노드(예약이 있는 노드)에 대한 액세스로 제한하는 예약 양식을 지원합니다.
다른 노드가 더이상 클러스터 상호연결을 통해 통신할 수 없음을 클러스터 구성원이 발견하면, 그 구성원은 실패 방지 프로시저를 초기화하여 다른 노드가 공유 디스크에 액세스하지 못하도록 합니다. 이러한 실패 방지가 발생할 경우, 콘솔의 "예약 충돌" 메시지와 함께 금지된 노드가 공황 상태가 되는 것이 정상입니다.
예약 충돌은 노드가 더이상 클러스터 구성원이 아님을 발견한 후 SCSI 예약이 이 노드와 다른 노드 사이에 공유하는 모든 디스크에 놓이므로 발생합니다. 금지된 노드는 금지되고 있음을 인식하지 못할 수 있으므로 공유 디스크 중 하나에 액세스하려면 예약을 발견하여 공황 상태에 빠집니다.