XenServer

고가용성

XenServer의 고가용성(HA) 기능은 VM이 최소한의 다운타임과 데이터 손상 없이 계속 실행되도록 보장합니다. 호스트 하드웨어 장애나 네트워크 중단과 같은 문제가 발생하면 XenServer 풀은 풀 내의 안정적인 호스트에서 영향을 받은 VM을 다시 시작하여 대응합니다. 이 기능을 사용하면 하드웨어 문제가 해결될 때까지 VM을 계속 실행할 수 있습니다.

XenServer는 다음과 같은 방법을 통해 VM의 고가용성을 보장합니다.

  • 풀 내의 호스트 간 연결을 확인하기 위해 네트워크 하트비트를 사용합니다.
  • 스토리지 하트비트를 사용하여 호스트와 공유 스토리지 간의 연결을 확인합니다.
  • 호스트에 장애가 발생했는지 감지합니다.
  • 호스트에 접근할 수 없게 되었는지 감지합니다.
  • 풀에 있는 가장 큰 호스트 파티션과 통신할 수 없는 펜싱 호스트입니다. 펜싱된 호스트는 즉시 다시 시작되고, 해당 호스트에서 실행 중인 모든 VM이 중지됩니다. 다시 시작되면 리소스 풀에 다시 가입하려고 시도합니다. 이러한 예방 조치는 VM이 두 호스트에서 동시에 실행되어 데이터가 손상될 위험을 방지합니다.
  • 실패한 호스트, 펜싱된 호스트 또는 도달할 수 없는 호스트를 더 이상 풀의 활성 호스트 집합에 속하지 않는 것으로 표시합니다.
  • 해당 호스트에서 실행 중이던 모든 VM을 중지됨으로 표시합니다.
  • 실패하거나 펜싱되거나 도달할 수 없는 호스트가 풀 코디네이터인 경우, 풀의 다른 호스트에 코디네이터 역할을 재할당합니다.
  • 구성한 장애 조치 계획에 따라 중지된 모든 VM을 다시 시작합니다.
  • 구성된 장애 조치 계획을 실행할 수 있는지 확인하기 위해 풀 구성의 모든 변경 사항을 모니터링합니다.

HA 기능은 풀에 있는 다른 호스트의 VM을 자동으로 다시 시작하므로 XenServer는 VM의 원래(실패했거나 연결할 수 없는) 호스트가 더 이상 VM을 실행하고 있지 않은지 확인해야 합니다. 동일한 VM의 두 인스턴스가 동시에 실행되면 VM 데이터가 손상될 수 있습니다. 이러한 가능성을 방지하기 위해 HA 지원 풀에 있는 XenServer 호스트는 동일한 VM의 두 인스턴스가 실행될 수 있는 상황이 발생하면 자체 펜싱을 적극적으로 수행합니다.

HA 기능을 사용하면 기본 하드웨어나 네트워크 문제가 해결될 때까지 주요 VM이 계속 실행됩니다. HA 이벤트가 발생했다는 것을 알게 되면 풀을 전체 용량으로 되돌리지 못한 근본적인 오류를 조사하고 해결하세요.

이 문서에서는 고가용성 개념, 요구 사항 및 예상 동작에 대해 설명합니다. 고가용성 구성 및 관리에 대한 자세한 내용은 고가용성 구성을 참조하세요.

요구 사항

고가용성 기능을 사용하려면 환경에 다음 항목이 필요합니다.

  • XenServer 풀: HA 기능은 단일 리소스 풀 내에서 작동합니다.

    • 수영장은 균질할 것을 권장합니다. 풀 내의 각 호스트는 동일한 CPU 기능 세트를 VM에 노출시키고 풀 내 어디에서나 VM을 더 쉽게 다시 시작할 수 있도록 합니다.
    • 하트비트 메커니즘이 효과적으로 작동하려면 풀에 최소 3개의 호스트가 있는 것이 좋습니다.
    • HA를 활성화하기 전에 풀에 있는 모든 호스트가 온라인 상태인지 확인하세요.
  • 풀에 있는 모든 호스트의 공유 스토리지: 장애 발생 후 풀에 있는 모든 VM이 풀에 있는 모든 호스트에서 다시 시작될 수 있도록 하려면 풀에 있는 모든 호스트가 VM 디스크가 저장된 SR에 액세스할 수 있어야 합니다.

  • 하트비트 SR: 이 SR은 VM 디스크가 저장된 SR과 동일할 수 있습니다. 풀은 장애 발생 시 풀이 장애 감지 및 복구를 조정할 수 있는 정보를 저장합니다.

    • 하트비트 SR은 iSCSI, NFS 또는 파이버 채널 LUN에 있어야 합니다. CHAP를 사용하여 인증된 경우 SMB 또는 iSCSI를 사용하여 연결된 스토리지는 하트비트 SR로 사용할 수 없습니다. 이 SR은 낮은 지연 시간과 높은 안정성을 갖춘 것이 좋습니다.
    • XenServer 8.4에는 하트비트 SR에 4GB가 필요합니다.

      하트비트 SR에 저장된 정보는 다음과 같습니다.

      • 4MB 하트비트 볼륨: 풀에 있는 호스트가 스토리지에 접근할 수 있는지 확인하는 스토리지 하트비트를 제공합니다.
      • 메타데이터 볼륨: 풀 코디네이터에 장애 조치가 발생하는 경우 사용할 풀 코디네이터 메타데이터를 저장합니다. 이 권이 필요한 나머지 공간을 차지합니다.
  • 하트비트 SR을 위한 안정적이고 중복된 스토리지 통신: HA 기능이 공유 스토리지에 액세스할 수 있는 호스트를 가장 정확하게 볼 수 있도록 스토리지 트래픽이 안정적이도록 환경을 구성하세요. iSCSI 및 파이버 채널 SR의 경우 다중 경로를 구성합니다. NFS SR의 경우 복원력이 뛰어난 본딩 네트워크를 스토리지 네트워크로 사용하세요.

  • 모든 호스트에 대한 정적 IP 주소: HA는 호스트 IP 주소가 변경되면 호스트의 연결이 끊어진 것으로 처리하고 호스트의 네트워크에 장애가 발생한 것으로 가정합니다. 그 결과, 호스트는 펜싱을 할 수 있습니다. 이를 방지하려면 풀에서 정적 IP만 사용하세요.

  • 관리 네트워크의 전용 본딩 인터페이스: HA 기능이 풀 상태를 가장 정확하게 볼 수 있도록 하려면 호스트 간에 안정적이고 중복된 네트워크 통신이 필요합니다.

  • 관리 네트워크는 포트 694를 통한 네트워크 하트비트 UDP 트래픽을 허용합니다.: 네트워크 하트비트는 풀에 있는 호스트가 활성화되어 있고 서로 연락할 수 있는지 확인합니다.

고가용성 풀에서 실행되는 VM을 보호하려면 다음 구성으로 VM을 설정하세요.

  • 풀에 있는 모든 호스트가 사용할 수 있는 공유 스토리지에 VM 디스크를 저장합니다.
  • 풀 전체 네트워크에 가상 네트워크 인터페이스를 설정합니다.
  • VM에서 라이브 마이그레이션을 사용할 수 있는지 확인하세요. 자세한 내용은 마이그레이션 호환성 요구 사항을 참조하세요.
  • VM을 로컬 DVD 드라이브에 연결하지 마세요.

이러한 모든 기준을 충족하는 VM을 애자일(Agile)이라고 합니다.

NVIDIA vGPU 또는 GPU 패스스루를 사용하는 VM은 HA로 보호할 수 없습니다. 그러나 HA 메커니즘은 최선의 노력을 기울여 이 VM을 다시 시작하려고 시도할 수 있습니다.

클러스터형 풀에 대한 요구 사항

클러스터형 풀의 고가용성 동작은 다른 기본 메커니즘을 사용하므로 요구 사항과 동작이 다릅니다. 자세한 내용은 클러스터형 풀을 참조하세요.

HA 장애 조치 계획

HA 메커니즘은 다음 기준에 따라 풀 전체 장애 조치 계획을 계산합니다.

  • VM 복구 요구 사항: 각 VM은 재시작 우선 순위와 시작 순서를 정의할 수 있습니다.
  • 사용 가능한 풀 리소스: 고려되는 주요 리소스는 호스트 메모리입니다.
  • 허용되는 호스트 장애 수: 풀에서 HA를 활성화한 후 XenServer는 보호된 VM을 다시 시작할 수 없게 되기 전에 풀에서 장애가 발생할 수 있는 최대 호스트 수를 계산할 수 있습니다. 허용되는 호스트 장애 수를 이 값 이하로 설정할 수 있습니다.

이러한 기준을 충족하는 장애 조치 계획을 계산할 수 없는 경우 풀은 과도하게 커밋된 것으로 간주됩니다. 보호된 VM을 풀에서 다시 시작할 수 없는 경우 XenServer는 시스템 경고를 발생시킵니다. 이 경고는 XenCenter 알림 패널에도 표시됩니다.

풀의 각 VM에 대해 복구 동작을 정의할 수 있습니다.

재시작 우선순위

VM에 다음 재시작 우선 순위 중 하나를 할당할 수 있습니다.

  • 보호됨: VM 또는 호스트가 예기치 않게 오프라인이 되면 HA는 다른 호스트에서 VM을 다시 시작합니다. 풀이 과도하게 커밋되지 않고 VM이 민첩한 경우 이러한 재시작은 보장됩니다. VM 재시작이 실패하면 HA는 풀에 여유 용량이 있을 때 VM을 시작하려고 시도합니다. 이 값은 xe CLI에서는 restart 이고 XenCenter에서는 Restart 입니다.
  • 최선의 노력: VM을 실행하는 호스트가 예기치 않게 오프라인이 되면 HA는 다른 호스트에서 VM을 다시 시작하려고 시도합니다. 모든 보호된 VM이 성공적으로 다시 시작된 후에만 이 시도가 수행됩니다. 고가용성은 최선의 노력을 기울인 VM을 다시 시작하려고 한 번만 시도합니다. 이 시도가 실패하면 고가용성은 VM을 다시 시작하기 위한 추가 시도를 하지 않습니다. 이 값은 xe CLI에서는 최선 노력 이고 XenCenter에서는 가능하면 다시 시작 입니다.
  • 보호되지 않음: VM 또는 호스트가 예기치 않게 오프라인이 되면 HA는 VM을 다시 시작하려고 시도하지 않습니다. 기본 설정은 다음과 같습니다. 이 값은 xe CLI에서는 빈 문자열이고 XenCenter에서는 입니다. 을 다시 시작하지 마세요.

고가용성은 실행 중인 VM을 중지하거나 여유 리소스로 마이그레이션하여 더 높은 재시작 우선 순위로 VM을 다시 시작하지 않습니다.

시작 순서

시작 순서는 장애가 발생했을 때 XenServer 고가용성이 보호된 VM을 다시 시작하려고 시도하는 순서입니다. 이 값은 보호된 VM에만 사용됩니다. 기본값은 가장 높은 우선순위인 0입니다. 시작 순서 값이 0인 보호된 VM이 먼저 다시 시작됩니다. 시작 순서 값이 높을수록 VM이 시퀀스에서 나중에 다시 시작됩니다.

풀 동작

XenServer 풀에서 HA를 활성화하면 풀에서 다음과 같은 동작이 나타납니다.

설정 중의 동작

풀에서 HA를 활성화하면 풀 코디네이터가 다음 설정을 수행합니다.

  • 초기 장애 조치 계획을 계산합니다.
  • 하트비트 SR에 업데이트를 작성하도록 데이터베이스를 구성합니다. 이 설정은 호스트에 장애가 발생해도 VM 구성 변경 사항이 손실되지 않도록 합니다.
  • 하트비트 SR에 풀 코디네이터 메타데이터를 설정합니다.

모든 풀 멤버:

  • 서로에게 네트워크 하트비트를 보냅니다. 그 결과, 풀에 있는 호스트가 서로 통신할 수 있는지 확인함에 따라 관리 네트워크 트래픽이 약간 증가합니다. HA가 활성화된 동안에도 이 네트워크 트래픽은 계속됩니다.

정상 동작 중 동작

정상 작동 중에 HA 풀의 풀 코디네이터는 다음 작업을 수행합니다(일반적인 기능 외에도):

  • 동적으로 장애 조치 계획을 유지합니다. 이 계획은 풀에 있는 호스트 세트가 특정 시점에 실패할 때 수행할 작업을 자세히 설명합니다. 이 계획은 허용할 수 있는 호스트 장애의 최대 횟수를 고려하고 보호된 모든 VM을 다시 시작할 수 있도록 보장합니다. 이 계획은 VM 수명 주기 작업 및 이동을 기반으로 동적으로 재계산됩니다. 변경 사항(예: 풀에 새 VM 추가)으로 인해 보호된 모든 VM을 호스트 장애의 최대 횟수에 도달한 후 더 이상 다시 시작할 수 없는 경우 계획을 계산할 수 없으며 풀이 과도하게 커밋됩니다. 풀이 과도하게 커밋되면 XenServer는 XenCenter, 이메일, SNMP 트랩 또는 NRPE 경고를 통해 경고를 발생시킵니다.

정상 작동 중에 HA 풀의 각 구성원은 다음 작업을 수행합니다(일반적인 기능 외에도):

  • 풀 코디네이터가 살아있는지 확인합니다. 호스트는 공유 저장소에서 “마스터 잠금”을 획득하려고 시도하여 이를 수행합니다. 풀 코디네이터가 이미 존재하는 경우 이 시도는 실패합니다.
  • 네트워크 하트비트를 보냅니다. 이 네트워크 하트비트는 관리 네트워크의 포트 694를 통해 UDP를 사용하여 풀의 다른 모든 호스트로 전송됩니다.
  • 풀에 있는 호스트의 생활 방식에 대한 기록을 유지합니다. 각 호스트에 따른 호스트의 라이브 세트는 해당 호스트가 라이브라고 믿는 다른 호스트의 세트입니다. 호스트가 HA 시간 초과(기본값은 60초)로 지정된 기간 내에 다른 호스트로부터 네트워크 하트비트를 받지 못하면 풀에 있는 다른 호스트와 통신하여 라이브 세트를 업데이트해야 하는지 여부에 동의합니다.
  • 저장소 하트비트 볼륨의 상태 파일에 씁니다. 이 작업은 호스트가 여전히 저장소에 액세스할 수 있는지 확인합니다. 또한 호스트가 네트워크 하트비트를 통한 통신 외에도 서로 상태를 통신할 수 있도록 해줍니다.
  • 하트비트 SR의 데이터베이스를 업데이트합니다. 호스트는 호스팅하는 VM에 대한 VM 구성의 모든 변경 사항을 기록합니다.

HA가 활성화되면 일부 풀 작업이 차단되거나 권장되지 않습니다. 다음 작업을 수행하려면 고가용성을 일시적으로 비활성화하세요.

  • 풀에 호스트를 추가합니다.
  • 풀에서 호스트를 제거합니다. 이 작업으로 인해 풀이 과도하게 커밋될 수 있는 경우 차단됩니다.
  • 풀에서 호스트를 종료합니다. 이 작업으로 인해 풀이 과도하게 커밋될 수 있는 경우 차단됩니다.
  • 관리 네트워크를 변경합니다.
  • 풀에 부착된 SR을 변경합니다.
  • 클러스터링 활성화. 일부 고가용성 동작 및 요구 사항은 클러스터형 풀마다 다릅니다. 자세한 내용은 클러스터형 풀을 참조하세요.

정상 작동 중에 풀에서 다음 작업을 수행해도 HA 장애 조치 계획이 활성화되지 않습니다.

  • XenCenter 또는 xe CLI에서 VM을 완전히 종료합니다. HA 메커니즘은 이 VM이 실패한 것으로 간주하지 않으며 다시 시작하려고 시도하지 않습니다. 이 작업에 대한 자세한 내용은 고가용성으로 보호되는 VM 종료를 참조하세요.
  • XenCenter 또는 xe CLI에서 호스트를 정상적으로 종료합니다. HA 메커니즘은 이 호스트가 실패한 것으로 간주하지 않으며 해당 호스트에 호스팅된 VM을 다시 시작하려고 시도하지 않습니다. 하지만 이 작업으로 인해 풀이 과도하게 커밋되면 XenServer에서 풀이 차단됩니다. 이 작업에 대한 자세한 내용은 고가용성이 활성화된 경우 호스트 종료를 참조하세요.

하드웨어 장애 또는 인프라 불안정 시 동작

이 단계에서는 풀에 있는 모든 호스트가 자신의 연결 상태를 감지하고 풀에 있는 다른 호스트의 연결 상태에 동의해야 합니다.

XenServer HA는 다음 유형의 장애를 감지하고 처리합니다.

  • 실패한 호스트: 이 상황에서는 남아 있는 모든 호스트가 실패한 호스트가 상태 파일 업데이트를 중단하고 더 이상 네트워크 하트비트를 보내지 않는다는 사실을 매우 빨리 알아차립니다. 적절한 지연 시간이 지난 후 해당 호스트는 라이브셋에서 제거됩니다.
  • 네트워크 분할: 이 상황에서는 하나 이상의 호스트가 하나 이상의 다른 호스트와 통신할 수 없습니다. 호스트는 정의된 시간 제한 내에 하나 이상의 다른 호스트로부터 네트워크 하트비트를 수신하지 못했음을 알아차리고 오류 처리기를 시작합니다. 이 오류 처리 프로세스는 상태 파일과 작업 네트워크 하트비트를 통해 통신하고, 해당 정보를 사용하여 서로 통신할 수 있는 호스트 그룹인 네트워크 파티션이 무엇인지 확인합니다. 가장 큰 파티션의 호스트는 라이브셋이며 생존합니다. 크기가 같은 파티션이 있는 경우, 가장 낮은 호스트 UUID를 가진 호스트가 포함된 파티션의 호스트가 생존합니다.
  • 저장소 연결 실패: 이 상황에서는 호스트가 저장소에 접근할 수 없다는 것을 알아차리고 다른 호스트가 저장소에 업데이트가 없다는 것을 알아차립니다. 호스트는 네트워크 하트비트 통신을 통해 다른 호스트가 스토리지 액세스를 잃었는지 확인하기 위해 통신합니다.
    • 모든 호스트가 저장 공간을 잃었지만 네트워크 공간은 잃은 경우, 이는 일시적인 저장 공간 손실로 간주되고 호스트는 저장 공간이 복구될 때까지 기다립니다. 추가적인 실패와 풀 펜스의 모든 호스트. 이 규칙은 스토리지가 단일 장애 지점이 되는 것을 방지합니다.
    • 일부 호스트만 저장소 접근 권한을 잃었지만 모든 호스트가 네트워크 접근 권한을 가지고 있는 경우, 이러한 호스트는 라이브셋에서 제거됩니다.

호스트가 풀의 대부분에서 실패하거나 도달할 수 없는 것으로 나타날 것을 알고 있는 경우 해당 호스트는 자체적으로 펜싱합니다. 펜싱은 VM 데이터를 보호하기 위한 조치로 설계된 예상되는 동작입니다. 이는 VM이 한 번에 두 곳에서 실행되지 않도록 보장합니다. 호스트는 다음 기준을 사용하여 자체 펜싱이 필요한지 결정합니다.

  • 호스트의 툴스택이 실행 중이 아니고 다시 시작할 수 없는 경우 호스트는 자체 펜싱을 수행합니다.
  • 호스트가 네트워크와 저장소 하트비트를 모두 잃은 경우 호스트는 자신을 접근할 수 없다고 간주하고 자체 펜싱을 실행합니다.
  • 호스트가 스토리지 하트비트를 잃었지만 여전히 네트워크 하트비트를 수신하는 경우:
    • 호스트가 다른 모든 풀 멤버에 계속 연락할 수 있고 해당 멤버가 모두 저장소 하트비트를 잃은 경우에도 호스트는 살아있는 상태로 유지됩니다. 이 케이스는 저장소가 단일 장애점 역할을 하여 풀 전체를 울타리로 막는 것을 방지합니다.
    • 호스트가 풀 내의 다른 호스트 하나 이상과 연락할 수 없는 경우, 자체적으로 펜싱합니다.
  • 호스트가 네트워크 하트비트를 모두 잃었지만 여전히 스토리지 하트비트가 있는 경우 가장 큰 네트워크 파티션에 있는지 확인합니다. 그렇지 않은 경우 호스트가 자체적으로 펜싱합니다.
  • 네트워크 통신 장애로 인해 풀이 동일한 크기의 파티션으로 분할될 가능성이 있습니다. 하트비트 SR의 상태 파일에 있는 정보를 사용하여 호스트가 자신이 해당 네트워크 파티션에 있는지 알고 있는 경우:
    • 파티션에 가장 낮은 UUID를 가진 호스트가 포함되어 있으면 해당 호스트는 활성 상태를 유지합니다.
    • 파티션에 가장 낮은 UUID를 가진 호스트가 없으면 호스트는 자체 펜싱을 수행합니다.

펜스 작업이 수행되면 호스트가 즉시 갑자기 다시 시작되어 해당 호스트에서 실행 중인 모든 VM이 중지됩니다. 펜스된 호스트는 재부팅 시퀀스에 들어가고, 재시작되면 리소스 풀에 다시 가입하려고 시도합니다.

회복 중의 행동

풀 코디네이터가 실패하거나 펜싱되거나 도달할 수 없게 된 호스트인 경우, 다른 호스트는 마스터 잠금을 얻으려고 시도합니다. 성공하는 호스트가 새로운 코디네이터가 됩니다.

자체 펜싱을 적용한 호스트가 다시 시작되어 풀에 다시 가입하려고 시도합니다.

호스트가 중지로 표시되고 해당 VM이 중지되면 풀 코디네이터는 다음 복구 작업을 담당합니다.

  • 장애 조치 계획에 따라 모든 보호된 VM을 다시 시작합니다.
  • 보호된 모든 VM을 시작할 리소스가 충분하지 않으면 풀 코디네이터는 리소스를 사용할 수 있을 때까지 기다린 후(예: 이전에 펜싱된 호스트가 풀에 다시 가입하는 경우) 보호된 VM을 시작하려고 시도합니다.
  • 모든 보호된 VM이 성공적으로 시작된 후 풀 코디네이터는 각 최선의 노력 VM을 다시 시작하려고 한 번 시도합니다.
고가용성