Azure Batch 풀 및 노드 오류

주의

이 문서에서는 EOL(수명 종료) 상태에 가까워진 Linux 배포판인 CentOS를 참조하세요. 이에 따라 사용 및 계획을 고려하세요. 자세한 내용은 CentOS 수명 종료 지침을 참조 하세요.

일부 Azure Batch 풀 만들기 및 관리 작업은 즉시 수행됩니다. 오류는 일반적으로 API, 명령줄 또는 사용자 인터페이스에서 즉시 반환되므로 이러한 작업에 대한 오류를 탐지하는 것은 간단합니다. 그러나 일부 작업은 백그라운드에서 비동기적으로 실행되므로 완료되는 데 몇 분 정도 걸릴 수 있습니다. 이 문서에서는 풀 및 풀 노드의 백그라운드 작업에 발생할 수 있는 실패를 탐지 및 방지하는 방법을 설명합니다.

특히 비동기 작업에 대해 포괄적인 오류 검사를 구현하도록 애플리케이션을 설정해야 합니다. 포괄적인 오류 검사를 사용하면 이슈를 신속하게 식별하고 진단할 수 있습니다.

풀 오류

풀 오류는 크기 조정 제한 시간이나 실패, 자동 크기 조정 실패 또는 풀 삭제 실패와 관련될 수 있습니다.

크기 조정 시간 제한 또는 오류

새 풀을 만들거나 기존 풀 크기를 조정할 때는 목표 노드 수를 지정합니다. 만들기 또는 크기 조정 작업은 즉시 완료되지만 새 노드 실제 할당이나 기존 노드 제거는 완료되는 데 몇 분 정도 걸릴 수 있습니다. 풀 - 추가 또는 풀 - 크기 조정 API에서 크기 조정 제한 시간을 지정할 수 있습니다. 크기 조정 제한 시간 동안 Batch에서 목표 노드 수를 할당할 수 없으면 풀은 안정된 상태가 되고 크기 조정 오류가 보고됩니다.

resizeError 속성은 최근에 평가가 수행된 오류를 나열합니다.

크기 조정 오류가 발생하는 일반적인 원인은 다음과 같습니다.

  • 크기 조정 제한 시간이 너무 짧습니다. 일반적으로 기본 제한 시간(15분)은 풀 노드를 할당하거나 제거하는 데 충분합니다. Azure Marketplace 이미지에서 1,000개를 초과하는 노드 또는 사용자 지정 VM(가상 머신) 이미지에서 300개를 초과하는 노드와 같이 다수의 노드를 할당하는 경우 크기 조정 제한 시간을 30분으로 설정할 수 있습니다.

  • 코어 할당량이 부족합니다. Batch 계정은 모든 풀에서 할당할 수 있는 코어 수로 제한되며 해당 할당량에 도달하면 노드 할당을 중지합니다. Batch에서 더 많은 노드를 할당할 수 있도록 코어 할당량을 늘릴 수 있습니다. 자세한 내용은 Batch 서비스 할당량 및 제한을 참조하세요.

  • 풀이 가상 네트워크에 있을 때 서브넷 IP가 부족합니다. 가상 네트워크 서브넷에는 요청한 모든 풀 노드에 할당할 수 있는 IP 주소가 충분하게 있어야 합니다. 그렇지 않으면 노드를 만들 수 없습니다. 자세한 내용은 가상 네트워크에서 Azure Batch 풀 만들기를 참조하세요.

  • 풀이 가상 네트워크에 있을 때 리소스가 부족합니다. 가상 네트워크에 풀을 만들 때 Batch 계정과 동일한 구독에 부하 분산 장치, 공용 IP 및 NSG(네트워크 보안 그룹)와 같은 리소스를 만들 수 있습니다. 구독 할당량이 이러한 리소스에 대해 충분한지 확인합니다.

  • 사용자 지정 VM 이미지를 사용하는 큰 풀. 사용자 지정 VM 이미지를 사용하는 큰 풀은 할당하는 데 시간이 오래 걸릴 수 있으며 크기 조정 제한 시간이 발생할 수 있습니다. 한도 및 구성에 대한 권장 사항은 Azure Compute Gallery를 사용하여 풀 만들기를 참조하세요.

자동 크기 조정 실패

풀의 노드 수를 자동으로 조정하도록 Azure Batch를 설정하고 풀의 자동 크기 조정 수식 매개 변수를 정의할 수 있습니다. 그런 다음, Batch 서비스는 수식을 사용하여 풀의 노드 수를 정기적으로 평가하고 새 목표 수를 설정합니다. 자세한 내용은 Batch 풀에서 컴퓨팅 노드의 크기를 조정하는 자동 수식 만들기를 참조하세요.

자동 크기 조정을 사용하는 경우 다음과 같은 이슈가 발생할 수 있습니다.

  • 자동 크기 조정 평가가 실패합니다.
  • 평가 결과에 따른 크기 조정 작업이 실패하고 시간이 초과됩니다.
  • 자동 크기 조정 수식에 문제가 있으면 노드 대상 값이 잘못됩니다. 크기 조정이 작동하거나 시간 초과될 수 있습니다.

autoScaleRun 속성을 사용하여 마지막 자동 크기 조정 평가에 대한 정보 얻기. 이 속성은 평가 시간, 값과 결과, 성능 오류를 보고합니다.

풀 크기 조정 완료 이벤트는 모든 평가 정보를 캡처합니다.

큐 삭제 실패

노드가 포함된 풀이 삭제되도록 Batch는 먼저 노드를 삭제합니다. 삭제가 완료되는 데 몇 분 정도 걸릴 수 있습니다. 그런 다음, Batch에서 풀 개체 자체를 삭제합니다.

Batch는 삭제 프로세스 중에 poolStatedeleting으로 설정합니다. 호출 애플리케이션은 statestateTransitionTime 속성을 사용하여 풀 삭제가 너무 오래 걸리는지를 탐지할 수 있습니다.

풀 삭제가 예상 보다 오래 걸리면 Batch는 풀이 성공적으로 삭제될 때까지 정기적으로 다시 시도합니다. 경우에 따라 Azure 서비스 중단 또는 기타 일시적인 문제로 인해 지연이 발생합니다. 풀 삭제 성공을 방해하는 다른 요인으로 인해 이슈를 해결하기 위한 조치를 취해야 할 수 있습니다. 이러한 요인에는 다음 이슈가 포함될 수 있습니다.

  • 리소스 잠금은 Batch에서 만든 리소스나 Batch에서 사용하는 네트워크 리소스에 배치될 수 있습니다.

  • 생성된 리소스는 Batch에서 만든 리소스에 따라 달라질 수 있습니다. 예를 들어 가상 네트워크에서 풀을 만드는 경우 Batch는 NSG, 공용 IP 주소 및 부하 분산 장치를 만듭니다. 풀 외부에서 이러한 리소스를 사용하는 경우 풀을 삭제할 수 없습니다.

  • Microsoft.Batch 리소스 공급자가 풀이 포함된 구독에서 등록 취소될 수 있습니다.

  • 사용자 구동 모드 Batch 계정의 경우 Microsoft Azure Batch에는 더 이상 풀이 포함된 구독에 대한 기여자 또는 소유자 역할이 없습니다. 자세한 내용은 구독에 액세스하도록 Batch 허용을 참조하세요.

노드 오류

Batch가 성공적으로 풀의 노드를 할당하더라도 다양한 이슈로 인해 일부 노드가 비정상 상태가 되어 작업을 실행하지 못할 수 있습니다. 이러한 노드에도 요금이 계속 청구되므로 사용할 수 없는 노드에 대한 요금을 지불하지 않도록 문제를 탐지하는 것이 중요합니다. 일반적인 노드 오류와 현재 jobState를 파악하는 것이 문제 해결에 유용합니다.

시작 태스크 실패

풀에 대한 선택적 startTask를 지정할 수 있습니다. 다른 작업과 마찬가지로 시작 작업은 명령줄을 사용하고 스토리지에서 리소스 파일을 다운로드할 수 있습니다. 시작 작업은 노드가 시작될 때 노드마다 실행됩니다. waitForSuccess 속성은 Batch가 노드에 대한 작업을 예약하기 전에 시작 작업이 성공적으로 완료될 때까지 기다릴지 여부를 지정합니다. 노드가 시작 작업이 성공적으로 완료할 때까지 기다리도록 구성하지만 시작 작업이 실패하면 노드를 사용할 수 없으며 계속 요금이 청구됩니다.

최상위 startTaskInformation 노드 속성의 taskExecutionResulttaskFailureInformation 속성을 사용하여 시작 작업 실패를 탐지할 수 있습니다.

waitForSuccesstrue로 설정된 경우 시작 작업이 실패하면 Batch에서 computeNodeStatestarttaskfailed로 설정합니다.

일반적인 작업과 마찬가지로 시작 작업 역시 여러 가지 원인으로 인해 실패할 수 있습니다. 문제를 해결하려면 stdout, stderr 및 추가 작업 관련 로그 파일을 확인합니다.

시작 작업은 같은 노드에서 여러 번 실행될 수 있으므로(예: 노드가 이미지로 다시 설치되거나 다시 부팅되는 경우) 재진입성이 있어야 합니다. 드문 경우지만 이벤트 후에 시작 작업이 실행되어 노드가 다시 부팅되면 OS(운영 체제) 또는 임시 디스크 하나가 이미지로 다시 설치되고 그 외에는 이미지로 다시 설치되지 않습니다. Batch 시작 작업과 모든 Batch 작업은 임시 디스크에서 실행되므로 일반적으로 이 상황은 문제가 되지 않습니다. 그러나 시작 작업에서 애플리케이션을 OS 디스크에 설치하고 다른 데이터를 임시 디스크에 보관하는 경우 동기화 문제가 발생할 수 있습니다. 두 디스크 모두 사용하는 경우 이에 따라 애플리케이션을 보호합니다.

애플리케이션 패키지 다운로드 실패

하나의 풀에 대해 하나 이상의 애플리케이션 패키지를 지정할 수 있습니다. Batch는 지정된 패키지 파일을 각 노드에 다운로드하고 노드가 시작된 후 작업이 예약되기 전에 파일 압축을 풉니다. 일반적으로는 애플리케이션 패키지에서 시작 작업 명령을 사용합니다(예: 다른 위치에 파일 복사 또는 설치 프로그램 실행).

애플리케이션 패키지에서 다운로드와 압축 해제를 실패하면 computeNodeError 속성은 실패를 보고하고 노드 상태를 unusable로 설정합니다.

컨테이너 다운로드 실패

풀에 하나 이상의 컨테이너 참조를 지정할 수 있습니다. Batch는 지정된 컨테이너를 각 노드에 다운로드합니다. 컨테이너를 다운로드할 수 없으면 computeNodeError 속성은 실패를 보고하고 노드 상태를 unusable로 설정합니다.

노드 OS 업데이트

Windows 풀의 경우 enableAutomaticUpdates는 기본적으로 true로 설정됩니다. 자동 업데이트를 허용하는 것이 좋지만 특히 작업이 장기 실행되는 경우 작업 진행을 중단할 수 있습니다. OS 업데이트가 예기치 않게 발생하지 않는지 확인해야 하는 경우 이 값을 false로 설정할 수 있습니다.

unusable 상태의 노드

Batch는 여러 가지 이유로 computeNodeStateunusable로 설정할 수 있습니다. 작업을 unusable 노드로 예약할 수 없지만 계속 노드에 요금이 청구됩니다.

Batch에서 원인을 확인할 수 있으면 computeNodeError 속성이 원인을 보고합니다. 노드가 unusable 상태에 있지만 computeNodeError가 없는 경우 이는 Batch가 VM과 통신할 수 없음을 의미합니다. 이 경우 Batch는 항상 VM 복구를 시도합니다. 그러나 Batch는 상태가 unusable이라도 애플리케이션 패키지나 컨테이너 설치를 실패한 VM 복구를 자동으로 시도하지 않습니다.

unusable 노드의 다른 원인에는 다음과 같은 원인이 포함될 수 있습니다.

  • 사용자 지정 VM 이미지를 올바르지 않습니다. 예를 들어 이미지가 올바르게 준비되지 않았습니다.
  • VM이 인프라 오류 또는 하위 수준 업그레이드로 인해 이동됩니다. Batch가 노드를 복구합니다.
  • VM 이미지가 해당 이미지를 지원하지 않는 하드웨어에 배포되었습니다. 예를 들어 Standard_D1_v2 VM에서 CentOS HPC 이미지가 배포됩니다.
  • VM이 Azure 가상 네트워크에 있으며 트래픽이 키 포트로 차단되었습니다.
  • VM이 가상 네트워크에 있지만 Azure Storage에 대한 아웃바운드 트래픽이 차단되었습니다.
  • VM이 사용자 지정 DNS 구성을 사용하는 가상 네트워크에 있으며 DNS 서버는 Azure Storage를 확인할 수 없습니다.

노드 에이전트 로그 파일

각 풀 노드에서 실행되는 Batch 에이전트 프로세스는 풀 노드 이슈에 대한 지원을 받기 위해 연락해야 하는 경우에 유용할 수 있는 로그 파일을 제공합니다. Azure Portal, Batch Explorer 또는 컴퓨팅 노드 - Batch 서비스 로그 업로드 API를 통해 노드 로그 파일을 업로드할 수 있습니다. 로그 파일을 업로드하고 저장한 후에 노드나 풀을 삭제하여 노드 실행 비용을 절약할 수 있습니다.

노드 디스크가 가득 참

Batch는 노드 풀 VM의 임시 드라이브를 사용하여 다음 작업 파일, 작업 파일 및 공유 파일과 같은 파일을 저장합니다.

  • 애플리케이션 패키지 파일
  • 작업 리소스 파일
  • Batch 폴더 중 하나로 다운로드되는 애플리케이션 관련 파일
  • 각 작업 애플리케이션 실행에 대한 stdoutstderr 파일
  • 애플리케이션 관련 출력 파일

애플리케이션 패키지 또는 시작 작업 리소스 파일과 같은 파일은 Batch에서 풀 노드를 만들 때 한 번만 씁니다. 한 번만 쓰더라도 이러한 파일이 너무 크면 임시 드라이브가 가득 찰 수 있습니다.

stdoutstderr와 같은 다른 파일은 노드가 실행되는 작업마다 기록됩니다. 같은 노드에서 다수의 작업을 실행하거나 작업 파일이 너무 크면 임시 드라이브가 가득 찰 수 있습니다.

또한 노드가 시작된 후 사용자를 만들려면 OS 디스크에 약간의 공간이 필요합니다.

임시 드라이브의 크기는 VM 크기에 따라 달라집니다. VM 크기를 선택할 때는 임시 드라이브에 계획된 워크로드를 위한 충분한 공간이 있는지 확인해야 합니다.

Azure Portal에 풀을 추가하면 리소스 디스크 크기 열을 포함하여 VM 크기의 전체 목록을 표시할 수 있습니다. VM 크기를 설명하는 문서에는 임시 스토리지 열이 있는 테이블이 있습니다. 자세한 내용은 컴퓨팅 최적화 가상 머신 크기를 참조하세요. 예제 크기 테이블은 Fsv2-series를 참조하세요.

각 작업에서 작성한 파일의 보존 시간을 지정할 수 있습니다. 보존 시간은 작업 파일을 자동으로 정리하기 전에 유지할 기간을 결정합니다. 스토리지 요구 사항을 낮추기 위해 보존 시간을 줄일 수 있습니다.

임시 또는 OS 디스크의 공간이 부족하거나 공간이 부족할 경우 노드는 unusablecomputeNoteState로 이동하고 노드 오류로 디스크가 가득 찼다고 표시됩니다.

노드의 공간을 차지하고 있는 항목이 확실하지 않으면 노드에 원격으로 연결하고 수동으로 조사해 봅니다. 또한 파일 - 컴퓨팅 노드에서 목록 API를 사용하여 Batch 관리 폴더에서 파일(예: 작업 출력)을 검사할 수 있습니다. 이 API는 Batch 관리 디렉터리에 있는 파일만 나열합니다. 작업이 다른 곳에 파일을 만든 경우 이 API는 파일을 표시하지 않습니다.

노드에서 필요한 데이터를 검색하거나 지속 가능한 저장소에 업로드한 후에는 필요에 따라 데이터를 삭제하여 공간을 확보할 수 있습니다.

이전에 완료된 작업이나 작업 데이터가 노드에 계속 있는 작업을 삭제할 수 있습니다. 노드의 taskInformation에서 recentTasks 컬렉션을 찾거나 파일 - 컴퓨팅 노드에서 목록 API를 사용합니다. 작업을 삭제하면 작업의 모든 작업이 삭제됩니다. 작업에서 태스크를 삭제하면 노드의 작업 디렉터리에 있는 데이터가 삭제되어 공간이 확보됩니다. 충분한 공간을 확보했으면 노드를 다시 부팅합니다. 노드는 unusable 상태에서 다시 idle로 이동해야 합니다.

VirtualMachineConfiguration 풀에서 사용할 수 없는 노드를 복구하려면 풀 - 노드 제거 API를 사용하여 풀에서 노드를 제거하면 됩니다. 그런 다음, 풀을 다시 확장하여 불량 노드를 새 노드로 바꾸면 됩니다. CloudServiceConfiguration 풀의 경우 컴퓨팅 노드 - 이미지로 다시 설치 API를 사용하여 노드를 이미지로 다시 설치해 전체 디스크를 정리할 수 있습니다. 현재 VirtualMachineConfiguration 풀에서는 이미지로 다시 설치가 지원되지 않습니다.

다음 단계