빠른 시작: Azure CLI를 사용하여 배치 계정 만들기 및 작업 실행

이 빠른 시작에서는 Azure CLI 명령과 스크립트를 사용하여 Batch 리소스를 만들고 관리함으로써 Azure Batch를 시작하는 방법을 보여 줍니다. 가상 머신 풀 또는 컴퓨팅 노드가 있는 배치 계정을 만듭니다. 그런 다음 풀 노드에서 실행되는 작업을 사용하여 작업을 만들고 실행합니다.

이 빠른 시작을 완료하면 Batch 서비스의 주요 개념을 이해하고 보다 현실적인 대규모 워크로드에서 Batch를 사용할 준비가 됩니다.

필수 조건

  • Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.

  • Azure Cloud Shell 또는 Azure CLI.

    이 빠른 시작의 Azure CLI 명령을 Azure Cloud Shell에서 대화형으로 실행할 수 있습니다. Cloud Shell에서 명령을 실행하려면 코드 블록의 오른쪽 위 모서리에서 Cloudshell 열기를 선택합니다. 복사를 선택하여 코드를 복사하고 Cloud Shell에 붙여넣어 실행합니다. Azure Portal 내에서 Cloud Shell을 실행할 수 있습니다. Cloud Shell은 항상 최신 버전의 Azure CLI를 사용합니다.

    또는 Azure CLI를 로컬로 설치 하여 명령을 실행할 수 있습니다. 이 문서의 단계에는 Azure CLI 버전 2.0.20 이상이 필요합니다. az version을 실행하여 설치된 버전과 종속 라이브러리를 확인하고 az upgrade를 실행하여 업그레이드합니다. 로컬 설치를 사용하는 경우 az login 명령을 사용하여 Azure에 로그인합니다.

참고 항목

일부 지역 및 구독 유형의 경우 할당량 제한으로 인해 배치 계정 또는 노드 만들기가 실패하거나 완료되지 않을 수 있습니다. 이러한 상황에서는 무료로 할당량 증가를 요청할 수 있습니다. 자세한 내용은 Batch 서비스 할당량 및 제한을 참조하세요.

리소스 그룹 만들기

다음 az group create 명령을 실행하여 eastus2 Azure 지역에 qsBatch라는 Azure 리소스 그룹을 만듭니다. 리소스 그룹은 이 빠른 시작을 위한 Azure 리소스를 보유하는 논리적 컨테이너입니다.

az group create \
    --name qsBatch \
    --location eastus2

저장소 계정 만들기

az storage account create 명령을 사용하여 배치 계정에 연결할 Azure Storage 계정을 만듭니다. 이 빠른 시작에서는 스토리지 계정을 사용하지 않지만 대부분의 실제 Batch 워크로드는 연결된 스토리지 계정을 사용하여 애플리케이션을 배포하고 입력 및 출력 데이터를 저장합니다.

다음 명령을 실행하여 리소스 그룹에 mybatchstorage라는 Standard_LRS SKU 스토리지 계정을 만듭니다.

az storage account create \
    --resource-group qsBatch \
    --name mybatchstorage \
    --location eastus2 \
    --sku Standard_LRS

Batch 계정 만들기

다음 az batch account create 명령을 실행하여 리소스 그룹에 mybatchaccount라는 배치 계정을 만들고 이를 mybatchstorage 스토리지 계정과 연결합니다.

az batch account create \
    --name mybatchaccount \
    --storage-account mybatchstorage \
    --resource-group qsBatch \
    --location eastus2

az batch account login 명령을 실행하여 새 배치 계정에 로그인합니다. Batch로 계정을 인증하면 이 세션의 후속 az batch 명령은 이 계정 컨텍스트를 사용합니다.

az batch account login \
    --name mybatchaccount \
    --resource-group qsBatch \
    --shared-key-auth

컴퓨팅 노드 풀 만들기

az batch pool create 명령을 실행하여 배치 계정에 Linux 컴퓨팅 노드 풀을 만듭니다. 다음 예에서는 Ubuntu 20.04 LTS OS를 실행하는 두 개의 Standard_A1_v2 크기 VM으로 구성된 myPool이라는 풀을 만듭니다. 이 노드 크기는 이 빠른 시작 예에서 성능과 비용의 적절한 균형을 제공합니다.

az batch pool create \
    --id myPool \
    --image canonical:0001-com-ubuntu-server-focal:20_04-lts \
    --node-agent-sku-id "batch.node.ubuntu 20.04" \
    --target-dedicated-nodes 2 \
    --vm-size Standard_A1_v2

Batch는 풀을 즉시 만들지만, 컴퓨팅 노드를 할당하고 시작하는 데 몇 분이 걸립니다. az batch pool show 명령을 사용하여 풀 상태를 봅니다. 이 명령은 풀의 모든 속성을 표시하고 특정 속성을 쿼리할 수 있습니다. 다음 명령은 풀 할당 상태를 쿼리합니다.

az batch pool show --pool-id myPool \
    --query "allocationState"

Batch가 노드를 할당하고 시작하는 동안 풀은 resizing 상태입니다. 풀 상태가 여전히 resizing인 동안 작업을 만들 수 있습니다. 할당 상태가 steady이고 모든 노드가 실행되고 있으면 풀에서 태스크를 실행할 준비가 됩니다.

작업 만들기

az batch job create 명령을 사용하여 풀에서 실행할 일괄 작업을 만듭니다. Batch 작업은 하나 이상의 태스크로 구성된 논리적 그룹입니다. 작업에는 실행할 풀과 같이 작업에 공통적인 설정이 포함됩니다. 다음 예에서는 처음에 작업이 없는 myPoolmyJob이라는 작업을 만듭니다.

az batch job create \
    --id myJob \
    --pool-id myPool

작업 태스크 만들기

Batch는 컴퓨팅 노드에 앱과 스크립트를 배포하는 여러 가지 방법을 제공합니다. az batch task create 명령을 사용하여 작업에서 실행할 태스크를 만듭니다. 각 태스크에는 앱이나 스크립트를 지정하는 명령줄이 있습니다.

다음 Bash 스크립트는 myTask4를 통해 myTask1이라는 4개의 동일한 병렬 태스크를 만듭니다. 태스크 명령줄은 컴퓨팅 노드에 Batch 환경 변수를 표시한 후 90초를 기다립니다.

for i in {1..4}
do
   az batch task create \
    --task-id myTask$i \
    --job-id myJob \
    --command-line "/bin/bash -c 'printenv | grep AZ_BATCH; sleep 90s'"
done

명령 출력에는 각 태스크에 대한 설정이 표시됩니다. Batch에서 태스크를 컴퓨팅 노드에 배포합니다.

태스크 상태 보기

태스크를 만든 후 Batch는 풀에서 실행할 태스크를 큐에 추가합니다. 노드를 사용할 수 있게 되면 해당 노드에서 태스크가 실행됩니다.

az batch task show 명령을 사용하여 Batch 태스크 상태를 봅니다. 다음 예에서는 myTask1 상태에 대한 세부 정보를 보여 줍니다.

az batch task show \
    --job-id myJob \
    --task-id myTask1

명령 출력에는 많은 세부 정보가 포함됩니다. 예를 들어, 0exitCode는 태스크 명령이 성공적으로 완료되었음을 나타냅니다. nodeId는 태스크를 실행한 풀 노드의 이름을 표시합니다.

태스크 출력 보기

az batch task file list 명령을 사용하여 노드에서 태스크가 만든 파일을 나열합니다. 다음 명령은 myTask1이 만든 파일을 나열합니다.

az batch task file list \
    --job-id myJob \
    --task-id myTask1 \
    --output table

결과는 다음 출력과 유사합니다.

Name        URL                                                                                       Is Directory    Content Length
----------  ----------------------------------------------------------------------------------------  --------------  ----------------
stdout.txt  https://mybatchaccount.eastus2.batch.azure.com/jobs/myJob/tasks/myTask1/files/stdout.txt  False                  695
certs       https://mybatchaccount.eastus2.batch.azure.com/jobs/myJob/tasks/myTask1/files/certs       True
wd          https://mybatchaccount.eastus2.batch.azure.com/jobs/myJob/tasks/myTask1/files/wd          True
stderr.txt  https://mybatchaccount.eastus2.batch.azure.com/jobs/myJob/tasks/myTask1/files/stderr.txt  False                    0

az batch task file download 명령은 출력 파일을 로컬 디렉터리에 다운로드합니다. 다음 예를 실행하여 stdout.txt 파일을 다운로드합니다.

az batch task file download \
    --job-id myJob \
    --task-id myTask1 \
    --file-path stdout.txt \
    --destination ./stdout.txt

텍스트 편집기에서 표준 출력 파일의 콘텐츠를 볼 수 있습니다. 다음 예에서는 일반적인 stdout.txt 파일을 보여 줍니다. 이 태스크의 표준 출력에는 노드에 설정된 Azure Batch 환경 변수가 표시됩니다. Batch 작업 태스크 명령줄과 명령줄이 실행하는 앱 및 스크립트에서 이러한 환경 변수를 참조할 수 있습니다.

AZ_BATCH_TASK_DIR=/mnt/batch/tasks/workitems/myJob/job-1/myTask1
AZ_BATCH_NODE_STARTUP_DIR=/mnt/batch/tasks/startup
AZ_BATCH_CERTIFICATES_DIR=/mnt/batch/tasks/workitems/myJob/job-1/myTask1/certs
AZ_BATCH_ACCOUNT_URL=https://mybatchaccount.eastus2.batch.azure.com/
AZ_BATCH_TASK_WORKING_DIR=/mnt/batch/tasks/workitems/myJob/job-1/myTask1/wd
AZ_BATCH_NODE_SHARED_DIR=/mnt/batch/tasks/shared
AZ_BATCH_TASK_USER=_azbatch
AZ_BATCH_NODE_ROOT_DIR=/mnt/batch/tasks
AZ_BATCH_JOB_ID=myJobl
AZ_BATCH_NODE_IS_DEDICATED=true
AZ_BATCH_NODE_ID=tvm-257509324_2-20180703t215033z
AZ_BATCH_POOL_ID=myPool
AZ_BATCH_TASK_ID=myTask1
AZ_BATCH_ACCOUNT_NAME=mybatchaccount
AZ_BATCH_TASK_USER_IDENTITY=PoolNonAdmin

리소스 정리

Batch 자습서 및 샘플을 계속 사용하려면 이 빠른 시작에서 만든 배치 계정 및 연결된 스토리지 계정을 사용할 수 있습니다. 배치 계정 자체에는 요금이 부과되지 않습니다.

풀과 노드는 작업을 실행하지 않더라도 노드가 실행되는 동안 요금이 부과됩니다. 풀이 더 이상 필요하지 않으면 az batch pool delete 명령을 사용하여 삭제합니다. 풀을 삭제하면 노드의 모든 태스크 출력과 노드 자체가 삭제됩니다.

az batch pool delete --pool-id myPool

이 빠른 시작을 위해 만든 리소스가 더 이상 필요하지 않으면 az group delete 명령을 사용하여 리소스 그룹과 모든 해당 리소스를 삭제할 수 있습니다. 리소스 그룹과 스토리지 계정, 배치 계정, 노드 풀 및 모든 관련 리소스를 삭제하려면 다음 명령을 실행합니다.

az group delete --name qsBatch

다음 단계

이 빠른 시작에서는 배치 계정과 풀을 만들고, Batch 작업과 태스크를 만들고 실행했으며, 노드에서 태스크 출력을 확인했습니다. 이제 Batch 서비스의 주요 개념을 이해했으므로 보다 현실적이고 대규모 워크로드에서 Batch를 사용할 준비가 되었습니다. Azure Batch에 대한 자세한 내용은 Azure Batch 자습서로 계속 진행하세요.