Azure Container Apps 지속성 작업 SDK 앱에 대한 자동 크기 조정 구성

Azure Container Apps 지속성 작업 SDK 앱을 호스트하는 경우 플랫폼이 오케스트레이션, 활동 또는 엔터티 워크로드에 따라 복제본 수를 자동으로 조정되도록 자동 크기 조정을 구성할 수 있습니다.

이 문서에서는 다음 방법을 알아봅니다.

  • 컨테이너 앱에 대한 최소 및 최대 복제본 수를 설정합니다.
  • 지속성 작업 스케줄러 작업 항목에 응답하는 크기 조정 규칙을 추가합니다.
  • Azure Developer CLI를 사용하여 자동 크기 조정 샘플을 배포하고 확인합니다.

메모

자동 크기 조정은 지속성 작업 SDK를 사용하여 빌드되고 Azure Container Apps에서 호스트되는 앱에 대해 지원됩니다. 이 기능은 KEDA 스케일러를 azure-durabletask-scheduler 사용합니다.

중요합니다

0으로 크기를 조정하도록 minReplicas 설정 0 하면 유휴 상태일 때 비용이 절감되지만 새 작업 항목이 도착할 때 콜드 시작 대기 시간이 발생합니다. 워크로드가 대기 시간에 민감한 경우 minReplicas1 이상으로 설정합니다.

자동 크기 조정기 구성

Azure Portal, Bicep 템플릿 및 Azure CLI를 통해 자동 크기 조정기 구성을 설정할 수 있습니다.

  1. Azure Portal에서 컨테이너 앱으로 이동합니다.

  2. 왼쪽 메뉴에서 애플리케이션>배율을 선택합니다.

  3. 수정 버전에 대한 최소 복제본최대 복제본 값을 설정합니다.

    Azure Portal의 스케일러 최소 및 최대 복제본 구성 스크린샷

  4. 추가를 선택하여 새 크기 조정 규칙을 만듭니다. 형식사용자 지정으로 설정하고 지속성 작업 스케줄러 필드를 구성합니다.

    Azure Portal에서 스케일러에 대한 지속성 작업 스케줄러 관련 구성의 스크린샷

  5. 관리 ID를 사용하여 인증 확인란이 선택되어 있는지 확인하고 스케줄러 및 작업 허브 리소스에 연결된 ID를 선택합니다.

  6. 저장을 선택합니다.

분야 설명 예시
최소 복제본 지정된 시간에 컨테이너 수정에 허용되는 최소 복제본 수입니다. 1
최대 복제본 지정된 시간에 컨테이너 수정에 허용되는 최대 복제본 수입니다. 10
endpoint 배율 조정기가 연결하는 내구성 있는 작업 스케줄러 엔드포인트입니다. https://dts-ID.centralus.durabletask.io
최대동시작업항목수 단일 복제본이 동시에 처리하는 최대 작업 항목 수입니다. 값이 낮을수록 크기 조정기가 복제본을 더 빨리 추가합니다. CPU 집약적인 작업에는 1로 시작하고, I/O 바운드 워크로드의 경우 값을 증가시키십시오. 1
taskhubName 스케줄러에 연결된 작업 허브의 이름입니다. taskhub-ID
작업 항목 유형 디스패치되는 작업 항목 유형입니다. 옵션에는 Orchestration, Activity 또는 Entity가 포함됩니다. Orchestration
관리형 아이덴티티 스케줄러 및 작업 허브 리소스에 연결된 사용자 할당 또는 시스템 할당 관리 ID입니다. /subscriptions/<SUB_ID>/resourceGroups/<RG>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<IDENTITY_NAME>

자습서: 자동 크기 조정 컨테이너 앱 배포

기존 앱에서 자동 크기 조정을 이미 구성했나요? 이 섹션을 건너뛸 수 있습니다. 실습 연습을 원하는 경우 아래 단계에 따라 Azure Developer CLI를 사용하여 Azure Container Apps 샘플에서 Autoscaling 배포합니다. 이 샘플은 함수 체인 패턴을 사용하고 미리 구성된 KEDA 스케일러를 포함하는 .NET 지속성 작업 SDK 앱을 배포합니다.

메모

이 샘플에서는 지속성 작업 .NET SDK를 사용하지만 자동 크기 조정은 언어에 구애받지 않습니다.

사전 요구 사항

환경 설정

  1. Azure-Samples/Durable-Task-Scheduler 디렉터리를 복제합니다.

    git clone https://github.com/Azure-Samples/Durable-Task-Scheduler.git
    
  2. Azure 개발자 CLI를 사용하여 Azure로 인증합니다.

    azd auth login
    

Azure Developer CLI를 사용하여 솔루션 배포

  1. 샘플 디렉터리로 이동합니다 AutoscalingInACA .

    cd /path/to/Durable-Task-Scheduler/samples/scenarios/AutoscalingInACA
    
  2. Azure 개발자 CLI 환경을 초기화합니다(처음만 필요).

    azd init
    
  3. 리소스를 프로비전하고 애플리케이션을 배포합니다.

    azd up
    
  4. 터미널에서 메시지가 표시되면 다음 매개 변수를 제공합니다.

    매개 변수 설명
    환경 이름 모든 Azure 리소스를 보관하기 위해 만든 리소스 그룹의 접두사입니다.
    Azure 위치 리소스의 Azure 위치입니다.
    Azure 구독 리소스에 대한 Azure 구독입니다.

    이 프로세스를 완료하는 데 약간의 시간이 걸릴 수 있습니다. azd up 명령이 완료되면 CLI 출력에는 배포 진행률을 모니터링하는 두 개의 Azure 포털 링크가 표시됩니다. 출력에는 또한 azd up이 어떻게 되는지가 표시됩니다:

    • ./infra 사용하여 azd provision 디렉터리에 제공된 Bicep 파일을 통해 필요한 모든 Azure 리소스를 만들고 구성합니다. Azure Developer CLI에서 프로비전되면 Azure 포털을 통해 이러한 리소스에 액세스할 수 있습니다. Azure 리소스를 프로비전하는 파일은 다음과 같습니다.
      • main.parameters.json
      • main.bicep
      • 기능별로 구성된 app 리소스 디렉터리
      • core 템플릿에서 사용하는 Bicep 모듈을 포함하는 azd 참조 라이브러리
    • azd deploy를 사용하여 코드를 배포합니다.

    예상 출력

    Packaging services (azd package)
    
    (✓) Done: Packaging service client
    - Image Hash: {IMAGE_HASH}
    - Target Image: {TARGET_IMAGE}
    
    
    (✓) Done: Packaging service worker
    - Image Hash: {IMAGE_HASH}
    - Target Image: {TARGET_IMAGE}
    
    
    Provisioning Azure resources (azd provision)
    Provisioning Azure resources can take some time.
    
    Subscription: SUBSCRIPTION_NAME (SUBSCRIPTION_ID)
    Location: West US 2
    
     You can view detailed progress in the Azure portal:
     https://portal.azure.com/#view/HubsExtension/DeploymentDetailsBlade/~/overview/id/%2Fsubscriptions%SUBSCRIPTION_ID%2Fproviders%2FMicrosoft.Resources%2Fdeployments%2FCONTAINER_APP_ENVIRONMENT
    
     (✓) Done: Resource group: GENERATED_RESOURCE_GROUP (1.385s)
     (✓) Done: Virtual Network: VNET_ID (862ms)
     (✓) Done: Container Apps Environment: GENERATED_CONTAINER_APP_ENVIRONMENT (54.125s)
     (✓) Done: Container Registry: GENERATED_REGISTRY (1m27.747s)
     (✓) Done: Container App: SAMPLE_CLIENT_APP (21.39s)
     (✓) Done: Container App: SAMPLE_WORKER_APP (24.136s)   
    
    Deploying services (azd deploy)
    
     (✓) Done: Deploying service client
     - Endpoint: https://SAMPLE_CLIENT_APP.westus2.azurecontainerapps.io/
    
     (✓) Done: Deploying service worker
     - Endpoint: https://SAMPLE_WORKER_APP.westus2.azurecontainerapps.io/
    
    
    SUCCESS: Your up workflow to provision and deploy to Azure completed in 10 minutes 34 seconds.   
    

성공적인 배포 확인

Azure Portal에서 오케스트레이션이 성공적으로 실행되고 있는지 확인합니다.

  1. 터미널 출력에서 리소스 그룹 이름을 복사합니다.

  2. Azure Portal에 로그인하고 해당 리소스 그룹 이름을 검색합니다.

  3. 리소스 그룹 개요 페이지에서 클라이언트 컨테이너 앱 리소스를 클릭합니다.

  4. 모니터링>로그 스트림을 선택합니다.

  5. 클라이언트 컨테이너가 함수 체인 작업을 로깅하고 있는지 확인합니다.

    Azure Portal의 클라이언트 컨테이너 로그 스트림 스크린샷.

  6. 리소스 그룹 페이지로 다시 이동하여 컨테이너를 worker 선택합니다.

  7. 모니터링>로그 스트림을 선택합니다.

  8. 작업자 컨테이너가 함수 체인 작업을 로깅하고 있는지 확인합니다.

    Azure Portal의 작업자 컨테이너 로그 스트림 스크린샷

사용자 정의 스케일러 이해

이 샘플에는 azure.yaml 구성 파일이 포함되어 있습니다. Azure에 전체 샘플 솔루션을 배포할 때, 지속성 작업 스케줄러의 워크로드에 따라 자동으로 크기가 조정되는 컨테이너 앱용 사용자 지정 스케일러를 포함시켰습니다.

사용자 정의 스케일러

  • 작업 허브에서 보류 중인 오케스트레이션 수를 모니터링합니다.
  • 워크로드가 증가함에 따라 작업자 복제본 수를 증대시킵니다.
  • 부하가 감소하면 다시 크기 조정됩니다.
  • 수요에 맞게 용량을 일치시켜 효율적인 리소스 사용률을 제공합니다.

scaler 구성 확인

배포된 솔루션에서 자동 크기 조정이 제대로 작동하는지 확인합니다.

  1. Azure Portal에서 작업자 앱으로 이동합니다.

  2. 왼쪽 메뉴에서 애플리케이션>수정 버전 및 복제본을 선택합니다.

  3. 복제본 탭 선택하여 애플리케이션이 확장되고 있는지 확인합니다.

    Azure 포털에서 크기 조정된 복제본을 보여 주는 수정 버전 및 복제본 페이지의 스크린샷

  4. 왼쪽 메뉴에서 애플리케이션>배율을 선택합니다.

  5. 배율 규칙 이름을 선택하여 배율 조정기 설정을 봅니다.