맨위로가기

고가용성 클러스터

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

고가용성 클러스터는 시스템의 가동 시간을 극대화하기 위해 설계된 컴퓨터 시스템 그룹으로, 애플리케이션의 지속적인 운영을 보장한다. 이러한 클러스터는 애플리케이션 설계, 노드 구성, 노드 안정성 및 장애 조치 전략 등 다양한 측면을 고려하여 구축된다. 애플리케이션은 클러스터 환경에서 실행되기 위해 특정 기술적 요구 사항을 충족해야 하며, 노드는 액티브/액티브, 액티브/패시브, N+1, N+M, N-to-1, N-to-N 등 다양한 방식으로 구성될 수 있다. 또한, 디스크 미러링, 네트워크 이중화, 스토리지 영역 네트워크(SAN) 이중화, 전원 이중화 등의 기술을 통해 노드의 안정성을 확보하고, 즉시 실패, 실패 시 하나 시도, 실패 시 모두 시도 등의 장애 조치 전략을 통해 시스템의 가용성을 유지한다.

2. 애플리케이션 설계 요구 사항

모든 애플리케이션이 고가용성 클러스터 환경에서 실행될 수 있는 것은 아니며, 필요한 설계 결정은 소프트웨어 설계 단계 초기에 이루어져야 한다.[1] 고가용성 클러스터 환경에서 실행하려면 애플리케이션은 적어도 다음 기술 요구 사항을 충족해야 하며, 특히 다음 두 가지는 클러스터에서 안정적인 기능을 수행하는 데 매우 중요하며 완전히 충족하기 가장 어렵다.[1]


  • 애플리케이션 시작, 중지, 강제 중지 및 상태 확인이 비교적 쉬워야 한다. (예: 명령 줄 인터페이스나 스크립트)
  • NAS/SAN 같은 공유 스토리지를 사용할 수 있어야 한다.
  • 애플리케이션은 대부분의 상태를 비휘발성 공유 스토리지에 저장해야 하며, 실패 직전의 마지막 상태에서 다른 노드에서 다시 시작할 수 있어야 한다.
  • 충돌이나 저장된 상태에서 다시 시작할 때 데이터를 손상시키지 않아야 한다.
  • https://docs.microsoft.com/en-us/windows-server/failover-clustering/failover-clustering-overview Microsoft Server 2012 및 2016 장애 조치 클러스터와 같은 가상 서버 환경을 사용하면 이러한 제약 조건 중 일부를 최소화할 수 있다.
  • 클러스터 인식 애플리케이션은 서버 애플리케이션 충돌을 처리하고, 서비스(예: 데이터베이스)에 대한 클라이언트 액세스를 유지하면서 라이브 "롤링" 소프트웨어 업그레이드를 지원할 수 있다.

2. 1. 애플리케이션 제어

모든 애플리케이션이 고가용성 클러스터 환경에서 실행될 수 있는 것은 아니며, 필요한 설계 결정은 소프트웨어 설계 단계 초기에 이루어져야 한다. 고가용성 클러스터 환경에서 실행하려면 애플리케이션은 적어도 다음 기술 요구 사항을 충족해야 하며, 마지막 두 가지는 클러스터에서 안정적인 기능을 수행하는 데 매우 중요하며 완전히 충족하기 가장 어렵다.

  • 애플리케이션을 시작, 중지, 강제 중지하고 상태를 확인하는 비교적 쉬운 방법이 있어야 한다. 실제적으로 이것은 애플리케이션이 여러 인스턴스를 지원하는 것을 포함하여 애플리케이션을 제어하는 명령줄 인터페이스 또는 스크립트를 가져야 함을 의미한다.
  • 애플리케이션은 공유 스토리지(NAS/SAN)를 사용할 수 있어야 한다.
  • 가장 중요한 것은 애플리케이션이 상태의 대부분을 비휘발성 공유 스토리지에 저장해야 한다는 것이다. 마찬가지로 중요한 것은 공유 스토리지에서 저장된 상태를 사용하여 실패 직전의 마지막 상태에서 다른 노드에서 다시 시작할 수 있는 기능이다.
  • 애플리케이션은 충돌하거나 저장된 상태에서 다시 시작하는 경우 데이터를 손상시키지 않아야 한다.
  • 가상 서버 환경을 사용하면 이러한 제약 조건 중 일부를 최소화할 수 있다. 가상 서버 환경에서는 하이퍼바이저 자체가 클러스터를 인식하고 물리적 호스트 간에 가상 머신(실행 중인 메모리 상태 포함)의 원활한 마이그레이션을 제공한다.
  • 이 접근 방식과 클러스터 인식 애플리케이션을 실행하는 것의 주요 차이점은 후자는 서버 애플리케이션 충돌을 처리하고 서비스(예: 데이터베이스)에 대한 클라이언트 액세스를 유지하면서 라이브 "롤링" 소프트웨어 업그레이드를 지원할 수 있다는 것이다. 이는 한 인스턴스가 서비스 제공하고 다른 인스턴스가 업그레이드 또는 복구되는 동안 발생한다. 이렇게 하려면 클러스터 인스턴스가 통신하고, 캐시를 플러시하고, 핸드오프 중에 파일 액세스를 조정해야 한다. 장애 조치 클러스터링은 계획, 생성, 구성 및 문제 해결에 해당한다.

2. 2. 공유 스토리지 사용

애플리케이션은 공유 스토리지(NAS/SAN)를 사용할 수 있어야 한다.[1] 가장 중요한 것은 애플리케이션이 상태 대부분을 비휘발성 공유 스토리지에 저장해야 한다는 것이다.[1] 마찬가지로 중요한 것은 공유 스토리지에 저장된 상태를 사용하여 실패 직전의 마지막 상태에서 다른 노드에서 다시 시작할 수 있는 기능이다.[1]

2. 3. 상태 저장 및 복구

모든 애플리케이션이 고가용성 클러스터 환경에서 실행될 수 있는 것은 아니며, 필요한 설계 결정은 소프트웨어 설계 단계 초기에 이루어져야 한다. 고가용성 클러스터 환경에서 실행하려면 애플리케이션은 적어도 다음 기술 요구 사항을 충족해야 하며, 마지막 두 가지는 클러스터에서 안정적인 기능을 수행하는 데 매우 중요하며 완전히 충족하기 가장 어렵다.

  • 애플리케이션은 공유 스토리지(NAS/SAN)를 사용할 수 있어야 한다.
  • 가장 중요한 것은 애플리케이션이 상태의 대부분을 비휘발성 공유 스토리지에 저장해야 한다는 것이다. 마찬가지로 중요한 것은 공유 스토리지에서 저장된 상태를 사용하여 실패 직전의 마지막 상태에서 다른 노드에서 다시 시작할 수 있는 기능이다.
  • 애플리케이션은 충돌하거나 저장된 상태에서 다시 시작하는 경우 데이터를 손상시키지 않아야 한다.

2. 4. 데이터 무결성 보장

모든 애플리케이션이 고가용성 클러스터 환경에서 실행될 수 있는 것은 아니며, 이를 위한 설계는 소프트웨어 설계 초기 단계에서 이루어져야 한다. 고가용성 클러스터 환경에서 안정적으로 작동하기 위한 애플리케이션의 기술 요구 사항은 다음과 같으며, 특히 마지막 두 가지는 매우 중요하면서도 충족하기 어렵다.

  • 애플리케이션을 시작, 중지, 강제 중지하고 상태를 확인하는 비교적 쉬운 방법 (예: 명령줄 인터페이스나 스크립트)이 있어야 한다.
  • 애플리케이션은 공유 스토리지(NAS/SAN)를 사용할 수 있어야 한다.
  • 애플리케이션은 상태 대부분을 비휘발성 공유 스토리지에 저장해야 하며, 공유 스토리지에 저장된 상태를 사용하여 실패 직전의 마지막 상태에서 다른 노드에서 다시 시작할 수 있어야 한다.
  • 애플리케이션은 충돌하거나 저장된 상태에서 다시 시작하는 경우에도 데이터를 손상시키지 않아야 한다.
  • 가상 서버 환경(예: https://docs.microsoft.com/en-us/windows-server/failover-clustering/failover-clustering-overview Microsoft Server 2012 및 2016 장애 조치 클러스터)을 사용하면 이러한 제약 조건 중 일부를 완화할 수 있다. 하이퍼바이저가 클러스터를 인식하여 물리적 호스트 간에 가상 머신(실행 중인 메모리 상태 포함)의 원활한 마이그레이션을 지원하기 때문이다.
  • 클러스터 인식 애플리케이션을 실행하는 것의 주요 차이점은 서버 애플리케이션 충돌을 처리하고, 서비스(예: 데이터베이스)에 대한 클라이언트 액세스를 유지하면서 라이브 "롤링" 소프트웨어 업그레이드를 지원할 수 있다는 것이다. 이는 한 인스턴스가 서비스를 제공하고 다른 인스턴스가 업그레이드 또는 복구되는 동안 발생한다. 이를 위해 클러스터 인스턴스 간 통신, 캐시 플러시, 핸드오프 중 파일 액세스 조정이 필요하다.

2. 5. 가상 서버 환경의 활용

가상 서버 환경을 사용하면 고가용성 클러스터의 제약 조건 중 일부를 최소화할 수 있다. 가상 서버 환경에서는 하이퍼바이저 자체가 클러스터를 인식하고, 물리적 호스트 간에 가상 머신(실행 중인 메모리 상태 포함)의 원활한 마이그레이션을 제공한다.[1] 이러한 접근 방식과 클러스터 인식 애플리케이션을 실행하는 것의 주요 차이점은 후자가 서버 애플리케이션 충돌을 처리하고, 서비스(예: 데이터베이스)에 대한 클라이언트 액세스를 유지하면서 라이브 "롤링" 소프트웨어 업그레이드를 지원할 수 있다는 것이다. 이는 한 인스턴스가 서비스를 제공하고 다른 인스턴스가 업그레이드 또는 복구되는 동안 발생한다. 이렇게 하려면 클러스터 인스턴스가 통신하고, 캐시를 플러시하고, 핸드오프 중에 파일 액세스를 조정해야 한다.

2. 6. 클러스터 인식 애플리케이션의 장점

고가용성 클러스터 환경에서 실행되는 애플리케이션은 다음 기술 요구 사항을 충족해야 하며, 특히 마지막 두 가지는 안정적인 클러스터 기능을 위해 매우 중요하며 충족하기 가장 어렵다.

  • 애플리케이션을 시작, 중지, 강제 중지하고 상태를 확인하는 비교적 쉬운 방법이 있어야 한다. 이는 애플리케이션이 여러 인스턴스를 지원하는 것을 포함하여 애플리케이션을 제어하는 명령줄 인터페이스나 스크립트를 가져야 함을 의미한다.
  • 애플리케이션은 공유 스토리지(NAS/SAN)를 사용할 수 있어야 한다.
  • 가장 중요한 것은 애플리케이션이 상태 대부분을 비휘발성 공유 스토리지에 저장해야 한다는 것이다. 또한 공유 스토리지에 저장된 상태를 사용하여 실패 직전의 마지막 상태에서 다른 노드에서 다시 시작할 수 있어야 한다.
  • 애플리케이션은 충돌하거나 저장된 상태에서 다시 시작하는 경우 데이터를 손상시키지 않아야 한다.


가상 서버 환경을 사용하면 이러한 제약 조건 중 일부를 최소화할 수 있다. 가상 서버 환경에서는 하이퍼바이저 자체가 클러스터를 인식하고 물리적 호스트 간에 가상 머신(실행 중인 메모리 상태 포함)의 원활한 마이그레이션을 제공한다.

클러스터 인식 애플리케이션을 실행하는 것과 위의 접근 방식의 주요 차이점은 전자는 서버 애플리케이션 충돌을 처리하고 서비스(예: 데이터베이스)에 대한 클라이언트 액세스를 유지하면서 라이브 "롤링" 소프트웨어 업그레이드를 지원할 수 있다는 것이다. 이는 한 인스턴스가 서비스를 제공하고 다른 인스턴스가 업그레이드 또는 복구되는 동안 발생한다. 이를 위해 클러스터 인스턴스는 통신하고, 캐시를 플러시하고, 핸드오프 중에 파일 액세스를 조정해야 한다.

3. 노드 구성

2노드 고가용성 클러스터 네트워크 다이어그램


고가용성(HA) 클러스터는 중복성을 제공하기 위해 최소 두 개의 노드로 구성되는 것이 일반적이지만, 수십 개의 노드로 구성되는 경우도 있다. 첨부된 다이어그램은 쿼럼/증인 기능에 대한 언급을 제외하고는 일반적인 HA 클러스터의 구성을 보여준다.

클러스터 구성은 다음과 같이 분류할 수 있다.

  • 액티브/액티브 (Active/Active)
  • 액티브/패시브 (Active/Passive)
  • N+1
  • N+M
  • N-to-1
  • N-to-N
  • 논리 호스트 (Logical Host)


각 구성에 대한 자세한 내용은 하위 섹션을 참고하면 된다.

3. 1. 액티브/액티브 (Active/Active)

실패한 노드를 대상으로 하는 트래픽은 기존 노드로 전달되거나 나머지 노드에서 로드 밸런싱된다. 이는 일반적으로 노드가 동종 소프트웨어 구성을 사용하는 경우에만 가능하다.

3. 2. 액티브/패시브 (Active/Passive)

액티브/패시브 구성은 각 노드에 대해 완전한 중복 인스턴스를 제공하며, 관련된 기본 노드가 실패할 때만 온라인으로 전환된다.[2] 이 구성은 일반적으로 가장 많은 추가 하드웨어를 필요로 한다.

3. 3. N+1

N+1 구성은 실패한 노드의 역할을 넘겨받기 위해 온라인으로 전환되는 단일 추가 노드를 제공한다.[2] 각 기본 노드에 이기종 소프트웨어 구성이 있는 경우, 추가 노드는 책임이 있는 기본 노드의 모든 역할을 보편적으로 맡을 수 있어야 한다. 이는 일반적으로 여러 서비스가 동시에 실행되는 클러스터를 의미하며, 단일 서비스의 경우에는 액티브/패시브 구성과 동일하게 된다.

3. 4. N+M

N+M 구성은 단일 클러스터가 많은 서비스를 관리할 때 하나의 전용 장애 조치(failover) 노드만으로는 충분한 중복성을 제공하지 못하는 경우에 사용된다. 이 경우, 하나 이상의 (M) 대기 서버를 포함하여 가용성을 높인다. 대기 서버 수는 비용과 신뢰성 요구 사항을 고려하여 결정한다.[2]

3. 5. N-to-1

N-to-1 구성은 장애 조치 대기 노드가 원래 노드가 복구되거나 다시 온라인으로 전환될 때까지 임시 활성 노드가 되도록 허용하며, 이 시점에서 고가용성을 복원하기 위해 서비스 또는 인스턴스가 다시 장애 조치되어야 한다.[2]

3. 6. N-to-N

N-to-N 구성은 액티브/액티브와 N+M 클러스터의 조합이다. N-to-N 클러스터는 실패한 노드의 서비스, 인스턴스 또는 연결을 나머지 활성 노드에 재분배한다. 이러한 방식은 (액티브/액티브와 마찬가지로) '대기' 노드의 필요성을 제거하지만, 모든 활성 노드에 추가 용량이 필요하게 된다.[2]

3. 7. 논리 호스트 (Logical Host)

"논리 호스트" 또는 "클러스터 논리 호스트"라는 용어는 클러스터에서 제공하는 서비스에 접근하는 데 사용되는 네트워크 주소를 설명하는 데 사용된다. 이 논리 호스트 ID는 단일 클러스터 노드에 연결되지 않는다. 실제로 이것은 클러스터에서 제공하는 서비스와 연결된 네트워크 주소/호스트 이름이다. 데이터베이스가 실행 중인 클러스터 노드가 다운되면, 데이터베이스는 다른 클러스터 노드에서 다시 시작된다.

4. 노드 안정성

고가용성 클러스터는 개별 시스템과 공유 인프라를 최대한 안정적으로 만들기 위해 사용 가능한 모든 기술을 사용한다. 이러한 페일오버에서 제공되는 서비스는 잠시 동안 사용할 수 없으므로, 페일오버를 방지하기 위한 조치가 선호된다. 이를 위해 다음과 같은 기술들이 사용된다.

4. 1. 디스크 미러링 및 RAID

고가용성 클러스터는 개별 시스템과 공유 인프라를 최대한 안정적으로 만들기 위해 다음과 같은 기술을 사용한다.

  • 디스크 미러링(또는 독립 디스크의 중복 배열 - RAID)을 통해 내부 디스크 오류로 인해 시스템이 중단되지 않도록 한다. 분산 복제 블록 장치가 그 예이다.
  • 중복 네트워크 연결을 통해 단일 케이블, 스위치 또는 네트워크 인터페이스 오류로 인해 네트워크 중단이 발생하지 않도록 한다.
  • 중복 스토리지 영역 네트워크(SAN) 연결을 통해 단일 케이블, 스위치 또는 인터페이스 오류로 인해 스토리지 연결이 손실되지 않도록 한다(이는 공유 없음 아키텍처를 위반하게 된다).
  • 서로 다른 회로의 중복 전력 입력(일반적으로 모두 또는 모두 무정전 전원 공급 장치로 보호됨) 및 중복 전원 공급 장치를 통해 단일 전원 공급 장치, 케이블, UPS 또는 전원 공급 장치 오류로 인해 시스템 전원이 손실되지 않도록 한다.

4. 2. 네트워크 이중화

고가용성 클러스터는 개별 시스템과 공유 인프라의 안정성을 극대화하기 위해 다양한 기술을 사용한다. 그중 네트워크 이중화는 다음과 같다.

  • 네트워크 이중화: 중복 네트워크 연결을 통해 단일 케이블, 스위치, 네트워크 인터페이스 오류로 인한 네트워크 중단을 방지한다.

4. 3. 스토리지 영역 네트워크 (SAN) 이중화

고가용성 클러스터는 스토리지 영역 네트워크(SAN) 연결을 이중화하여 단일 케이블, 스위치 또는 인터페이스 오류로 인해 스토리지 연결이 끊기는 것을 방지한다. 이는 공유 없음 아키텍처를 위반하는 것이다.

4. 4. 전원 이중화

고가용성 클러스터는 개별 시스템과 공유 인프라의 안정성을 극대화하기 위해 다양한 기술을 사용한다.

  • 서로 다른 회로의 중복 전력 입력(일반적으로 모두 또는 모두 무정전 전원 공급 장치로 보호됨) 및 중복 전원 공급 장치를 통해 단일 전원 공급 장치, 케이블, UPS 또는 전원 공급 장치 오류로 인해 시스템 전원이 손실되지 않도록 한다.[1]

5. 장애 조치 전략

분산 컴퓨팅에서 장애를 처리하는 시스템은 장애 해결을 위해 다양한 전략을 가지고 있다. 예를 들어, 아파치 카산드라 API 헥터는 장애 조치를 구성하는 세 가지 방법을 정의한다.


  • '''즉시 실패''' ("FAIL_FAST"): 첫 번째 노드에 도달할 수 없는 경우 장애 해결 시도가 실패한다.
  • '''실패 시, 하나 시도 - 다음 사용 가능''' ("ON_FAIL_TRY_ONE_NEXT_AVAILABLE"): 시스템이 포기하기 전에 가장 접근 가능하거나 사용 가능한 하나의 호스트를 시도한다.
  • '''실패 시, 모두 시도''' ("ON_FAIL_TRY_ALL_AVAILABLE"): 시스템이 포기하기 전에 기존의 모든 사용 가능한 노드를 시도한다.

5. 1. 즉시 실패 (Fail Fast)

분산 컴퓨팅에서 장애를 처리하는 시스템은 장애를 해결하기 위한 다양한 전략을 가지고 있다. 예를 들어, 아파치 카산드라 API 헥터는 장애 조치를 구성하는 세 가지 방법을 정의한다.

  • '''즉시 실패'''는 "FAIL_FAST"로 스크립트화되며, 첫 번째 노드에 도달할 수 없는 경우 장애를 해결하려는 시도가 실패함을 의미한다.

5. 2. 실패 시, 하나 시도 - 다음 사용 가능 (On Fail, Try One Next Available)

분산 컴퓨팅에서 장애를 처리하는 시스템은 장애 해결을 위해 다양한 전략을 가지고 있다. 예를 들어 아파치 카산드라 API 헥터는 장애 조치를 구성하는 세 가지 방법을 정의한다.[1]

  • '''즉시 실패''' ("FAIL_FAST"): 첫 번째 노드에 도달할 수 없는 경우 장애 해결 시도가 실패한다.[1]
  • '''실패 시, 하나 시도 - 다음 사용 가능''' ("ON_FAIL_TRY_ONE_NEXT_AVAILABLE"): 시스템이 포기하기 전에 가장 접근 가능하거나 사용 가능한 하나의 호스트를 시도한다.[1]
  • '''실패 시, 모두 시도''' ("ON_FAIL_TRY_ALL_AVAILABLE"): 시스템이 포기하기 전에 기존의 모든 사용 가능한 노드를 시도한다.[1]

5. 3. 실패 시, 모두 시도 (On Fail, Try All Available)

분산 컴퓨팅에서 장애를 처리하는 시스템은 장애를 해결하기 위해 다양한 전략을 가지고 있다. 예를 들어, 아파치 카산드라 API 헥터는 장애 조치를 구성하는 세 가지 방법을 정의한다. 그 중 '''실패 시, 모두 시도'''는 "ON_FAIL_TRY_ALL_AVAILABLE"로 스크립트화되며, 시스템이 포기하기 전에 기존의 모든 사용 가능한 노드를 시도함을 의미한다.

참조

[1] 서적 Pro Linux High Availability Clustering Apress
[2] 서적 Railway Computer 3.0: An Innovative Board Design Could Revolutionize The Market https://www.menmicro[...] MEN Mikro Elektronik 2015-09-21
[3] 웹사이트 HAクラスタとは - IT用語辞典 https://e-words.jp/w[...] 2022-01-03
[4] 웹사이트 冗長化とは {{!}} OSSのデージーネット https://www.designet[...] 2022-01-03
[5] 서적 Foundations of modern networking : SDN, NFV, QoE, IoT, and Cloud https://www.worldcat[...] 2016



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com