클러스터 쿼럼
1. 개요
1. 개요
클러스터 쿼럼은 분산 컴퓨팅 시스템에서 클러스터의 정상 작동을 위해 필요한 최소한의 멤버 수 또는 투표 수를 결정하는 메커니즘이다. 이는 여러 대의 서버가 하나의 시스템처럼 동작하는 고가용성 시스템이나 데이터베이스 클러스터링 환경에서 핵심적인 역할을 수행한다.
쿼럼의 주요 목적은 스플릿 브레인 현상을 방지하고 시스템의 일관성과 데이터 무결성을 유지하는 것이다. 네트워크 장애로 클러스터가 두 개 이상의 독립된 파티션으로 분리되었을 때, 각 파티션이 자신만이 유일한 정상 클러스터라고 판단하여 동시에 쓰기 작업을 수행하면 데이터 손상이 발생할 수 있다. 쿼럼 메커니즘은 이러한 상황에서 어느 파티션이 서비스를 계속할 권한을 가질지 판단하는 기준을 제공한다.
쿼럼의 기본적인 동작 원칙은 간단하다. 클러스터 내에서 발생한 네트워크 분할 시, 쿼럼(예: 과반수 투표권)을 확보한 파티션만이 클러스터를 계속 운영하고 쓰기 작업을 수행할 수 있다. 반면, 쿼럼에 도달하지 못한 파티션은 자동으로 서비스를 중단하거나 읽기 전용 모드로 전환하여 데이터 충돌을 방지한다.
구현 방식에는 정해진 수의 과반수를 요구하는 다수결 쿼럼, 각 노드에 중요도에 따라 다른 투표 가중치를 부여하는 노드 가중치 쿼럼, 클러스터 상태 변화에 따라 요구 표준을 자동으로 조정하는 동적 쿼럼 등 다양한 유형이 존재한다. 이러한 방식을 통해 시스템의 규모와 요구되는 가용성 수준에 맞게 쿼럼 정책을 유연하게 설계할 수 있다.
2. 쿼럼의 개념과 필요성
2. 쿼럼의 개념과 필요성
2.1. 분산 시스템의 일관성 문제
2.1. 분산 시스템의 일관성 문제
분산 시스템에서 여러 노드가 하나의 논리적 시스템으로 동작할 때, 모든 노드가 동일한 상태 정보를 유지하는 것이 중요하다. 이를 일관성 문제라고 한다. 네트워크 지연이나 노드 장애로 인해 각 노드가 받는 정보의 순서나 내용이 달라질 수 있으며, 이로 인해 시스템 전체의 상태가 불일치할 위험이 있다. 특히 데이터베이스 클러스터링이나 고가용성 서비스에서는 이러한 불일치가 데이터 손실이나 오작동으로 이어질 수 있다.
이러한 일관성 문제를 해결하기 위한 핵심 접근법 중 하나가 쿼럼 메커니즘이다. 쿼럼은 시스템이 정상적인 결정을 내리기 위해 필요한 최소한의 동의 표를 규정한다. 예를 들어, 쓰기 작업이 발생했을 때, 단일 노드의 판단에만 의존하는 것이 아니라 다수의 노드로부터 동의를 얻어 작업을 확정짓는다. 이는 특정 노드가 고립되거나 오류 상태에 빠졌을 때, 잘못된 데이터가 시스템 전체에 퍼지는 것을 방지하는 역할을 한다.
따라서 쿼럼은 분산 시스템이 네트워크 분할과 같은 장애 상황에서도 데이터의 무결성을 유지할 수 있는 기반을 제공한다. 쿼럼을 통한 합의 과정 없이는, 시스템의 각 부분이 상충되는 명령을 수행하는 스플릿 브레인 현상이 발생할 수 있다. 쿼럼 메커니즘은 어느 파티션이 정상적인 클러스터를 유지할 권한을 가질지 명확히 구분함으로써 이러한 치명적 상황을 방지한다.
2.2. 스플릿 브레인 현상 방지
2.2. 스플릿 브레인 현상 방지
스플릿 브레인 현상은 클러스터를 구성하는 노드들 사이의 네트워크 연결이 단절되어 클러스터가 두 개 이상의 독립적인 파티션으로 분리될 때 발생한다. 각 파티션이 자신이 정상적인 클러스터라고 판단하여 동일한 자원에 대한 쓰기 작업을 동시에 수행하면, 데이터의 일관성이 심각하게 훼손될 수 있다. 예를 들어, 공유 스토리지 상의 동일한 데이터베이스 파일을 두 파티션이 각각 수정하면 데이터가 손상되거나 덮어쓰여질 위험이 있다.
쿼럼은 이러한 치명적인 상황을 방지하기 위한 핵심 메커니즘이다. 쿼럼은 클러스터가 정상적으로 운영되기 위해 필요한 최소한의 투표 수 또는 멤버 수를 정의한다. 네트워크 분할이 발생하면, 각 파티션은 자신이 보유한 투표권을 계산하여 쿼럼에 도달했는지 여부를 판단한다. 쿼럼을 확보한 파티션만이 클러스터를 계속 운영하고 쓰기 작업을 수행할 권한을 가진다.
반면, 쿼럼을 확보하지 못한 파티션은 자동으로 서비스를 중단하거나, 안전을 위해 읽기 전용 모드로 전환된다. 이로 인해 일시적으로 서비스 가용성은 감소할 수 있으나, 데이터의 무결성과 일관성은 반드시 보호된다. 쿼럼의 이러한 판정 원칙은 "과반수의 의견이 클러스터의 운명을 결정한다"는 규칙으로 요약될 수 있으며, 이는 분산 시스템에서 합의를 이루는 기본적인 방법 중 하나이다.
따라서 쿼럼 설계는 단순한 장애 감지 수단을 넘어, 네트워크 분할이라는 복잡한 장애 시나리오에서도 시스템이 예측 가능하고 안전한 방식으로 동작하도록 보장하는 역할을 한다. 이를 통해 고가용성을 추구하는 클러스터 시스템이 가용성과 일관성 사이에서 균형을 유지할 수 있게 된다.
3. 쿼럼 구현 방식
3. 쿼럼 구현 방식
3.1. 다수결 쿼럼
3.1. 다수결 쿼럼
다수결 쿼럼은 가장 기본적이고 직관적인 쿼럼 결정 방식이다. 이 방식은 클러스터를 구성하는 각 노드에게 하나의 투표권을 부여하며, 클러스터가 정상적으로 운영되거나 쓰기 작업을 수행하기 위해서는 과반수(50% 초과)의 투표를 확보해야 한다. 예를 들어, 5개의 노드로 구성된 클러스터에서는 최소 3개의 노드가 온라인 상태여야 쿼럼을 형성할 수 있다. 이 과반수 규칙은 네트워크 분할이 발생했을 때, 양쪽 파티션이 동시에 쿼럼을 형성하는 것을 방지하는 핵심 원리로 작동한다.
구현이 간단하고 이해하기 쉬운 것이 다수결 쿼럼의 장점이다. 각 노드의 상태(온라인/오프라인)만으로 쿼럼 여부를 쉽게 판단할 수 있어 복잡한 로직이 필요하지 않다. 또한, 노드 수가 홀수일 때 쿼럼을 형성하기 위한 최소 노드 수가 명확하게 정의되므로, 설계와 운영이 용이하다. 이 방식은 소규모 클러스터나 노드의 사양과 역할이 균일한 환경에서 널리 사용된다.
그러나 다수결 쿼럼은 클러스터 규모에 따른 제약이 있다. 노드 수가 짝수인 경우, 정확히 절반으로 나뉘는 상황(예: 4개 노드 중 2개가 고장)에서는 어느 쪽도 과반수를 얻지 못해 쿼럼에 실패할 수 있다. 이 경우 전체 클러스터가 운영을 중지하는 결과를 초래할 수 있다. 또한, 모든 노드에 동일한 권한을 부여하기 때문에, 특정 고가용성 스토리지나 중요한 역할을 하는 노드에 더 높은 가중치를 부여할 수 없다는 한계가 있다.
이러한 한계를 보완하기 위해 등장한 것이 노드에 서로 다른 가중치를 부여하는 가중치 기반 쿼럼이나, 클러스터 상태에 따라 쿼럼 요구치를 동적으로 조정하는 동적 쿼럼 같은 고급 기법들이다. 다수결 쿼럼은 이러한 다양한 쿼럼 구현 방식의 기본 바탕을 이루는 개념으로, 분산 시스템의 일관성과 가용성을 보장하는 핵심 메커니즘의 출발점이다.
3.2. 과반수 쿼럼
3.2. 과반수 쿼럼
과반수 쿼럼은 클러스터 내에서 합의를 이루거나 결정을 내리기 위해 전체 구성원의 절반 이상이 동의해야 하는 쿼럼 결정 방식이다. 이는 가장 기본적이고 직관적인 쿼럼 방식으로, 전체 투표권을 가진 노드 수를 N이라고 할 때, (N/2 + 1) 이상의 투표를 확보해야 쿼럼을 획득한 것으로 판단한다. 예를 들어, 5개의 노드로 구성된 클러스터에서는 최소 3개의 노드가 온라인 상태여야 정상적인 운영이 가능하다.
이 방식의 핵심 목적은 네트워크 분할과 같은 장애 발생 시, 단 하나의 파티션만이 쿼럼을 획득하도록 보장하여 스플릿 브레인 현상을 근본적으로 방지하는 데 있다. 네트워크가 두 개의 파티션으로 나뉘더라도, 노드 수가 많은 쪽만이 과반수를 충족할 수 있으며, 소수의 노드로 구성된 파티션은 자동으로 서비스를 중단하게 된다. 이를 통해 동일한 데이터에 대한 상충되는 쓰기 작업이 발생하는 것을 막고 시스템의 일관성을 유지한다.
과반수 쿼럼은 구현이 비교적 단순하고 이해하기 쉬운 장점이 있으나, 클러스터의 총 노드 수가 짝수일 경우 동률이 발생할 수 있는 문제점이 있다. 또한, 노드의 장애 허용 범위가 제한적이다. 2노드 클러스터의 경우, 한 노드만 고장 나도 과반수(2/2+1=2)를 충족할 수 없어 전체 클러스터가 정지하는 단점이 있다. 이러한 문제를 해결하기 위해 쿼럼 디스크나 쿼럼 위탁자와 같은 별도의 티브레이커 역할을 하는 구성 요소를 도입하는 경우가 많다.
주요 분산 시스템 및 고가용성 클러스터 솔루션들, 예를 들어 리눅스의 Pacemaker와 Corosync 조합이나 일부 데이터베이스 클러스터링 솔루션에서 이 과반수 쿼럼 방식을 기본 또는 옵션으로 채택하고 있다. 클러스터의 규모와 네트워크 토폴로지를 고려하여 적절한 쿼럼 전략을 선택하는 것은 시스템의 안정성과 가용성에 직접적인 영향을 미친다.
3.3. 가중치 기반 쿼럼
3.3. 가중치 기반 쿼럼
가중치 기반 쿼럼은 클러스터 내 모든 노드에 동일한 투표권을 부여하는 대신, 각 노드나 리소스에 서로 다른 중요도를 반영한 가중치를 할당하는 방식이다. 이는 다수결 쿼럼이나 과반수 쿼럼의 한계를 보완하며, 특히 노드의 성능, 용량, 역할이 균일하지 않은 이기종 클러스터 환경에서 유연한 쿼럼 정책을 수립할 수 있게 한다. 예를 들어, 고성능의 주요 데이터베이스 서버에는 높은 가중치를, 보조적인 모니터링 노드에는 낮은 가중치를 부여할 수 있다.
구현 방식은 시스템마다 다르지만, 일반적으로 관리자가 각 노드에 수동으로 가중치 값을 설정한다. 클러스터의 총 쿼럼은 모든 노드의 가중치 합의 절반을 초과하는 값으로 설정되는 경우가 일반적이다. 운영 중에는 가중치의 합이 쿼럼 임계값을 넘는 노드들의 그룹만이 활성 파티션으로 인정되어 쓰기 작업을 수행할 수 있다. 이 방식을 통해 특정 고가용성 스토리지나 중요한 네트워크 공유 디스크 같은 리소스 자체에 높은 가중치를 부여하여 쿼럼을 구성할 수도 있다.
이 방식의 주요 장점은 설계의 유연성에 있다. 중요도가 높은 노드가 다운되면 쿼럼을 획득하기 어려워져 클러스터 전체의 운영이 중단될 수 있도록 설정함으로써, 데이터 일관성을 더욱 강력하게 보호할 수 있다. 반대로, 덜 중요한 노드들의 장애는 전체 클러스터의 가용성에 미치는 영향을 최소화하도록 구성할 수 있다. 그러나 단점으로는 가중치 설정이 관리자의 판단에 의존하여 복잡성을 증가시킬 수 있으며, 잘못된 구성이 오히려 단일 장애점을 만들거나 예기치 않은 서비스 중단을 초래할 수 있다는 점이 있다.
일부 현대적인 클러스터 관리 소프트웨어는 가중치 기반 쿼럼을 동적 쿼럼이나 쿼럼 위탁자 같은 다른 메커니즘과 결합하여 사용하기도 한다. 이를 통해 노드의 상태 변화나 네트워크 분할 상황에 더욱 동적으로 대응하면서도, 시스템의 핵심 구성 요소가 반드시 클러스터 운영에 참여하도록 보장하는 정책을 수립할 수 있다.
3.4. 동적 쿼럼
3.4. 동적 쿼럼
동적 쿼럼은 클러스터의 총 노드 수가 변경될 때, 예를 들어 노드가 추가되거나 제거될 때마다 필요한 쿼럼 투표 수를 자동으로 재계산하는 메커니즘이다. 이 방식은 클러스터의 크기가 유동적인 환경에서 특히 유용하며, 시스템 관리자가 수동으로 쿼럼 구성을 조정할 필요를 줄여준다. 기본 원리는 클러스터의 현재 활성 멤버 수를 기반으로 과반수(예: N/2 + 1)를 유지하는 것이다. 이를 통해 네트워크 분할이 발생하거나 다수의 노드에 장애가 생겨도, 남은 노드들로 구성된 파티션이 정족수를 유지할 수 있다면 클러스터 서비스를 지속할 수 있다.
동적 쿼럼의 핵심 장점은 클러스터 운영의 탄력성을 높인다는 점이다. 예를 들어, 3개 노드로 구성된 클러스터에서 1개 노드에 장애가 발생하면, 남은 2개 노드는 총 노드 수를 2로 간주하고 이에 대한 과반수인 2를 쿼럼으로 삼아 서비스를 계속 유지한다. 만약 고정된 쿼럼 설정을 사용했다면, 초기 설정값(예: 3개 중 2개)을 유지해야 하므로 2개 노드만 남은 상황에서는 쿼럼을 달성하지 못해 서비스가 중단될 수 있다. 이 메커니즘은 VMware vSphere HA와 같은 가상화 플랫폼이나 Pacemaker 기반의 리눅스 고가용성 클러스터에서 널리 채택되어 운영 편의성과 가용성을 동시에 향상시킨다.
4. 쿼럼 관리 및 장애 대응
4. 쿼럼 관리 및 장애 대응
4.1. 쿼럼 디스크
4.1. 쿼럼 디스크
쿼럼 디스크는 클러스터의 쿼럼을 결정하는 데 사용되는 특별한 공유 스토리지 장치이다. 클러스터의 노드들이 투표권을 가지는 일반적인 쿼럼 구성과 달리, 쿼럼 디스크는 단일한 투표권을 가진 독립적인 구성원으로 간주된다. 이 디스크는 모든 클러스터 노드가 접근할 수 있는 공유 디스크나 네트워크 연결 스토리지 상의 특정 디스크 리소스로 설정된다.
쿼럼 디스크의 주요 역할은 클러스터의 총 투표 수에 기여하여 쿼럼을 보다 유연하게 구성할 수 있게 하는 것이다. 특히 노드 수가 짝수인 클러스터에서 유용하게 적용된다. 예를 들어, 2-노드 클러스터는 각 노드가 한 표씩 가질 경우 총 투표수가 2표가 되어 과반수 쿼럼(2표 중 2표 이상)을 달성하기 어려운 상황이 발생할 수 있다. 여기에 쿼럼 디스크를 추가하여 총 투표수를 3표로 만들면, 3표 중 2표를 획득한 파티션이 쿼럼을 유지할 수 있어 가용성을 높일 수 있다.
쿼럼 디스크의 상태는 주기적으로 모니터링되며, 디스크에 대한 쓰기 테스트를 통해 정상 작동 여부를 판단한다. 쿼럼 디스크 자체에 장애가 발생하면 해당 디스크는 투표권을 상실하게 되며, 클러스터는 남은 노드들의 투표만으로 쿼럼을 다시 계산한다. 이 방식은 Windows Server 장애 조치 클러스터와 같은 고가용성 클러스터 솔루션에서 흔히 찾아볼 수 있는 구현 방식이다.
4.2. 쿼럼 위탁자
4.2. 쿼럼 위탁자
쿼럼 위탁자는 클러스터 내 특정 노드에 쿼럼 투표권을 부여하는 대신, 외부의 신뢰할 수 있는 엔티티에게 쿼럼 결정 권한을 위임하는 구성 요소이다. 이 방식은 클러스터 멤버 노드 수가 적거나 짝수여서 전통적인 과반수 쿼럼을 구성하기 어려운 환경에서 유용하게 적용된다. 쿼럼 위탁자는 일반적으로 공유 스토리지의 특정 디스크 영역(쿼럼 디스크)이나 외부 파일 서버, 증명 서비스 등이 될 수 있다.
쿼럼 위탁자의 핵심 역할은 클러스터의 단일 진실 소스로서 기능하여, 스플릿 브레인 현상을 방지하는 것이다. 예를 들어, 두 개의 노드로만 구성된 클러스터에서 네트워크 분할이 발생하면 양쪽 노드 모두 자신이 유일한 생존자라고 판단할 수 있다. 이때 쿼럼 위탁자가 제3의 투표권을 행사하면, 위탁자와의 연결을 유지한 노드만이 쿼럼을 획득하고 클러스터를 계속 운영할 수 있다. 연결이 끊긴 다른 노드는 자동으로 서비스를 중단하게 되어 리소스에 대한 충돌 접근을 막을 수 있다.
이러한 구현은 Windows Server 장애 조치 클러스터나 Linux Pacemaker 기반의 고가용성 클러스터에서 흔히 찾아볼 수 있다. 특히 가상화 환경에서 VMware vSphere HA는 에이전트 기반의 통신과 함께 쿼럼 위탁자 개념을 활용하여 마스터 노드 선출 및 장애 판단을 수행한다. 쿼럼 위탁자를 사용할 때는 해당 서비스 자체의 가용성이 클러스터 전체의 가용성에 직접적인 영향을 미치므로, 위탁자 서비스의 이중화 또는 고가용성 구성에 대한 신중한 설계가 필수적이다.
4.3. 장애 시나리오와 복구
4.3. 장애 시나리오와 복구
클러스터에 장애가 발생하면 쿼럼 메커니즘은 시스템의 일관성을 유지하기 위해 결정적인 역할을 수행한다. 가장 흔한 장애 시나리오는 네트워크 분할로, 클러스터가 서로 통신할 수 없는 두 개 이상의 파티션으로 나뉘는 경우이다. 이때 각 파티션은 자체적으로 쿼럼을 계산한다. 쿼럼에 필요한 투표 수(예: 과반수)를 확보한 파티션만이 클러스터를 계속 운영하고 쓰기 작업을 수행할 권한을 가진다. 반면, 쿼럼을 확보하지 못한 파티션은 자동으로 서비스를 중단하거나 읽기 전용 모드로 전환하여 데이터 무결성을 보호한다. 이는 두 개의 파티션이 각자 독립적으로 작동하며 동일한 데이터를 수정하는 스플릿 브레인 현상을 방지하는 핵심 원리이다.
쿼럼을 상실한 파티션의 복구 과정은 일반적으로 네트워크 연결이 복원된 후 시작된다. 복구된 노드나 파티션은 먼저 쿼럼을 보유한 운영 중인 파티션과의 통신을 재확립한다. 이후, 운영 중인 파티션의 현재 상태 정보를 동기화받아 자신의 상태를 갱신한다. 이 과정에서 운영 파티션은 복구된 노드에 대한 투표권을 다시 부여하거나, 클러스터 구성의 변경을 반영하여 새로운 쿼럼을 계산할 수 있다. 동적 쿼럼을 지원하는 시스템에서는 노드 추가나 제거에 따라 총 투표 수와 필요한 쿼럼 수준이 자동으로 조정되어 복구 후의 클러스터 운영이 더욱 유연해진다.
복구 정책은 시스템의 가용성 요구사항에 따라 설계된다. 고가용성이 최우선인 환경에서는 쿼럼 디스크나 쿼럼 위탁자와 같은 외부 쿼럼 장치를 활용하여, 모든 노드의 장애 시에도 클러스터가 빠르게 복구될 수 있도록 한다. 반면, 데이터 일관성이 가장 중요한 데이터베이스 클러스터링 환경에서는 쿼럼을 잃은 파티션이 자동으로 재가입하는 것을 지연시키거나, 관리자의 수동 개입을 통해 데이터 동기화를 철저히 검증한 후 복구 절차를 진행하도록 구성하기도 한다. 따라서 장애 복구 전략은 쿼럼 메커니즘과 함께 시스템의 내결함성 설계 목표에 맞게 세심하게 계획되어야 한다.
5. 주요 클러스터 솔루션의 쿼럼
5. 주요 클러스터 솔루션의 쿼럼
5.1. Windows Server 장애 조치 클러스터
5.1. Windows Server 장애 조치 클러스터
Windows Server 장애 조치 클러스터는 클러스터 쿼럼을 구현하기 위해 투표 기반 시스템을 사용한다. 클러스터를 구성하는 각 노드와 특정 리소스(쿼럼 디스크 또는 파일 공유)는 기본적으로 하나의 투표권을 가진다. 클러스터는 이러한 투표권의 과반수를 확보한 노드 그룹만이 정상적으로 작동하고 리소스를 온라인 상태로 유지할 수 있다. 이는 네트워크 분할 시 양쪽 파티션이 동시에 작동하여 스플릿 브레인 현상과 데이터 손상을 일으키는 것을 방지하는 핵심 메커니즘이다.
Windows Server 장애 조치 클러스터는 다양한 쿼럼 모드를 지원하여 다양한 환경에 맞게 구성할 수 있다. 주요 모드로는 노드 과반수, 노드 및 디스크 과반수, 노드 및 파일 공유 과반수, 디스크 전용 모드가 있다. 예를 들어, 노드 및 디스크 과반수 모드에서는 쿼럼 디스크가 하나의 투표권을 가지며, 노드 투표와 함께 과반수 계산에 포함된다. 짝수 개의 노드로 구성된 클러스터에서 쿼럼 디스크는 결정적인 투표권을 제공하는 데 유용하다.
클러스터 관리자 도구를 통해 쿼럼 구성을 쉽게 설정하고 변경할 수 있으며, 쿼럼 증인(디스크 또는 파일 공유)의 상태를 모니터링할 수 있다. 장애 발생 시, 예를 들어 쿼럼 디스크에 접근할 수 없게 되면 클러스터는 자동으로 다른 쿼럼 모드로 전환하거나, 쿼럼을 유지할 수 없는 노드 그룹의 서비스를 중단하는 등의 조치를 취하여 시스템의 일관성을 우선시한다. 이는 고가용성을 유지하면서도 데이터 무결성을 보장하는 설계 원칙을 반영한다.
5.2. Linux Pacemaker/Corosync
5.2. Linux Pacemaker/Corosync
리눅스 기반의 고가용성 클러스터 솔루션인 페이스메이커와 코로싱크는 클러스터 쿼럼 관리를 위해 통합된 방식을 제공한다. 코로싱크는 클러스터 구성원 간의 통신과 멤버십 정보, 쿼럼 상태를 관리하는 핵심 엔진 역할을 한다. 이 시스템은 기본적으로 노드 기반의 투표 방식을 사용하며, 각 노드는 일반적으로 1표의 투표권을 가진다. 클러스터가 정상적으로 작동하려면 과반수(50% 초과)의 투표를 가진 파티션이 쿼럼을 획득해야 한다.
쿼럼 구현 방식은 매우 유연하게 구성할 수 있다. 관리자는 crm 명령어나 pcs 명령어를 통해 특정 노드의 투표 가중치를 0으로 설정하여 쿼럼 계산에서 제외시킬 수 있으며, 이는 유지보수 중인 노드를 일시적으로 클러스터에서 제거할 때 유용하다. 또한, 쿼럼 디스크나 쿼럼 위탁자와 같은 외부 쿼럼 장치를 설정할 수 있다. 예를 들어, iSCSI나 파이버 채널 스토리지에 위치한 공유 디스크에 쿼럼 디스크를 생성하고, 이 디스크에 투표권을 부여함으로써 짝수 개의 노드로 구성된 클러스터에서도 명확한 과반수 결정을 내릴 수 있게 한다.
페이스메이커/코로싱크는 동적 쿼럼 조정 기능도 지원한다. 클러스터의 총 투표수가 네트워크 분할이나 다수의 노드 장애로 인해 변경되면, 시스템은 자동으로 새로운 쿼럼 기준값(과반수)을 재계산한다. 이는 장애 상황에서도 남아 있는 노드들이 가능한 한 서비스를 계속 유지할 수 있도록 돕는다. 쿼럼 상태는 corosync-quorumtool이나 pcs status 명령어를 통해 실시간으로 확인할 수 있으며, 현재 총 투표수, 쿼럼을 획득했는지 여부, 각 노드의 투표 가중치 등의 정보를 제공한다.
5.3. VMware vSphere HA
5.3. VMware vSphere HA
VMware vSphere HA는 VMware의 가상화 플랫폼인 vSphere에 포함된 고가용성 기능으로, 호스트 장애 발생 시 해당 호스트에서 실행 중이던 가상 머신을 클러스터 내 다른 정상 호스트로 자동으로 재시작하여 서비스 중단 시간을 최소화한다. vSphere HA는 자체적인 쿼럼 관리 메커니즘을 사용하여 클러스터 상태를 결정하고, 스플릿 브레인 현상이 발생했을 때 어떤 호스트 그룹이 계속해서 가상 머신을 보호할 수 있는지를 판단한다.
vSphere HA 쿼럼은 기본적으로 호스트 기반의 다수결 쿼럼 원칙으로 작동한다. 각 호스트는 하나의 투표권을 가지며, 클러스터는 vCenter Server에 의해 관리된다. 쿼럼은 정상적인 클러스터 운영을 위해 과반수(50% 초과)의 호스트 투표를 유지해야 한다. 네트워크 분할로 클러스터가 여러 파티션으로 나뉘면, 과반수 투표권을 보유한 파티션만이 활성 상태를 유지하고 가상 머신에 대한 보호 기능을 계속 수행한다. 투표권이 부족한 파티션의 호스트들은 보호 기능을 중단한다.
vSphere HA는 쿼럼 디스크의 개념을 사용하여 네트워크 격리 상황에서도 쿼럼을 유지할 수 있도록 한다. 이는 데이터스토어 상의 특정 파일로, 네트워크 통신이 단절된 호스트가 이 디스크에 접근하여 자신의 상태를 기록하고 클러스터의 존재를 확인하는 데 사용된다. 이를 통해 네트워크는 분할되었지만 스토리지 네트워크는 공유되는 시나리오에서 쿼럼 판정의 정확성을 높인다. 또한, vSphere 6.5 이상에서는 프로비저닝된 가상 머신 수를 기반으로 쿼럼을 동적으로 조정하는 기능도 도입되었다.
이러한 쿼럼 메커니즘은 복잡한 장애 시나리오에서도 데이터 무결성을 보호하면서 가용성을 제공하는 데 핵심적이다. 예를 들어, 두 개의 호스트로 구성된 클러스터에서는 한 호스트가 실패하면 나머지 한 호스트가 과반수(50% 초과, 즉 2개 중 1개 이상)를 확보하지 못하므로 기본적으로 쿼럼에 실패한다. 이를 해결하기 위해 쿼럼 위탁자 역할을 하는 공유 스토리지나 외부 와치독을 설정하여 투표권을 추가함으로써 장애 상황에서도 클러스터가 계속 작동할 수 있도록 구성할 수 있다.
6. 설계 고려사항
6. 설계 고려사항
6.1. 클러스터 크기와 쿼럼 구성
6.1. 클러스터 크기와 쿼럼 구성
클러스터의 크기, 즉 전체 노드 수는 쿼럼 구성에 직접적인 영향을 미친다. 가장 일반적인 과반수 쿼럼 방식을 사용할 때, 쿼럼을 달성하기 위한 최소 투표 수는 (전체 노드 수 / 2) + 1로 계산된다. 따라서 클러스터의 총 노드 수가 짝수인지 홀수인지에 따라 내결함성과 가용성이 달라진다. 예를 들어, 2노드 클러스터는 단일 노드 장애 시 쿼럼을 상실하여 서비스가 중단될 수 있으므로, 쿼럼 위탁자나 쿼럼 디스크와 같은 외부 투표 장치를 추가로 구성하는 것이 일반적이다.
클러스터 설계 시 노드 수를 홀수로 유지하는 것이 권장된다. 3노드나 5노드와 같은 홀수 크기의 클러스터는 단일 노드 또는 연속된 다수 노드의 장애 발생 시에도 남은 노드들이 자연스럽게 과반수 쿼럼을 형성할 가능성이 높기 때문이다. 이는 네트워크 분할이 발생했을 때도 마찬가지로, 스플릿 브레인 현상을 방지하고 데이터 일관성을 유지하는 데 유리하다. 대규모 분산 시스템에서는 동적 쿼럼이나 노드 가중치 쿼럼과 같은 방식을 도입하여 클러스터 크기가 변동하거나 특정 노드의 중요도가 다른 경우에 유연하게 대응할 수 있다.
클러스터를 확장할 때는 쿼럼 정족수도 함께 재계산해야 한다. 노드를 추가하거나 제거하면 전체 투표 수가 변경되며, 이에 맞춰 쿼럼 임계값을 업데이트하지 않으면 예상치 못한 서비스 중단이 발생할 수 있다. 또한, 고가용성과 데이터 안전성 사이의 균형을 고려해야 한다. 쿼럼 요구치를 낮추면 가용성은 높아질 수 있지만, 네트워크 분할 시 데이터 불일치 위험은 증가한다. 반대로 쿼럼 요구치를 높이면 일관성은 강화되지만, 장애 발생 시 서비스를 유지할 수 있는 가능성은 낮아진다.
6.2. 네트워크 분할 시의 동작
6.2. 네트워크 분할 시의 동작
네트워크 분할 상황에서 쿼럼의 핵심 역할은 시스템의 일관성을 유지하면서도 가능한 한 가용성을 확보하는 것이다. 네트워크 장애로 인해 클러스터가 두 개 이상의 독립된 파티션으로 나뉘면, 각 파티션은 자신이 유일한 정상 파티션인지 아니면 분리된 일부인지를 판단해야 한다. 이때 쿼럼 메커니즘이 적용된다. 사전에 정의된 규칙(예: 과반수 투표권 확보)에 따라 쿼럼을 획득한 파티션만이 클러스터를 계속 운영하고 쓰기 작업을 수행할 권한을 가진다. 이는 양쪽 파티션이 각자 독립적으로 작동하여 데이터 무결성을 파괴하는 스플릿 브레인 현상을 방지하기 위한 필수적인 조치이다.
쿼럼을 획득하지 못한 파티션은 자동으로 서비스를 중단하거나 읽기 전용 모드로 전환하여 데이터의 손상을 막는다. 예를 들어, 5개 노드로 구성된 클러스터에서 네트워크가 3개 노드 파티션과 2개 노드 파티션으로 분할되면, 과반수인 3개 노드 파티션만이 쿼럼을 유지하여 정상 운영을 계속한다. 2개 노드 파티션은 쿼럼 부족으로 인해 자원을 펜싱하거나 서비스를 중단하게 된다. 이러한 결정은 일반적으로 클러스터 관리자 소프트웨어(예: Pacemaker, Windows Server 장애 조치 클러스터)에 의해 자동으로 수행된다.
네트워크 분할 시의 구체적인 동작은 선택한 쿼럼 구현 방식에 따라 달라질 수 있다. 기본적인 다수결 쿼럼 외에도, 쿼럼 디스크를 공유 저장장치로 활용하거나, 특정 위탁자 노드에 결정권을 위임하는 방식 등이 있다. 이러한 방법들은 노드 수가 짝수이거나 특정 노드의 장애가 빈번한 환경에서도 쿼럼을 안정적으로 유지할 수 있도록 돕는다. 최근의 고가용성 시스템에서는 네트워크 상태가 일시적으로 불안정해져도 불필요한 서비스 중단을 피하기 위해 동적 쿼럼 같은 유연한 메커니즘을 채택하기도 한다.
결국 네트워크 분할은 클러스터 설계에서 반드시 고려해야 하는 주요 장애 시나리오이며, 쿼럼은 이 상황에서 데이터 일관성이라는 최우선 목표를 지키기 위한 핵심 안전장치 역할을 한다. 효과적인 쿼럼 전략은 단순한 가용성 이상으로 분산 시스템의 신뢰성과 안정성을 보장하는 기반이 된다.
6.3. 성능과 가용성의 균형
6.3. 성능과 가용성의 균형
쿼럼 설계는 시스템의 성능과 가용성 사이에서 신중한 균형을 잡아야 한다. 쿼럼을 구성하는 데 필요한 최소 투표 수나 멤버 수를 높게 설정하면, 스플릿 브레인 현상과 데이터 불일치를 방지하는 데 유리하여 시스템의 일관성과 안정성을 높일 수 있다. 그러나 이는 동시에 클러스터가 정상적으로 운영되기 위해 더 많은 노드가 온라인 상태여야 함을 의미하므로, 장애 발생 시 서비스 가용성이 쉽게 저하될 수 있다. 반대로 쿼럼 요구 조건을 낮추면 소수의 노드만으로도 클러스터를 유지할 수 있어 가용성은 높아지지만, 네트워크 지연이나 일시적인 단절로 인해 여러 개의 독립적인 파티션이 동시에 활성화되는 위험이 증가한다.
이러한 트레이드오프는 클러스터의 규모와 배치 환경에 따라 최적의 지점이 달라진다. 소규모 클러스터에서는 단 한 두 개의 노드 장애로도 쿼럼을 상실할 수 있어, 다수결 쿼럼보다는 동적 쿼럼이나 쿼럼 디스크와 같은 보조적인 쿼럼 리소스를 활용하는 전략이 효과적일 수 있다. 대규모 클러스터에서는 모든 노드의 투표를 균등하게 반영하는 방식보다, 노드 가중치 쿼럼을 통해 핵심 서버에 더 높은 가중치를 부여하거나, 특정 랙 또는 데이터 센터 단위로 쿼럼 그룹을 구성하는 방식이 선호된다. 이는 물리적 인프라의 장애 도메인을 고려하여, 단일 지점의 장애가 전체 클러스터의 운영을 중단시키지 않도록 하는 설계이다.
결국 성능과 가용성의 균형은 비즈니스 요구사항에 기반하여 결정된다. 금융 거래나 데이터베이스 클러스터링과 같이 데이터 무결성이 최우선인 환경에서는 가용성보다 일관성을 보장하는 보수적인 쿼럼 정책이 적합하다. 반면, 웹 서비스나 콘텐츠 전송 네트워크와 같이 읽기 작업이 대부분이고 빠른 장애 복구가 중요한 환경에서는 보다 관대한 쿼럼 설정을 통해 서비스 중단 시간을 최소화하는 것이 목표가 된다. 설계자는 클러스터의 예상 장애율, 네트워크 안정성, 그리고 서비스 수준 협정을 종합적으로 평가하여 최적의 쿼럼 전략을 수립해야 한다.
