Citrix Hypervisor

클러스터링된 풀 문제 해결

GFS2를 사용하여 공유 블록 스토리지를 씬 프로비저닝하는 Citrix Hypervisor 풀은 클러스터링됩니다. 이러한 풀은 공유 파일 기반 스토리지를 사용하는 풀이나 공유 블록 스토리지가 있는 LVM과 다르게 동작합니다. 따라서 Citrix Hypervisor 클러스터 풀 및 GFS2 환경에서 발생할 수 있는 몇 가지 특정 문제가 있습니다.

다음 정보를 사용하여 이 기능을 사용할 때 발생할 수 있는 사소한 문제를 해결하십시오.

모든 호스트가 서로 핑 (ping) 할 수 있지만 클러스터를 만들 수는 없습니다. 왜요?

클러스터링 메커니즘은 특정 포트를 사용합니다. 호스트가 이러한 포트에서 통신할 수 없는 경우 (다른 포트에서 통신할 수 있더라도) 풀에 클러스터링을 활성화할 수 없습니다.

풀의 호스트가 다음 포트에서 통신할 수 있는지 확인합니다.

  • TCP: 8892, 8896, 21064
  • UDP: 5404, 5405 (멀티캐스트 아님)

풀의 호스트 간에 방화벽이나 이와 유사한 것이 있는 경우 이러한 포트가 열려 있는지 확인하십시오.

이전에 풀에서 HA를 구성한 경우 클러스터링을 활성화하기 전에 HA를 비활성화하십시오.

새 호스트를 기존 클러스터 풀에 가입시키려고 할 때 오류가 발생하는 이유는 무엇입니까?

풀에서 클러스터링을 사용하도록 설정한 경우 모든 풀 구성원 변경은 클러스터의 모든 구성원이 동의해야 성공할 수 있습니다. 클러스터 구성원에 접속할 수 없는 경우 클러스터 구성원을 변경하는 작업 (예: 호스트 추가 또는 호스트 제거) 이 실패합니다.

클러스터 풀에 새 호스트를 추가하려면:

  1. 모든 호스트가 온라인 상태이고 연락이 가능한지 확인하세요.

  2. 풀의 호스트가 다음 포트에서 통신할 수 있는지 확인합니다.

    • TCP: 8892, 8896, 21064
    • UDP: 5404, 5405 (멀티캐스트 아님)
  3. 가입 호스트에 풀의 클러스터 네트워크에 연결되는 NIC에 할당된 IP 주소가 있는지 확인합니다.

  4. 새 호스트가 클러스터 풀에 가입하려고 할 때 풀의 호스트가 오프라인 상태가 아닌지 확인하십시오.

  5. 오프라인 호스트를 복구할 수 없는 경우 비활성 상태로 표시하여 클러스터에서 제거합니다. 자세한 내용은 클러스터 풀의 호스트가 오프라인 상태여서 복구할 수 없습니다를 참조하십시오. 클러스터에서 호스트를 제거하려면 어떻게 해야 합니까?

클러스터 풀의 일부 구성원이 클러스터에 자동으로 가입하지 않는 경우 어떻게 해야 합니까?

이 문제는 클러스터 풀의 구성원이 동기화를 잃었을 때 발생할 수 있습니다.

클러스터링된 풀의 구성원을 재동기화하려면 다음 명령을 사용합니다.

xe cluster-pool-resync cluster-uuid=<cluster_uuid>

문제가 지속되면 GFS2 SR을 다시 연결해 볼 수 있습니다. xe CLI를 사용하거나 XenCenter를 통해 이 작업을 수행할 수 있습니다.

xe CLI를 사용하여 GFS2 SR을 다시 연결합니다.

  1. 풀에서 GFS2 SR을 분리합니다. 각 호스트에서 xe CLI 명령을 xe pbd-unplug uuid=<uuid_of_pbd>실행합니다.

  2. 명령을 사용하여 클러스터링된 풀을 비활성화합니다. xe cluster-pool-destroy cluster-uuid=<cluster_uuid>

    이전 명령이 실패할 경우 풀의 모든 xe cluster-host-force-destroy uuid=<cluster_host> 호스트에서 실행하여 클러스터링된 풀을 강제로 사용하지 않도록 설정할 수 있습니다.

  3. 명령을 사용하여 클러스터링된 풀을 다시 활성화합니다. xe cluster-pool-create network-uuid=<network_uuid> [cluster-stack=cluster_stack] [token-timeout=token_timeout] [token-timeout-coefficient=token_timeout_coefficient]

  4. 각 호스트에서 명령을 xe pbd-plug uuid=<uuid_of_pbd> 실행하여 GFS2 SR을 다시 연결합니다.

또는 XenCenter를 사용하여 GFS2 SR을 다시 연결하려면:

  1. 스토리지 탭에서 GFS2 SR을 마우스 오른쪽 버튼으로 클릭하고 분리… 를 선택합니다..
  2. 도구 모음에서 풀 > 속성을선택합니다.
  3. 클러스터링 탭에서 클러스터링활성화를 선택 해제합니다.
  4. 확인을 클릭하여 변경 내용을 적용합니다.
  5. 도구 모음에서 풀 > 속성을선택합니다.
  6. 클러스터링 탭에서 클러스터링활성화를 선택하고 클러스터링에 사용할 네트워크를 선택합니다.
  7. 확인을 클릭하여 변경 내용을 적용합니다.
  8. 스토리지 탭에서 GFS2 SR을 마우스 오른쪽 버튼으로 클릭하고 복구를 선택합니다.

호스트가 셀프 펜스를 운영하고 있는지 어떻게 알 수 있나요?

호스트가 자체 차단된 경우 재시작 시 클러스터에 다시 연결되었을 수 있습니다. 호스트가 자체 차단 및 복구되었는지 확인하려면 /var/opt/xapi-clusterd/boot-times 파일을 확인하여 호스트가 시작된 시간을 확인할 수 있습니다. 파일에 예상하지 못한 시작 시간이 있는 경우 호스트가 자체적으로 차단한 것입니다.

호스트가 오프라인 상태인 이유는 무엇인가요? 어떻게 복구할 수 있나요?

호스트가 오프라인 상태가 되는 이유는 여러 가지가 있을 수 있습니다. 이유에 따라 호스트를 복구하거나 복구하지 않을 수 있습니다.

호스트가 오프라인 상태가 되는 이유는 다음과 같은 경우가 더 흔하며, 호스트를 복구하여 해결할 수 있습니다.

  • 클린 셧다운
  • 강제 종료
  • 일시적인 정전
  • 다시 부팅

호스트가 오프라인 상태가 되는 다음과 같은 이유는 흔하지 않습니다.

  • 영구 호스트 하드웨어 장애
  • 영구 호스트 전원 공급 장치 장애
  • 네트워크 파티션
  • 네트워크 스위치 장애

이러한 문제는 하드웨어를 교체하거나 장애가 발생한 호스트를 작동 중지 상태로 표시하여 해결할 수 있습니다.

클러스터 풀의 호스트가 오프라인 상태여서 복구할 수 없습니다. 클러스터에서 호스트를 제거하려면 어떻게 해야 합니까?

클러스터에 호스트를 삭제하도록 지시할 수 있습니다. 이 작업을 수행하면 클러스터에서 호스트가 영구적으로 제거되고 쿼럼에 필요한 라이브 호스트 수가 줄어듭니다.

복구할 수 없는 호스트를 제거하려면 다음 명령을 사용합니다.

xe host-forget uuid=<host_uuid>

이 명령은 클러스터에서 호스트를 영구적으로 제거하고 쿼럼에 필요한 라이브 호스트 수를 줄입니다.

참고:

호스트가 오프라인 상태가 아닌 경우 이 명령으로 인해 데이터가 손실될 수 있습니다. 명령을 진행하기 전에 확실한지 확인하라는 메시지가 표시됩니다.

호스트가 비활성으로 표시된 후에는 클러스터에 다시 추가할 수 없습니다. 이 호스트를 클러스터에 다시 추가하려면 호스트에 Citrix Hypervisor를 새로 설치해야 합니다.

죽은 것으로 표시된 호스트를 수리했습니다. 클러스터에 다시 추가하려면 어떻게 해야 합니까?

비활성 상태로 표시된 Citrix Hypervisor 호스트는 클러스터에 다시 추가할 수 없습니다. 클러스터에 이 시스템을 다시 추가하려면 XenServer를 새로 설치해야 합니다. 새로 설치하면 클러스터에 새 호스트로 표시됩니다.

클러스터가 쿼럼을 계속 잃고 호스트가 계속 차단되면 어떻게 해야 합니까?

클러스터에 있는 하나 이상의 Citrix Hypervisor 호스트가 지속적으로 손실되고 쿼럼이 확보되어 펜스 루프에 빠지면 커널 명령줄 인수를 사용하여 호스트를 부팅할 수 있습니다. nocluster 호스트의 물리적 또는 직렬 콘솔에 연결하고 grub에서 부트 인수를 편집합니다.

예:

/boot/grub/grub.cfg
menuentry 'XenServer' {
        search --label --set root root-oyftuj
        multiboot2 /boot/xen.gz dom0_mem=4096M,max:4096M watchdog ucode=scan dom0_max_vcpus=1-16 crashkernel=192M,below=4G console=vga vga=mode-0x0311
        module2 /boot/vmlinuz-4.4-xen root=LABEL=root-oyftuj ro nolvm hpet=disable xencons=hvc console=hvc0 console=tty0 quiet vga=785 splash plymouth.ignore-serial-consoles nocluster
        module2 /boot/initrd-4.4-xen.img
}
menuentry 'Citrix Hypervisor (Serial)' {
        search --label --set root root-oyftuj
        multiboot2 /boot/xen.gz com1=115200,8n1 console=com1,vga dom0_mem=4096M,max:4096M watchdog ucode=scan dom0_max_vcpus=1-16 crashkernel=192M,below=4G
        module2 /boot/vmlinuz-4.4-xen root=LABEL=root-oyftuj ro nolvm hpet=disable console=tty0 xencons=hvc console=hvc0 nocluster
        module2 /boot/initrd-4.4-xen.img
}
<!--NeedCopy-->

클러스터 풀에서 풀 마스터가 다시 시작되면 어떻게 됩니까?

대부분의 경우 클러스터 풀에서 풀 마스터를 종료하거나 다시 시작할 때의 동작은 다른 풀 구성원이 종료되거나 다시 시작될 때의 동작과 동일합니다.

호스트를 종료하거나 다시 시작하는 방법은 클러스터링된 풀의 쿼럼에 영향을 줄 수 있습니다. 쿼럼에 대한 자세한 내용은 쿼럼을 참조하십오.

동작의 유일한 차이는 풀에서 HA가 활성화되었는지 여부에 따라 달라집니다.

  • HA가 활성화된 경우 새 마스터가 선택되고 일반 서비스가 유지됩니다.
  • HA가 활성화되지 않은 경우 풀에 대한 마스터가 없습니다. 나머지 호스트에서 실행 중인 VM은 계속 실행됩니다. 대부분의 관리 작업은 마스터를 다시 시작할 때까지 사용할 수 없습니다.

클러스터 풀의 호스트를 강제로 종료한 후 내 풀이 사라지는 이유는 무엇입니까?

강제 종료가 아닌 정상적으로 호스트를 종료하면 호스트가 다시 켜질 때까지 쿼럼 계산에서 일시적으로 제거됩니다. 하지만 호스트를 강제로 종료하거나 전원이 꺼져도 해당 호스트는 여전히 쿼럼 계산에 포함됩니다. 예를 들어, 3개의 호스트로 구성된 풀이 있는데 그 중 2개는 쿼럼이 더 이상 없기 때문에 나머지 호스트 펜스를 강제로 종료합니다.

클러스터 풀의 호스트는 항상 완전히 종료되도록 하십시오. 자세한 내용은 클러스터된 풀 관리를참조하십시오.

클러스터 풀 내의 모든 호스트가 동시에 다시 시작된 이유는 무엇입니까?

풀의 연결 가능한 호스트 수가 다음 값보다 적으면 활성 클러스터의 모든 호스트가 쿼럼을 잃은 것으로 간주됩니다.

  • 호스트 수가 짝수인 풀의 경우: n/2
  • 호스트 수가 홀수인 풀의 경우: (n+1) /2

문자 n은 클러스터 풀의 총 호스트 수를 나타냅니다. 쿼럼에 대한 자세한 내용은 쿼럼을 참조하십오.

이 경우 모든 호스트가 자체 차단되고 모든 호스트가 다시 시작되는 것을 볼 수 있습니다.

풀이 쿼럼을 잃은 이유를 진단하려면 다음 정보가 유용할 수 있습니다.

  • XenCenter의 알림 섹션에서 문제가 발생한 시간을 확인하여 셀프 펜싱이 발생했는지 여부를 확인합니다.
  • 클러스터 호스트에서 예기치 않은 시간에 재부팅이 발생했는지 확인합니다 /var/opt/xapi-clusterd/boot-times .
  • 에서 Crit.log셀프펜싱 메시지가 출력되는지 확인합니다.
  • 펜싱 정보에 대한 dlm_tool status 명령 출력을 검토하십시오.

    예제 dlm_tool status 출력:

     dlm_tool status
    
     cluster nodeid 1 quorate 1 ring seq 8 8
     daemon now 4281 fence_pid 0
     node 1 M add 3063 rem 0 fail 0 fence 0 at 0 0
     node 2 M add 3066 rem 0 fail 0 fence 0 at 0 0
     <!--NeedCopy-->
    

디버깅을 위해 로그를 수집할 때는 클러스터의 모든 호스트에서 진단 정보를 수집합니다. 단일 호스트에 자체 차단이 있는 경우 클러스터의 다른 호스트에 유용한 정보가 있을 가능성이 높습니다.

클러스터 풀의 호스트에 대한 전체 서버 상태 보고서를 수집합니다. 자세한 내용은 Citrix Hypervisor 호스트 로그를참조하십시오.

쿼럼이 있는데 클러스터링된 풀을 복구할 수 없는 이유는 무엇입니까?

호스트 수가 짝수인 클러스터 풀이 있는 경우 쿼럼을 달성하는 데 필요한 호스트 수는 쿼럼을 유지하는 데 필요한 호스트 수보다 하나 더 _많_습니다. 쿼럼에 대한 자세한 내용은 쿼럼을 참조하십오.

짝수 풀에서 호스트의 절반을 복구한 경우 클러스터를 복구하려면 먼저 호스트를 하나 더 복구해야 합니다.

클러스터 설정을 변경할 때 Invalid token 오류가 표시되는 이유는 무엇입니까?

클러스터 구성을 업데이트할 때 잘못된 토큰에 대한 다음과 같은 오류 메시지가 표시될 수 ("[[\"InternalError\",\"Invalid token\"]]")있습니다.

다음 단계를 완료하면 이 문제를 해결할 수 있습니다.

  1. (선택 사항) xapi-clusterd 및 시스템 로그를 포함하는 서버 상태 보고서를 수집하여 현재 클러스터 구성을 백업합니다.

  2. XenCenter를 사용하여 클러스터 풀에서 GFS2 SR을 분리합니다.

    스토리지 탭에서 GFS2 SR을 마우스 오른쪽 버튼으로 클릭하고 분리… 를 선택합니다..

  3. 클러스터의 모든 호스트에서 다음 명령을 실행하여 클러스터를 강제로 제거합니다.

    xe cluster-pool-force-destroy cluster-uuid=<uuid>
    
  4. XenCenter를 사용하여 풀에서 클러스터링을 다시 활성화할 수 있습니다.

    1. 도구 모음에서 풀 > 속성을선택합니다.
    2. 클러스터링 탭에서 클러스터링활성화를 선택하고 클러스터링에 사용할 네트워크를 선택합니다.
    3. 확인을 클릭하여 변경내용을 적용합니다.
  5. XenCenter를 사용하여 GFS2 SR을 풀에 다시 연결합니다.

    스토리지 탭에서 GFS2 SR을 마우스 오른쪽 버튼으로 클릭하고 복구를 선택합니다.

클러스터링된 풀 문제 해결