Konfigurowanie skalowania automatycznego dla aplikacji zestawu Durable Task SDK w Azure Container Apps

Podczas hostowania aplikacji zestawu Durable Task SDK w Azure Container Apps można skonfigurować skalowanie automatyczne, dzięki czemu platforma automatycznie dostosowuje liczbę replik na podstawie aranżacji, działania lub obciążenia jednostek.

W tym artykule dowiesz się, jak:

  • Ustaw minimalną i maksymalną liczbę replik dla aplikacji kontenera.
  • Dodaj reguły skalowania, które odpowiadają na elementy robocze narzędzia Durable Task Scheduler.
  • Wdrażanie i weryfikowanie przykładu skalowania automatycznego przy użyciu interfejsu wiersza polecenia dewelopera Azure.

Uwaga / Notatka

Skalowanie automatyczne jest obsługiwane w przypadku aplikacji utworzonych przy użyciu zestawów SDK rozszerzenia Durable Task i hostowanych w Azure Container Apps. Ta funkcja używa narzędzia skalowania azure-durabletask-scheduler KEDA.

Ważna

Ustawienie minReplicas na 0 umożliwia skalowanie do zera, co pozwala obniżyć koszty w przypadku bezczynności, ale wprowadza opóźnienie rozruchu zimnego, gdy nadejdą nowe zadania. Ustaw minReplicas wartość na 1 lub większą, jeśli obciążenie jest wrażliwe na opóźnienia.

Konfigurowanie skalowania automatycznego

Konfigurację autoskalatora można ustawić za pomocą portalu Azure, szablonu Bicep i Azure CLI.

  1. W witrynie Azure Portal przejdź do aplikacji kontenera.

  2. W menu po lewej stronie wybierz Aplikacja>Skala.

  3. Ustaw wartości Min replicas (Minimalna liczba replik ) i Max replicas (Maksymalna liczba replik ) dla poprawki.

    Zrzut ekranu konfiguracji skalera z minimalną i maksymalną repliką w portalu Azure.

  4. Wybierz pozycję Dodaj , aby utworzyć nową regułę skalowania. Ustaw Typ na Niestandardowy i skonfiguruj pola Trwały harmonogram zadań.

    Zrzut ekranu przedstawiający konfigurację związaną z Durable Task Scheduler dla komponentu skalującego w portalu Azure.

  5. Upewnij się, że pole wyboru Uwierzytelnij przy użyciu tożsamości zarządzanej jest zaznaczone i wybierz tożsamość połączoną z zasobem harmonogramu i centrum zadań.

  6. Wybierz Zapisz.

Pole Opis Przykład
Minimalna liczba replik Minimalna dopuszczalna liczba replik dla rewizji kontenera w dowolnym momencie. 1
Maksymalna liczba replik Maksymalna liczba replik dozwolona dla wersji kontenera w dowolnym momencie. 10
punkt końcowy Punkt końcowy harmonogramu zadań Durable, z którym łączy się moduł skalujący. https://dts-ID.centralus.durabletask.io
maksymalnaLiczbaRównoczesnychZadańRoboczych Maksymalna liczba elementów roboczych, które jednocześnie przetwarza pojedyncza replika. Niższe wartości powodują, że program scaler dodaje repliki wcześniej. Zacznij z 1 dla zadań intensywnie wykorzystujących CPU; zwiększ ją dla obciążeń związanych z operacjami we/wy. 1
taskhubName Nazwa centrum zadań połączonego z harmonogramem. taskhub-ID
typElementuRoboczego Typ wysyłanego elementu roboczego. Opcje obejmują Orchestration, Activitylub Entity. Orchestration
Tożsamość zarządzana Tożsamość zarządzana przypisana przez użytkownika lub przypisana przez system połączona z zasobem harmonogramu i centrum zadań. /subscriptions/<SUB_ID>/resourceGroups/<RG>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<IDENTITY_NAME>

Samouczek: Wdrażanie aplikacji kontenera z automatycznym skalowaniem

Już skonfigurowano skalowanie automatyczne w istniejącej aplikacji? Tę sekcję można pominąć. Jeśli potrzebujesz praktycznego przewodnika, wykonaj poniższe kroki, aby wdrożyć Autoscaling w przykładzie Azure Container Apps przy użyciu interfejsu wiersza polecenia dewelopera Azure. Przykład wdraża aplikację .NET Durable Task SDK, która używa wzorca tworzenia łańcucha funkcji i zawiera wstępnie skonfigurowany moduł skalowania KEDA.

Uwaga / Notatka

Mimo że w tym przykładzie użyto zestawu SDK dla Durable Task .NET, autoskalowanie jest niezależne od konkretnego języka.

Wymagania wstępne

Konfigurowanie środowiska

  1. Sklonuj katalog Azure-Samples/Durable-Task-Scheduler.

    git clone https://github.com/Azure-Samples/Durable-Task-Scheduler.git
    
  2. Uwierzytelnij się w Azure przy użyciu Azure Developer CLI.

    azd auth login
    

Wdrażanie rozwiązania przy użyciu interfejsu wiersza polecenia dla deweloperów platformy Azure

  1. Przejdź do przykładowego AutoscalingInACA katalogu.

    cd /path/to/Durable-Task-Scheduler/samples/scenarios/AutoscalingInACA
    
  2. Zainicjuj środowisko Azure Developer CLI (wymagane tylko przy pierwszym uruchomieniu):

    azd init
    
  3. Aprowizuj zasoby i wdróż aplikację:

    azd up
    
  4. Po wyświetleniu monitu w terminalu podaj następujące parametry.

    Parameter Opis
    Nazwa środowiska Prefiks grupy zasobów utworzony do przechowywania wszystkich zasobów platformy Azure.
    Lokalizacja platformy Azure Lokalizacja Azure dla Twoich zasobów.
    Subskrypcja platformy Azure Subskrypcja platformy Azure dla twoich zasobów.

    Ukończenie tego procesu może zająć trochę czasu. Po zakończeniu polecenia azd up dane wyjściowe interfejsu wiersza polecenia wyświetlają dwa linki do portalu Azure, umożliwiające monitorowanie postępu wdrażania. Dane wyjściowe pokazują również, jak azd up:

    • Tworzy i konfiguruje wszystkie niezbędne zasoby platformy Azure za pośrednictwem udostępnionych plików Bicep w ./infra katalogu przy użyciu polecenia azd provision. Gdy zasoby zostaną aprowizowane przez Azure Developer CLI, można uzyskać do nich dostęp przez portal Azure. Pliki udostępniające zasoby Azure obejmują:
      • main.parameters.json
      • main.bicep
      • app Katalog zasobów uporządkowany według funkcji
      • Biblioteka referencyjna core, która zawiera moduły Bicep używane w szablonie azd
    • Wdraża kod przy użyciu polecenia azd deploy

    Oczekiwane dane wyjściowe

    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.   
    

Potwierdzanie pomyślnego wdrożenia

W portalu Azure zweryfikuj, czy orkiestracje działają pomyślnie.

  1. Skopiuj nazwę grupy zasobów z danych wyjściowych terminalu.

  2. Zaloguj się do portalu Azure i wyszukaj nazwę tej grupy zasobów.

  3. Na stronie przeglądu grupy zasobów kliknij zasób aplikacji kontenera dla klienta.

  4. Wybierz opcję Monitorowanie>Strumień logu.

  5. Upewnij się, że kontener klienta rejestruje zadania łańcucha funkcji.

    Zrzut ekranu strumienia dziennika kontenera klienta w portalu Azure.

  6. Wróć do strony grupy zasobów, aby wybrać worker kontener.

  7. Wybierz opcję Monitorowanie>Strumień logu.

  8. Upewnij się, że kontener procesu roboczego rejestruje zadania łańcucha funkcji.

    Zrzut ekranu przedstawiający strumień logów kontenera roboczego w portalu Azure.

Omówienie niestandardowego modułu skalowania

Ten przykład zawiera azure.yaml plik konfiguracji. Po uruchomieniu azd up wdrożono całe przykładowe rozwiązanie na platformie Azure, w tym niestandardowy moduł skalowania dla aplikacji kontenerowych, który automatycznie się skaluje na podstawie obciążenia narzędzia Durable Task Scheduler.

Niestandardowy moduł skalowania:

  • Monitoruje liczbę oczkujących orkiestracji w centrum operacji.
  • Skaluje liczbę replik procesów roboczych wraz ze zwiększonym obciążeniem.
  • Skaluje się z powrotem w dół, gdy obciążenie się zmniejsza.
  • Zapewnia efektywne wykorzystanie zasobów przez dopasowanie pojemności do zapotrzebowania.

Zweryfikuj konfigurację scalera

Sprawdź, czy skalowanie automatyczne działa prawidłowo w wdrożonym rozwiązaniu.

  1. W portalu Azure przejdź do aplikacji roboczej.

  2. W menu po lewej stronie wybierz Aplikacja>Poprawki i repliki.

  3. Wybierz kartę Repliki, aby sprawdzić, czy aplikacja jest skalowana poziomo.

     Zrzut ekranu przedstawiający stronę Poprawki i repliki pokazującą skalowane repliki w portalu Azure.

  4. W menu po lewej stronie wybierz Aplikacja>Skala.

  5. Wybierz nazwę reguły skalowania, aby wyświetlić ustawienia narzędzia scaler.