연습 - CLI에서 Azure Batch 작업을 생성하여 병렬 태스크 실행

완료됨

Azure CLI를 사용하면 명령줄에서 Azure Batch 리소스를 만들고 배포할 수 있습니다.

여러분은 비영리 조직의 솔루션 설계자로서, Azure의 OCR 시나리오를 위한 Batch 솔루션을 만들기 시작하려고 합니다. 첫 번째 단계로, Batch 계정, 작업자 노드의 풀, 작업 및 태스크를 만드는 작업을 테스트할 예정이며, 모두 Azure CLI를 사용합니다.

Azure CLI는 Azure 리소스를 만들고 관리하기 위한 플랫폼 간 명령줄입니다. 일관된 az noun verb --properties 구문을 사용합니다. Azure Batch를 관리하는 CLI 명령은 이 규칙을 따르므로 모든 명령은 az batch verb --properties 형식을 취합니다.

중요

이 모듈의 연습은 선택 사항입니다. 연습을 완료하려면 고유한 Azure 구독이 필요합니다.

Azure Batch 리소스 만들기

먼저 테스트 시나리오에 대한 Azure Batch 계정 및 풀 작업자 노드를 만듭니다. 그런 다음, 풀에서 실행할 Batch 작업 및 태스크를 만듭니다.

새 리소스 그룹 만들기

  1. Azure Portal에 로그인합니다.

  2. 왼쪽 메뉴에서 리소스 그룹을 선택합니다.

  3. + 만들기를 선택합니다.

  4. 양식을 완료하여 연습에 사용할 새 리소스 그룹을 만들고 이름을 기록해 둡니다.

Azure Batch 계정 만들기

  1. 포털의 위쪽 메뉴에서 Cloud Shell 아이콘(>_)을 선택하여 Cloud Shell을 엽니다. 터미널 창 맨 위에 있는 드롭다운 메뉴를 사용하여 Bash있는지 확인합니다.

  2. 리소스 그룹 및 Batch 리소스에 대한 환경 변수를 만듭니다.

    RESOURCE_GROUP=<your resource group>
    BATCH_ACCOUNT=batchaccount$RANDOM
    
  3. Cloud Shell에서 다음 명령을 실행하여 Azure Batch 계정을 만듭니다. 다음 위치 중 하나를 선택합니다.

    westeurope,eastus,eastus2,westus,northcentralus,brazilsouth,northeurope,centralus,eastasia,japaneast,australiasoutheast,japanwest,koreasouth,koreacentral,southeastasia,southcentralus,australiaeast,southindia,centralindia,westindia,canadacentral,canadaeast,uksouth,ukwest,westcentralus,westus2,francecentral,southafricanorth
    
    az batch account create \
     --name $BATCH_ACCOUNT \
     --resource-group $RESOURCE_GROUP \
     --location <choose a location from the preceding list>
    
  4. 다음 명령을 실행하여 Azure Batch 계정에 로그인합니다.

    az batch account login \
     --name $BATCH_ACCOUNT \
     --resource-group $RESOURCE_GROUP \
     --shared-key-auth
    
  5. Ubuntu 18.04를 실행하는 세 가지 표준 A1 v2 VM의 풀을 만듭니다.

    az batch pool create \
     --id mypool --vm-size Standard_A1_v2 \
     --target-dedicated-nodes 3 \
     --image canonical:ubuntuserver:18.04-LTS \
     --node-agent-sku-id "batch.node.ubuntu 18.04"  
    
  6. 다음 명령을 실행하여 노드의 준비 여부를 주기적으로 확인합니다.

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

    이 쿼리에서 노드가 "안정적"인 것으로 표시되면 작동할 준비가 된 것입니다. "크기 조정"으로 표시되지만 실제로 프로비전됩니다. 노드 상태를 두 번 이상 쿼리하려면 위쪽 화살표 키를 사용하여 Cloud Shell에서 최신 명령을 반복할 수 있습니다.

  7. 다음 명령을 실행하여 노드에서 실행되는 모든 태스크에 대한 논리적 그룹화인 Batch 작업을 만듭니다.

    az batch job create \
     --id myjob \
     --pool-id mypool
    
  8. 다음 명령을 실행하여 Batch 작업을 만듭니다.

    for i in {1..10}
    do
       az batch task create \
        --task-id mytask$i \
        --job-id myjob \
        --command-line "/bin/bash -c 'echo \$(printenv | grep \AZ_BATCH_TASK_ID) processed by; echo \$(printenv | grep \AZ_BATCH_NODE_ID)'"
    done
    

    이 루프는 일련의 번호가 매겨진 Batch 작업을 생성하며, 각각 작업 ID 및 관련된 노드 ID에 대한 정보를 출력합니다. 여기서 무엇이 수행되는지 자세히 조사하면 Azure Batch의 작동 방식에 대한 많은 특징들을 파악할 수 있습니다. 작업은 사용 가능한 용량이 있는 노드에 자동으로 예약됩니다. 그러나 사용 중인 환경 변수(AZ_BATCH_TASK_IDAZ_BATCH_NODE_ID)는 태스크를 실행하기 위해 각 노드에서 만든 기본 계정인 태스크 사용자의 컨텍스트에서만 사용할 수 있는 노드에서 실행되는 태스크에 대한 정보를 표시합니다. 또한 인수는 --command-line 셸에서 직접 실행되지 않으므로 같은 printenv grep명령을 사용 /bin/bash -c 하려면 셸을 명시적으로 호출해야 합니다.

    이 루프는 Azure Batch 작업 구현을 완료합니다. 다음 모듈에서 사용할 수 있도록 Azure Batch 계정과 작업자 노드 풀을 그대로 두되, Batch 작업은 삭제하겠습니다. Batch 작업은 Batch 작업의 컨테이너 역할을 하므로 작업도 삭제됩니다.

  9. Batch 작업을 삭제하려면 Cloud Shell에서 다음 명령을 실행합니다.

    az batch job delete --job-id myjob -y