다음을 통해 공유


Azure Batch의 노드 및 풀

Azure Batch 워크플로에서 컴퓨팅 노드(또는 노드)는 애플리케이션의 워크로드 중 일부를 처리하는 가상 머신입니다. 은 애플리케이션을 실행할 이러한 노드의 컬렉션입니다. 이 문서에서는 노드 및 풀에 대해 자세히 설명하고 Azure Batch 워크플로에서 이들을 만들고 사용하는 경우 고려해야 할 사항도 설명합니다.

노드

노드는 애플리케이션의 워크로드 중 일부를 처리하도록 전담하는 Azure VM(가상 머신) 또는 클라우드 서비스 VM입니다. 노드의 크기에 따라 노드에 할당되는 CPU 코어 수, 메모리 용량 및 로컬 파일 시스템 크기가 결정됩니다.

Azure Cloud Services, Azure Virtual Machines Marketplace 이미지 또는 사용자가 준비한 사용자 지정 이미지를 사용하여 Windows 또는 Linux 노드의 풀을 만들 수 있습니다.

노드는 노드의 운영 체제 환경에서 지원하는 모든 실행 파일 또는 스크립트를 실행할 수 있습니다. 실행 파일 또는 스크립트에는 *.exe, *.cmd, *.bat 및 PowerShell 스크립트(Windows용) 및 이진 파일, 셸 및 Python 스크립트(Linux용)가 포함됩니다.

Batch의 모든 컴퓨팅 노드는 다음 사항도 포함합니다.

기본적으로 노드는 서로 통신할 수 있지만 동일한 풀에 속하지 않는 가상 머신과 통신할 수는 없습니다. 노드가 다른 가상 머신 또는 온-프레미스 네트워크와 안전하게 통신할 수 있도록 Azure VNet(가상 네트워크)의 서브넷에서 풀을 프로비저닝할 수 있습니다. 이렇게 하면 공용 IP 주소를 통해 노드에 액세스할 수 있습니다. Batch는 이러한 공용 IP 주소를 만들고 풀의 수명 동안 변경 될 수 있습니다. 사용자가 제어할 수 있는 고정 공용 IP 주소를 사용하여 풀을 만들 수도 있습니다. 이렇게 하면 IP 주소가 갑자기 변경되지 않습니다.

풀은 애플리케이션이 실행되는 노드 컬렉션입니다.

Azure Batch 풀은 코어 Azure 컴퓨팅 플랫폼을 기반으로 합니다. 이들은 대규모 할당, 애플리케이션 설치, 데이터 배포, 상태 모니터링 및 풀 내 컴퓨팅 노드 수의 유연한 조정(스케일링)을 제공합니다.

풀에 추가된 모든 노드에는 고유 이름 및 IP 주소가 할당됩니다. 노드가 풀에서 제거되면 운영 체제 또는 파일에 적용된 모든 변경 내용이 손실되며, 해당 이름 및 IP 주소가 나중에 사용할 수 있도록 해제됩니다. 노드가 풀에서 제거되면 수명이 끝납니다.

풀은 생성된 Batch 계정에서만 사용할 수 있습니다. Batch 계정은 실행해야 하는 애플리케이션의 리소스 요구 사항을 충족하기 위해 여러 풀을 만들 수 있습니다.

풀을 수동으로 만들 수도 있고, 수행할 작업을 지정한 경우에는 Batch 서비스에서 자동으로 풀을 만듭니다. 풀을 만들 때는 다음과 같은 특성을 지정할 수 있습니다.

중요함

Batch 계정에는 Batch 계정의 코어 수를 제한하는 기본 할당량이 있습니다. 코어 수는 컴퓨팅 노드 수에 해당합니다. Azure Batch 서비스 할당량 및 제한에서 할당량 증가 방법에 대한 기본 할당량과 지침을 찾을 수 있습니다. 풀이 목표 노드 수를 달성하지 못하는 경우 코어 할당량이 원인일 수 있습니다.

운영 체제 및 버전

Batch 풀을 만들 때 Azure 가상 머신 구성과 풀의 각 컴퓨팅 노드에서 실행하려는 운영 체제 유형을 지정합니다.

설정

가상 머신 구성

가상 머신 구성은 풀이 Azure 가상 머신으로 구성됨을 나타냅니다. 이러한 VM은 Linux 또는 Windows 이미지에서 만들 수 있습니다.

Batch 노드 에이전트는 풀의 각 노드에서 실행되고 노드와 Batch 서비스 간의 명령 및 컨트롤 인터페이스를 제공하는 프로그램입니다. SKU라고 하는 노드 에이전트의 구현은 서로 다른 운영 체제에 대해 여러 가지가 있습니다. Virtual Machine 구성에 따라 풀을 만들 때는 노드 크기와 해당 노드를 만드는 데 사용되는 이미지의 원본뿐만 아니라 해당 노드에 설치될 가상 머신 이미지 참조 및 Batch 노드 에이전트 SKU도 지정해야 합니다. 이러한 풀 속성에 대한 자세한 내용은 Azure Batch 풀에서 Linux 컴퓨팅 노드 프로비전을 참조하세요. 필요에 따라 하나 이상의 빈 데이터 디스크를 Marketplace 이미지에서 만든 풀 VM에 연결하거나 VM을 만드는 데 사용되는 사용자 지정 이미지에 데이터 디스크를 포함할 수 있습니다. 데이터 디스크를 포함하는 경우 VM 내에서 디스크를 탑재하고 포맷하여 사용해야 합니다.

노드 에이전트 SKU

풀을 만들 때 기본 VHD 이미지의 OS에 따라 적절한 nodeAgentSkuId를 선택해야 합니다. 지원되는 노드 에이전트 SKU 나열 작업을 호출하여 사용 가능한 노드 에이전트 SKU ID를 OS 이미지 참조에 매핑할 수 있습니다.

Virtual Machine 풀에 대한 사용자 지정 이미지

사용자 지정 이미지를 사용하여 풀을 만드는 방법에 대한 자세한 내용은 Azure Compute Gallery를 사용하여 사용자 지정 풀 만들기를 참조하세요.

Virtual Machine 풀에서 컨테이너 지원

Batch API를 사용하여 Virtual Machine 구성 풀을 만들 때 Docker 컨테이너에서 작업을 실행하도록 풀을 설정할 수 있습니다. 현재 Docker 컨테이너를 지원하는 이미지를 사용하여 풀을 만들어야 합니다. Microsoft Azure Marketplace의 컨테이너 이미지로 Windows Server 2016 Datacenter를 사용하거나 Docker Community Edition이나 Enterprise Edition 및 모든 필수 드라이버를 포함하는 사용자 지정 VM 이미지를 제공합니다. 풀 설정은 풀이 만들어질 때 VM에 컨테이너 이미지를 복사하는 컨테이너 구성을 포함해야 합니다. 그러면 풀에서 실행되는 작업은 컨테이너 이미지와 컨테이너 실행 옵션을 참조할 수 있습니다.

자세한 내용은 Azure Batch에서 Docker 컨테이너 애플리케이션 실행을 참조하세요.

노드 유형 및 대상

풀을 만들 때 각각에 대해 원하는 노드 유형 및 대상 수를 지정할 수 있습니다. 두 가지 유형의 노드는 다음과 같습니다.

  • 전용 노드 전용 컴퓨팅 노드는 사용자 워크로드용으로 예약되어 있습니다. 일반적으로 스폿 노드보다 비용이 많이 들지만 선점되지 않도록 보장됩니다.
  • 스폿 노드 스폿 노드는 Azure의 나머지 용량을 활용하여 Batch 워크로드를 실행합니다. 스폿 노드는 전용 노드보다 시간당 비용이 더 적게 들며, 상당한 컴퓨팅 능력이 필요한 워크로드를 사용할 수 있습니다. 자세한 내용은 Batch에서 스폿 VM 사용을 참조하세요.

Azure에 여유 용량이 부족하면 스폿 노드는 선점될 수 있습니다. 작업을 실행하는 중에 노드가 선취되면 해당 작업은 다시 대기 상태가 되고 컴퓨팅 노드를 다시 사용할 수 있게 되면 다시 실행됩니다. 스폿 노드는 작업 완료 시간이 유연하고 작업은 여러 노드에 분산되어 있는 워크로드에 적합한 옵션입니다. 시나리오에 스폿 노드를 사용하기 전에 선점으로 인해 손실된 작업이 최소화되고 다시 시작하거나 다시 만들기 쉽도록 합니다.

스폿 노드 및 전용 컴퓨팅 노드를 모두 동일한 풀에서 사용할 수 있습니다. 각 유형의 노드에는 고유한 대상 설정이 있으므로 원하는 노드 수를 지정할 수 있습니다.

경우에 따라 풀이 원하는 노두 수에 도달하지 못할 수 있기 때문에 컴퓨팅 노드 수를 대상이라고 합니다. 예를 들어, Batch 계정의 코어 할당량에 먼저 도달하는 경우 풀은 대상에 도달하지 못할 수 있습니다. 또는 최대 노드 수를 제한하는 풀에 자동 크기 조정 수식을 적용한 경우 풀이 대상을 달성하지 못할 수 있습니다.

비고

Batch 스폿 컴퓨팅 노드가 선점되면 먼저 unusable 상태로 전환됩니다. 잠시 후 이러한 컴퓨팅 노드는 preempted 상태로 전환되어 이를 반영하게 됩니다. Batch를 사용하면 대상 인스턴스 수를 유지하기 위해 최선의 목표를 가지고 제거된 스폿 인스턴스를 복원하는 Try & Restore 동작을 자동으로 사용할 수 있습니다.

스폿 노드 및 전용 노드에 대한 가격 정보는 Batch 가격 책정을 참조하세요.

노드 크기

Azure Batch 풀을 만들 때 Azure에서 사용할 수 있는 거의 모든 VM 제품군과 크기 중에서 선택할 수 있습니다. Azure는 다양한 작업에 대해 다양한 VM 크기(특수화된 HPC 또는 GPU 사용 가능 VM 크기 포함)를 제공합니다. 노드 VM 크기는 풀을 만들 때만 선택할 수 있습니다. 즉, 풀이 만들어지면 VM 크기를 변경할 수 없습니다.

자세한 내용은 Azure Batch 풀의 컴퓨팅 노드에 대한 VM 크기 선택을 참조하세요.

자동 크기 조정 정책

동적 워크로드의 경우 풀에 자동 크기 조정 정책을 적용할 수 있습니다. Batch 서비스는 수식을 주기적으로 평가하고 컴퓨팅 시나리오의 현재 워크로드 및 리소스 사용량에 따라 풀 내의 노드 수를 동적으로 조정합니다. 그러면 필요한 리소스만을 사용하고 필요하지 않은 리소스를 해제하여 애플리케이션을 실행하는 전체 비용을 낮출 수 있습니다.

자동 크기 조정 수식을 작성하고 해당 수식의 풀과 연결하여 자동 크기 조정을 사용하도록 설정합니다. Batch 서비스는 이 수식을 사용하여 다음 크기 조정 간격(구성할 수 있는 간격)에 대한 풀의 노드 대상 수를 확인합니다. 풀을 만들 때 자동 크기 조정 설정을 지정하거나 나중에 풀에 자동 크기 조정을 사용하도록 설정할 수 있습니다. 크기 조정을 사용하는 풀에 크기 조정 설정을 업데이트할 수도 있습니다.

작업의 예로, 실행해야 할 많은 수의 태스크를 제출해야 할 수도 있습니다. 풀에 크기 조정 수식을 할당하여 현재 큐에 대기 중인 태스크 수와 작업 내 태스크 완료율에 따라 풀의 노드 수를 조정할 수 있습니다. Batch 서비스는 수식을 정기적으로 계산하고 워크로드 및 다른 수식 설정에 따라 풀 크기를 조정합니다. 서비스는 큐에 대기 중인 태스크 수가 많은 경우 필요에 따라 노드를 추가하고, 큐에 대기 중이거나 실행 중인 태스크가 없는 경우 노드를 제거합니다.

크기 조정 수식은 다음 메트릭을 기반으로 할 수 있습니다.

  • 시간 메트릭은 지정된 시간 동안 5분 간격으로 수집되는 통계를 기반으로 합니다.
  • 리소스 메트릭은 CPU 사용량, 대역폭 사용량, 메모리 사용량 및 노드 수를 기반으로 합니다.
  • 태스크 메트릭활성(큐에 대기), 실행 또는 완료 등 태스크 상태에 따라 다릅니다.

자동 크기 조정이 풀에서 컴퓨팅 노드 수를 감소시키면 감소 작업 시에 실행 중인 태스크를 처리하는 방법을 고려해야 합니다. 이를 제공하기 위해 Batch가 수식에 포함할 수 있는 노드 할당 취소 옵션을 제공합니다. 예를 들어 실행 중인 태스크를 즉시 중지한 다음 다른 노드에서 실행하기 위해 큐에 다시 넣거나 풀에서 노드를 제거하기 전에 완료하도록 지정할 수 있습니다. 노드 할당 취소 옵션을 taskcompletion로 설정하면 모든 작업이 완료될 때까지 풀이 크기 조정되지 않으며, retaineddata로 설정하면 모든 작업 보존 기간이 만료될 때까지 크기 조정이 이루어지지 않습니다.

자동으로 애플리케이션 크기를 조정하는 방법에 대한 자세한 내용은 Azure Batch 풀에서 자동으로 컴퓨팅 노드 크기 조정을 참조하세요.

컴퓨팅 리소스 사용률을 극대화하기 위해 작업 끝에서 목표 노드 수를 0으로 설정하지만 실행 중인 태스크를 완료할 수 있도록 합니다.

태스크 예약 정책

노드당 최대 태스크 구성은 풀 내의 각 컴퓨팅 노드에서 병렬로 실행할 수 있는 최대 태스크 수를 결정합니다.

기본 구성은 한 번에 하나의 작업이 노드에서 실행되도록 지정하지만 노드에서 두 개 이상의 태스크를 동시에 실행하는 것이 좋은 시나리오가 있습니다. 노드당 여러 작업을 활용할 수 있는 방법에 대한 동시 노드 작업 문서의 예제 시나리오를 참조하세요.

채우기 유형을 지정할 수도 있습니다. 이는 태스크를 다른 노드에 할당하기 전에 Batch가 태스크를 풀의 모든 노드에 균등하게 분산시킬지 또는 각 노드를 최대 태스크 수로 패키징할지 결정합니다.

통신 상태

대부분의 시나리오에서 작업은 독립적으로 작동하며 서로 통신할 필요가 없습니다. 하지만 MPI 시나리오와 같이 태스크가 통신해야 하는 애플리케이션이 있습니다.

노드 간 통신을 허용하도록 풀을 구성할 수 있습니다. 그러면 런타임에 풀 내의 노드가 통신할 수 있습니다. 노드 간 통신을 사용하도록 설정하면 Cloud Services 구성 풀의 노드가 1100보다 큰 포트에서 서로 통신할 수 있으며 Virtual Machine 구성 풀은 포트의 트래픽을 제한하지 않습니다.

노드 간 통신을 사용하도록 설정하면 클러스터 내의 노드 배치에도 영향을 주며 배포 제한 때문에 풀의 노드 최대 수를 제한할 수 있습니다. 애플리케이션에 노드 간 통신이 필요하지 않은 경우 Batch 서비스는 여러 클러스터 및 데이터 센터의 풀에 잠재적으로 많은 수의 노드를 할당하여 병렬 처리 능력을 높일 수 있습니다.

작업 시작

원하는 경우 노드가 풀에 조인하고 노드가 다시 시작되거나 이미지로 다시 설치될 때마다 각 노드에서 실행되는 시작 작업을 추가할 수 있습니다. 시작 태스크는 태스크가 컴퓨팅 노드에서 실행하는 애플리케이션을 설치하는 등 태스크를 실행하기 위해 컴퓨팅 노드를 준비하는 데 특히 유용합니다.

애플리케이션 패키지

애플리케이션 패키지를 지정하여 풀에 컴퓨팅 노드를 배포할 수 있습니다. 애플리케이션 패키지는 태스크가 실행하는 애플리케이션의 간소화된 배포 및 버전 관리를 제공합니다. 풀에 지정한 애플리케이션 패키지는 해당 풀에 추가되거나 다시 부팅되거나 재이미지화되는 모든 노드에 설치됩니다.

애플리케이션 패키지를 사용하여 Batch 노드에 애플리케이션을 배포하는 방법에 대한 자세한 내용은 Batch 애플리케이션 패키지를 사용하여 컴퓨팅 노드에 애플리케이션 배포를 참조하세요.

VNet(가상 네트워크) 및 방화벽 구성

Batch에서 컴퓨팅 노드 풀을 프로비전하면 풀을 Azure VNet(가상 네트워크)의 서브넷과 연결할 수 있습니다. Azure VNet을 사용하려면 Batch 클라이언트 API에서 Microsoft Entra 인증을 사용해야 합니다. Microsoft Entra ID에 대한 Azure Batch 지원은 Active Directory를 사용하여 Batch 서비스 솔루션 인증에 설명되어 있습니다.

VNet 요구 사항

VNet에서 Batch 풀 설정에 대한 자세한 내용은 가상 네트워크로 가상 머신의 풀 만들기를 참조하세요.

노드에 액세스하는 데 사용되는 공용 IP 주소가 변경되지 않도록 하려면 관리하고 있는 지정된 공용 IP 주소가 있는 풀을 생성할 수 있습니다.

풀 및 컴퓨팅 노드 수명

Azure Batch 솔루션을 설계할 때 풀을 만드는 방법 및 시기와 해당 풀 내의 컴퓨팅 노드를 사용 가능한 상태로 유지할 기간을 지정해야 합니다.

하나의 극단적인 예로, 제출하는 각 작업에 대해 풀을 만들고 태스크 실행이 완료되는 즉시 그 풀을 제거할 수 있습니다. 이는 노드가 필요할 때만 할당되고 유휴 상태이면 종료되기 때문에 사용률을 최대화합니다. 즉, 작업이 노드가 할당될 때까지 기다려야 하지만, 노드가 개별적으로 할당되고 시작 작업이 완료되는 즉시 태스크가 실행되도록 예약됩니다. 시작 작업이 완료될 때까지 기다려야 하는 경우에도 이 점에 유의해야 합니다. Batch는 태스크를 노드에 할당하기 전에 풀 내의 모든 노드를 사용할 수 있게 될 때까지 기다리 지 않습니다 . 이렇게 하면 사용 가능한 모든 노드의 최대 사용률을 보장합니다.

또 다른 극단적인 예로, 작업을 즉시 시작하는 것이 우선 순위가 가장 높은 경우 미리 풀을 만들고 작업이 제출되기 전에 해당 노드를 사용할 수 있습니다. 이 시나리오에서는 태스크를 즉시 시작할 수 있지만, 태스크가 할당되기를 기다리는 동안 노드가 유휴 상태일 수 있습니다.

통합 접근 방식은 일반적으로 가변적이지만 지속적인 부하를 처리하는 데 사용됩니다. 여러 작업이 제출되는 풀을 사용할 수 있으며 작업 부하에 따라 노드 수를 확장 또는 축소할 수 있습니다. 이는 현재 부하에 따라 사후 대응적으로 수행하거나 부하를 예측할 수 있는 경우 사전 대응적으로 수행할 수 있습니다. 자세한 내용은 자동 크기 조정 정책을 참조하세요.

오토풀

자동 풀은 작업이 제출될 때 풀에서 실행되는 작업보다 명시적으로 만들어지는 것이 아니라 Batch 서비스에서 만드는 풀입니다. Batch 서비스는 지정한 특성에 따라 자동 풀의 수명을 관리합니다. 대부분의 경우 이러한 풀은 작업이 완료된 후 자동으로 삭제되도록 설정됩니다.

인증서를 사용한 보안

일반적으로 태스크에 대한 중요한 정보(예: Azure Storage 계정의 키)를 암호화하거나 암호를 해독할 때는 인증서를 사용해야 합니다. 이를 지원하려면 노드에 인증서를 설치할 수 있습니다. 암호화된 암호는 명령줄 매개 변수를 통해 태스크에 전달되거나 태스크 리소스 중 하나에 포함되며 암호를 해독하는 데 설치된 인증서를 사용할 수 있습니다.

인증서 추가 작업(Batch REST) 또는 CertificateOperations.CreateCertificate 메서드(Batch .NET)를 사용하여 Batch 계정에 인증서를 추가할 수 있습니다. 그런 다음 인증서를 기존 풀이나 새 풀에 연결할 수 있습니다.

인증서가 풀에 연결되면 Batch 서비스가 풀의 각 노드에 인증서를 설치합니다. Batch 서비스는 노드가 시작되면 시작 태스크작업 관리자 태스크를 포함하여 모든 태스크를 시작하기 전에 해당 인증서를 설치합니다.

기존 풀에 풀 인증서를 추가하는 경우 인증서를 노드에 적용하려면 해당 컴퓨팅 노드를 다시 부팅해야 합니다.

다음 단계