고가용성 클러스터
High-availability cluster![]() |
고가용성 클러스터(HA 클러스터, 페일오버 클러스터라고도 함)는 다운타임을 최소화하면서 안정적으로 사용할 수 있는 서버 애플리케이션을 지원하는 컴퓨터 그룹입니다.시스템 컴포넌트에 장애가 발생해도 서비스를 계속하는 그룹 또는 클러스터 내의 다중 컴퓨터를 고가용성 소프트웨어를 사용하여 운용합니다.클러스터링을 사용하지 않으면 특정 응용 프로그램을 실행하는 서버가 크래시할 경우 크래시된 서버가 수정될 때까지 응용 프로그램을 사용할 수 없습니다.HA 클러스터링은 하드웨어/소프트웨어 장애를 검출하고 관리자의 개입 없이 다른 시스템에서 애플리케이션을 즉시 재시작함으로써 이 상황을 해결합니다.이 프로세스를 페일오버라고 합니다.이 프로세스의 일환으로 클러스터링 소프트웨어는 해당 노드에서 애플리케이션을 시작하기 전에 노드를 구성할 수 있습니다.예를 들어 적절한 파일 시스템을 Import하여 마운트해야 하고 네트워크 하드웨어를 구성해야 하며 일부 지원 애플리케이션도 실행해야 합니다.[1]
HA 클러스터는 중요한 데이터베이스, 네트워크상의 파일 공유, 비즈니스 애플리케이션 및 전자 상거래 웹 사이트와 같은 고객 서비스에 자주 사용됩니다.HA 클러스터 구현은 다중 네트워크 연결 및 스토리지 영역 네트워크를 통해 이중으로 연결된 데이터 스토리지를 포함하여 단일 장애 지점을 제거하기 위해 클러스터에 이중화를 구축하려고 시도합니다.
HA 클러스터는 일반적으로 클러스터에 있는 각 노드의 상태와 상태를 모니터링하는 데 사용되는 하트비트 전용 네트워크 연결을 사용합니다.모든 클러스터링 소프트웨어가 처리할 수 있어야 하는 미묘하지만 심각한 조건은 스플릿 브레인입니다.스플릿 브레인에서는 모든 프라이빗 링크가 동시에 다운되지만 클러스터 노드는 아직 실행 중일 때 발생합니다.이 경우 클러스터의 각 노드가 다른 모든 노드가 다운되었다고 잘못 판단하여 다른 노드가 아직 실행 중인 서비스를 시작하려고 할 수 있습니다.서비스의 인스턴스가 중복되면 공유 스토리지의 데이터가 손상될 수 있습니다.
HA 클러스터는 종종 쿼럼 감시 스토리지(로컬 또는 클라우드)를 사용하여 이 시나리오를 방지합니다.감시 장치는 분할 클러스터의 두 절반 간에 공유할 수 없기 때문에 모든 클러스터 멤버가 서로 통신할 수 없는 경우(예를 들어 하트비트 장애), 멤버가 감시 장치에 액세스할 수 없는 경우 활성화될 수 없습니다.
응용 프로그램 설계 요건
모든 애플리케이션을 고가용성 클러스터 환경에서 실행할 수 있는 것은 아닙니다.필요한 설계 결정은 소프트웨어 설계 단계 초기에 해야 합니다.고가용성 클러스터 환경에서 애플리케이션을 실행하려면 적어도 다음 기술 요건을 충족해야 합니다.이 중 마지막 2개는 클러스터의 신뢰성 높은 기능에 매우 중요하며 완전히 충족시키기가 가장 어렵습니다.
- 응용 프로그램의 시작, 중지, 강제 중지 및 상태를 비교적 쉽게 확인할 수 있는 방법이 있어야 합니다.즉, 응용 프로그램의 여러 인스턴스 지원을 포함하여 응용 프로그램을 제어하기 위한 명령줄 인터페이스 또는 스크립트가 응용 프로그램에 있어야 합니다.
- 애플리케이션은 공유 스토리지(NAS/SAN)를 사용할 수 있어야 합니다.
- 가장 중요한 것은 애플리케이션이 가능한 한 많은 상태를 비휘발성 공유 스토리지에 저장해야 한다는 것입니다.마찬가지로 중요한 것은 공유 스토리지에서 저장된 상태를 사용하여 장애 발생 전 마지막 상태에서 다른 노드에서 재시작하는 기능입니다.
- 데이터가 크래시되거나 저장된 상태에서 재시작되는 경우 응용 프로그램이 데이터를 손상시키지 않아야 합니다.
- 하이퍼바이저 자체가 클러스터를 인식하고 실행 중인 메모리 상태를 포함한 가상 머신을 물리 호스트 간에 심리스하게 이행하는 가상 서버 환경을 사용함으로써 이러한 제약의 많은 부분을 최소화할 수 있습니다(Microsoft Server 2012 및 2016 페일오버 클러스터 참조).
- 이 접근법과 클러스터 인식 애플리케이션 실행의 주요 차이점은 서버 애플리케이션 크래시에 대처하고 라이브 소프트웨어 업그레이드를 지원하면서 서비스(데이터베이스 등)에 대한 클라이언트 액세스를 유지할 수 있다는 점입니다.이러한 접근법은 업그레이드 또는 복구 중에 다른 인스턴스가 서비스를 제공하도록 하는 것입니다.이를 위해서는 클러스터 인스턴스가 핸드오프 중에 통신하고 캐시를 플러시하며 파일 액세스를 조정해야 합니다.페일오버클러스터링은 계획, 작성 및 구성도 트러블 슈팅에 포함됩니다.
노드 구성
HA 클러스터의 가장 일반적인 크기는 이중화를 제공하는 데 필요한 최소 크기이기 때문에 2노드 클러스터이지만, 대부분의 클러스터는 훨씬 더 많은 노드(경우에 따라서는 수십 개)로 구성됩니다.
첨부된 다이어그램은 쿼럼/감시 기능에 대한 언급이 없다는 경고와 함께 기존 HA 클러스터의 개요입니다(위 참조).
이러한 구성은 다음 모델 중 하나로 분류될 수 있습니다.
- Active/Active : 장애가 발생한 노드를 대상으로 한 트래픽은 기존 노드에 전달되거나 나머지 노드 간에 로드밸런싱됩니다이것은 보통 노드가 동종 소프트웨어 구성을 사용하는 경우에만 가능합니다.
- Active/passive: 각 노드의 완전 장황한 인스턴스를 제공합니다.이 인스턴스는 연관된 프라이머리 노드에 [2]장애가 발생했을 경우에만 온라인으로 전환됩니다.이 구성에는 일반적으로 가장 많은 추가 하드웨어가 필요합니다.
- N+1 - 장애가 발생한 노드의 역할을 이어받기 위해 온라인으로 전환되는 추가 노드를 1개 제공합니다.각 프라이머리 노드에서 이기종 소프트웨어 구성의 경우 추가 노드가 담당하는 프라이머리 노드의 역할을 모두 수행할 수 있어야 합니다.이는 보통 여러 서비스가 동시에 실행되고 있는 클러스터를 말합니다.단일 서비스의 경우 활성화/패시브 상태로 바뀝니다.
- N+M - 단일 클러스터가 많은 서비스를 관리하는 경우 전용 페일오버노드를 1개만 사용하면 충분한 용장성을 제공하지 못할 수 있습니다.이 경우, 복수의 스탠바이 서버가 포함되어 사용할 수 있습니다.스탠바이 서버의 수는, 코스트 요건과 신뢰성의 요건의 균형입니다.
- [N-to-1]: 원래 노드를 복원하거나 온라인으로 되돌릴 수 있을 때까지 페일오버스탠바이 노드를 일시적으로 액티브노드로 할 수 있습니다.이 시점에서 하이 어베이러빌리티를 회복하기 위해서는 서비스 또는 인스턴스를 장애로 되돌려야 합니다.
- [N-to-N] : 액티브/액티브와 N+M 클러스터를 조합한N 대 N 클러스터는 장애가 발생한 노드로부터 서비스, 인스턴스 또는 접속을 나머지 액티브노드 간에 재배포하기 때문에 (액티브/액티브와 마찬가지로) '스탠바이'노드가 필요없지만 모든 액티브노드에 추가 용량이 필요합니다.
논리적 호스트 또는 클러스터 논리적 호스트라는 용어는 클러스터에서 제공하는 서비스에 액세스하는 데 사용되는 네트워크 주소를 설명하는 데 사용됩니다.이 논리적 호스트 ID는 단일 클러스터 노드에 연결되지 않습니다.실제로는 클러스터에서 제공하는 서비스와 링크된 네트워크 주소/호스트명입니다.실행 중인 데이터베이스가 있는 클러스터 노드가 중단되면 데이터베이스가 다른 클러스터 노드에서 재시작됩니다.
노드의 신뢰성
HA 클러스터는 일반적으로 사용 가능한 모든 기술을 사용하여 개별 시스템과 Shared IT 인프라를 최대한 안정적으로 만듭니다.여기에는 다음이 포함됩니다.
- 디스크 미러링(또는 독립 디스크의 용장 어레이) - RAID)에 의해, 내부 디스크의 장해가 시스템 크래시의 원인이 되지 않게 됩니다.분산 복제 블록 디바이스가 한 예입니다.
- 단일 케이블, 스위치 또는 네트워크인터페이스 장애로 인해 네트워크가 정지되지 않도록 다중 네트워크 접속.
- 단일 케이블, 스위치 또는 인터페이스 장애로 인해 스토리지와의 연결이 끊어지지 않도록 다중 스토리지 영역 네트워크(SAN) 연결(공유 없음 아키텍처에 위반되지 않습니다.
- 전원 공급, 케이블, UPS 또는 전원 공급 장치가 1회 고장 나더라도 시스템의 전원이 차단되지 않도록 보통 무정전 전원 공급 장치 및 다중 전원 장치에 의해 모두 또는 모두 보호되는 다른 회로에 다중 전원 입력이 필요합니다.
이러한 기능을 통해 시스템 간의 클러스터링 페일오버가 필요할 가능성을 최소화할 수 있습니다.이러한 페일오버에서는 제공된 서비스를 잠시 동안 사용할 수 없으므로 페일오버를 피하기 위한 조치가 선호됩니다.
페일오버 전략
분산 컴퓨팅의 장애를 처리하는 시스템은 장애를 해결하기 위한 다양한 전략을 가지고 있습니다.예를 들어 Apache Cassandra API Hector는 페일오버를 설정하는 세 가지 방법을 정의합니다.
- Fail Fast(FAIL_FAST)는 첫 번째 노드에 도달할 수 없는 경우 장애 복구 시도가 실패함을 의미합니다.
- 실패 시 "ON_FAIL_TRY_ONE_NEXT_AVAILABLE" 스크립트로 작성된 "1개 시도 - 다음 사용 가능"은 시스템이 포기하기 전에 가장 접근하기 쉬운 호스트 또는 사용 가능한 호스트 중 하나를 시도함을 의미합니다.
- 실패 시 모두 시도(ON_FAIL_TRY_ALL_AVAILABLE)는 시스템이 포기하기 전에 기존의 사용 가능한 모든 노드를 시도함을 의미합니다.
「 」를 참조해 주세요.
레퍼런스
- ^ van Vugt, Sander(2014), Pro Linux 고가용성 클러스터링, 페이지 3, Apress, ISBN978-1484200803
- ^ Bornschlegl, Susanne (2012). Railway Computer 3.0: An Innovative Board Design Could Revolutionize The Market (pdf). MEN Mikro Elektronik. Retrieved 2015-09-21.
추가 정보
- 그렉 피스터:클러스터를 찾아서 프렌티스 홀, ISBN 0-13-899709-8
- Evan Marcus, Hal Stern: 고가용성 청사진: 내장해성 분산 시스템 설계, John Wiley & Sons, ISBN 0-471-35601-8
- Chee-Wei Ang, Chen-Khong Tam: 부하 의존형 머신의 가용성을 가진 HA클러스터에서의 서비스 가용성 분석 및 최적화, 병렬 및 분산 시스템에서의 IEEE 트랜잭션, Volume 18, 제9호 (2007년 9월), 1307-1319페이지, ISSN 1045-191 [1]