Samouczek: skalowanie aplikacji kontenera

Usługa Azure Container Apps zarządza automatycznym skalowaniem w poziomie za pomocą zestawu reguł skalowania deklaratywnego. W miarę skalowania aplikacji kontenera nowe wystąpienia aplikacji kontenera są tworzone na żądanie. Te instancje są nazywane replikami.

W tym samouczku dodasz regułę skalowania HTTP do aplikacji kontenera i zobaczysz, jak aplikacja jest skalowana.

Wymagania wstępne

Wymaganie Instrukcje
Konto platformy Azure Jeśli nie masz konta platformy Azure, możesz utworzyć je bezpłatnie.

Aby kontynuować, musisz mieć uprawnienie Współautor w subskrypcji platformy Azure. Aby uzyskać szczegółowe informacje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal .
Konto GitHub Zdobądź jeden bezpłatnie.
Azure CLI Zainstaluj Azure CLI.

Konfiguracja

Aby zalogować się do platformy Azure z poziomu interfejsu wiersza polecenia, uruchom następujące polecenie i postępuj zgodnie z monitami, aby ukończyć proces uwierzytelniania.

az login

Aby upewnić się, że używasz najnowszej wersji CLI, uruchom polecenie uaktualniania.

az upgrade

Następnie zainstaluj lub zaktualizuj rozszerzenie usługi Azure Container Apps dla interfejsu wiersza polecenia.

Jeśli podczas uruchamiania az containerapp poleceń w interfejsie wiersza polecenia platformy Azure lub poleceniach cmdlet z modułu Az.App w programie PowerShell wystąpią błędy dotyczące brakujących parametrów, upewnij się, że masz zainstalowaną najnowszą wersję rozszerzenia Azure Container Apps.

az extension add --name containerapp --upgrade

Uwaga

Począwszy od maja 2024 r., rozszerzenia interfejsu wiersza polecenia platformy Azure domyślnie nie włączają funkcji w wersji zapoznawczej. Aby uzyskać dostęp do funkcji usługi Container Apps w wersji zapoznawczej, zainstaluj rozszerzenie Container Apps za pomocą polecenia --allow-preview true.

az extension add --name containerapp --upgrade --allow-preview true

Teraz, po zainstalowaniu bieżącego rozszerzenia lub modułu, zarejestruj przestrzenie nazw Microsoft.App i Microsoft.OperationalInsights.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Utwórz i wdróż aplikację kontenera

Utwórz i wdróż aplikację kontenera za pomocą polecenia containerapp up. Ta komenda tworzy:

  • Grupa zasobów
  • Środowisko usługi Container Apps
  • obszar roboczy usługi Log Analytics

Jeśli którykolwiek z tych zasobów już istnieje, polecenie używa istniejących zasobów zamiast tworzyć nowe.

Na koniec polecenie tworzy i wdraża aplikację kontenera przy użyciu publicznego obrazu kontenera . mcr.microsoft.com/dotnet/samples:aspnetapp Ten obraz służy do wyzwalania reguł skalowania utworzonych w tym artykule. Nie musisz wiedzieć ani używać platformy .NET do wykonania tej procedury.

az containerapp up \
  --name my-container-app \
  --resource-group my-container-apps \
  --location centralus \
  --environment 'my-container-apps' \
  --image mcr.microsoft.com/dotnet/samples:aspnetapp \
  --target-port 8080 \
  --ingress external \
  --query properties.configuration.ingress.fqdn \

Uwaga

Upewnij się, że wartość parametru --image jest zapisana małymi literami.

Ustawiając --ingress na external, aplikacja kontenera jest dostępna dla żądań publicznych.

Polecenie up zwraca w pełni kwalifikowaną nazwę domeny (FQDN) dla aplikacji kontenera. Skopiuj tę nazwę FQDN do pliku tekstowego. Jest on używany w sekcji Wysyłanie żądań . Nazwa FQDN wygląda jak w poniższym przykładzie:

https://my-container-app.icydune-96848328.centralus.azurecontainerapps.io

Dodaj regułę skalowania

Dodaj regułę skalowania HTTP do aplikacji kontenera, uruchamiając polecenie az containerapp update.

az containerapp update \
    --name my-container-app \
    --resource-group my-container-apps \
    --min-replicas 1 \
    --max-replicas 10 \
    --scale-rule-name my-http-scale-rule \
    --scale-rule-http-concurrency 1

To polecenie dodaje regułę skalowania HTTP do aplikacji kontenera o nazwie my-http-scale-rule i ustawieniu współbieżności 1. Jeśli aplikacja odbiera więcej niż jedno współbieżne żądanie HTTP, środowisko uruchomieniowe tworzy repliki aplikacji do obsługi żądań.

Polecenie update zwraca nową konfigurację jako odpowiedź JSON, co pozwala potwierdzić, że żądanie zakończyło się pomyślnie.

Rozpocznij rejestrowanie

Możesz obserwować efekty skalowania aplikacji, wyświetlając dzienniki wygenerowane przez środowisko uruchomieniowe usługi Container Apps. Użyj polecenia , az containerapp logs show aby rozpocząć nasłuchiwanie wpisów dziennika.

az containerapp logs show \
    --name my-container-app \
    --resource-group my-container-apps \
    --type=system \
    --follow=true

Polecenie show zwraca wpisy z dzienników systemowych dla Twojej aplikacji kontenerowej w czasie rzeczywistym. Możesz oczekiwać odpowiedzi podobnej do następującego przykładu:

{
    "TimeStamp":"2023-08-01T16:49:03.02752",
    "Log":"Connecting to the container 'my-container-app'..."
}
{
    "TimeStamp":"2023-08-01T16:49:03.04437",
    "Log":"Successfully Connected to container:
    'my-container-app' [Revision: 'my-container-app--9uj51l6',
    Replica: 'my-container-app--9uj51l6-5f96557ffb-5khg9']"
}
{
    "TimeStamp":"2023-08-01T16:47:31.9480811+00:00",
    "Log":"Microsoft.Hosting.Lifetime[14]"
}
{
    "TimeStamp":"2023-08-01T16:47:31.9481264+00:00",
    "Log":"Now listening on: http://[::]:80"
}
{
    "TimeStamp":"2023-08-01T16:47:31.9490917+00:00",
    "Log":"Microsoft.Hosting.Lifetime[0]"
}
{
    "TimeStamp":"2023-08-01T16:47:31.9491036+00:00",
    "Log":"Application started. Press Ctrl+C to shut down."
}
{
    "TimeStamp":"2023-08-01T16:47:31.949723+00:00",
    "Log":"Microsoft.Hosting.Lifetime[0]"
}
{
    "TimeStamp":"2023-08-01T16:47:31.9497292+00:00",
    "Log":"Hosting environment: Production"
}
{
    "TimeStamp":"2023-08-01T16:47:31.9497325+00:00",
    "Log":"Microsoft.Hosting.Lifetime[0]"
}
{
    "TimeStamp":"2023-08-01T16:47:31.9497367+00:00",
    "Log":"Content root path: /app/"
}

Aby uzyskać więcej informacji, zobacz az containerapp logs.

Wyślij żądania

Otwórz nową powłokę bash. Uruchom następujące polecenie, zastępując <YOUR_CONTAINER_APP_FQDN> w pełni kwalifikowaną nazwą domeny aplikacji kontenera, zapisaną w sekcji Tworzenie i wdrażanie aplikacji kontenera.

seq 1 50 | xargs -Iname -P10 curl "<YOUR_CONTAINER_APP_FQDN>"

Te polecenia wysyłają 50 żądań do aplikacji kontenerowej w równoczesnych partiach po 10 żądań każda.

Polecenie lub argument Opis
seq 1 50 Generuje sekwencję liczb z zakresu od 1 do 50.
| Operator potoku wysyła sekwencję do polecenia xargs.
xargs Uruchamia curl z określonym adresem URL
-Iname Działa jako miejsce na dane wyjściowe z seq. Ten argument uniemożliwia wysyłanie wartości zwracanej do polecenia curl.
curl Wywołuje podany adres URL.
-P10 Poleca xargs uruchamianie maksymalnie 10 procesów naraz.

Aby uzyskać więcej informacji, zobacz dokumentację dotyczącą:

W pierwszej powłoce, w której uruchomiono az containerapp logs show polecenie, dane wyjściowe zawierają teraz co najmniej jeden wpis dziennika, jak pokazano poniżej.

{
    "TimeStamp":"2023-08-01 18:09:52 +0000 UTC",
    "Type":"Normal",
    "ContainerAppName":"my-container-app",
    "RevisionName":"my-container-app--00001111",
    "ReplicaName":"my-container-app--00001111-aaaaa22222-bbbb",
    "Msg":"Replica 'my-container-app--00001111-aaaaa22222-bbbb' has been scheduled to run on a node.",
    "Reason":"AssigningReplica",
    "EventSource":"ContainerAppController",
    "Count":0
}

Skalowanie widoku w Azure portal (opcjonalnie)

  1. Zaloguj się do portalu Azure portal.

  2. Na pasku wyszukiwania u góry wprowadź ciąg my-container-app.

  3. W wynikach wyszukiwania w obszarze Zasoby wybierz pozycję my-container-app.

  4. Na pasku nawigacyjnym po lewej stronie rozwiń węzeł Aplikacja i wybierz pozycję Skalowanie i repliki.

  5. Na stronie Scale and Replicas wybierz pozycję Repliki.

  6. Aplikacja kontenera ma teraz uruchomioną więcej niż jedną replikę.

    Zrzut ekranu przedstawiający wystąpienia aplikacji kontenera.

    Może być konieczne wybranie Odśwież, aby zobaczyć nowe repliki.

  7. Na pasku nawigacyjnym po lewej stronie rozwiń Monitorowanie i wybierz pozycję Metryki.

  8. Na stronie Metryki ustaw wartość Metryka na Żądania.

  9. Wybierz pozycję Zastosuj podział.

  10. Rozwiń listę rozwijaną Wartości i zaznacz pozycję Replika.

  11. Wybierz niebieską ikonę znacznika wyboru, aby zakończyć edytowanie podziału.

  12. Wykres przedstawia żądania odebrane przez aplikację kontenera w podziale na repliki.

    Wykres metryk aplikacji kontenera przedstawiający żądania w podziale na repliki.

  13. Domyślnie skala wykresu jest ustawiona na ostatnie 24 godziny, a stopień szczegółowości czasu wynosi 15 minut. Wybierz skalę i zmień ją na ostatnie 30 minut, a szczegółowość czasu ustaw na jedną minutę. Naciśnij przycisk Zastosuj.

  14. Wybierz na wykresie i przeciągnij, aby wyróżnić ostatni wzrost liczby żądań odebranych przez aplikację kontenera.

    Zrzut ekranu przedstawiający wykres metryk aplikacji kontenera przedstawiający żądania podzielone według repliki w skali 30 minut i ze szczegółowością czasową wynoszącą jedną minutę.

    Poniższy zrzut ekranu przedstawia powiększony widok sposobu dzielenia żądań odebranych przez aplikację kontenera między repliki.

    Zrzut ekranu przedstawiający wykres metryk aplikacji kontenera przedstawiający żądania podzielone według repliki w widoku powiększenia.

Skalowanie CPU i pamięci

W miarę możliwości należy preferować reguły skalowania HTTP zamiast reguł skalowania procesora CPU lub pamięci. Skalowanie procesora i pamięci nie pozwala aplikacji kontenerowej skalować się do zera.

Po dodaniu reguły skalowania procesora CPU lub pamięci można ją przetestować, wysyłając żądania do aplikacji kontenera i wyświetlając skalowanie w witrynie Azure Portal.

Po wysłaniu żądań do aplikacji skalowania może upłynąć minutę, zanim reguła skalowania zostanie wyzwolona i zostaną utworzone nowe repliki.

Skalowanie CPU

Skalowanie CPU umożliwia aplikacji skalowanie w zależności od stopnia wykorzystania procesora.

Na przykład, jeśli tworzysz regułę skalowania procesora z wartością użycia 50, usługa Azure Container Apps tworzy więcej replik aplikacji kontenera, gdy średnie użycie procesora dla wszystkich replik osiągnie 50%.

Dla aplikacji z wieloma kontenerami wykorzystanie CPU to średnia ważona alokacją, obliczana jako całkowite wykorzystanie CPU wszystkich kontenerów w replice podzielone przez całkowitą alokację CPU, wyrażone w procentach. Na przykład, jeśli jeden kontener wykorzystuje całą alokację 0,25 vCPU, a inny nie używa żadnej alokacji 0,75 vCPU, wykorzystanie CPU repliki wynosi 25%, a nie 50% czy 100%.

Skalowanie procesora CPU nie zezwala aplikacji kontenera na skalowanie do zera. Aby uzyskać więcej informacji na temat tego wyzwalacza, zobacz Wyzwalacz skalowania procesora CPU KEDA.

Dodaj regułę skalowania procesora CPU do aplikacji kontenera az containerapp update , uruchamiając polecenie .

Uwaga

Gdy używasz interfejsu wiersza polecenia platformy Azure do dodawania reguły skalowania do aplikacji kontenera, która ma już regułę skalowania, nowa reguła skalowania zastępuje starą regułę skalowania. Aby zobaczyć, jak dodać wiele reguł skalowania, zobacz Wiele reguł skalowania.

Przed uruchomieniem następującego polecenia zastąp element <PLACEHOLDERS> swoimi wartościami. Na potrzeby tego samouczka zastąp <UTILIZATION> z 1. Powoduje to skalowanie aplikacji kontenera, gdy średnie wykorzystanie CPU dla wszystkich replik osiągnie 1%. Ta wartość jest tylko dla pokazu. Liczba replik jest ograniczona do 10 przez --max-replicas 10, który został ustalony podczas uruchamiania az containerapp update.

az containerapp update \
    --name my-container-app \
    --resource-group my-container-apps \
    --min-replicas 1 \
    --max-replicas 10 \
    --scale-rule-name my-cpu-scale-rule \
    --scale-rule-type cpu \
    --scale-rule-metadata type=Utilization value=<UTILIZATION>

Skalowanie pamięci

Skalowanie pamięci umożliwia aplikacji zwiększanie lub zmniejszanie zasobów w zależności od ilości używanej pamięci.

Jeśli na przykład utworzysz regułę skalowania pamięci z wartością 50użycia , usługa Azure Container Apps utworzy więcej replik aplikacji kontenera, gdy średnie użycie pamięci dla wszystkich replik osiągnie 50%.

Skalowanie pamięci nie zezwala aplikacji kontenera na skalowanie do zera. Aby uzyskać więcej informacji na temat tego wyzwalacza, zobacz Wyzwalacz skalowania pamięci KEDA.

Dodaj regułę skalowania pamięci do aplikacji kontenera, uruchamiając polecenie az containerapp update.

Uwaga

Gdy używasz interfejsu wiersza polecenia platformy Azure do dodawania reguły skalowania do aplikacji kontenera, która ma już regułę skalowania, nowa reguła skalowania zastępuje starą regułę skalowania. Aby zobaczyć, jak dodać wiele reguł skalowania, zobacz Wiele reguł skalowania.

Przed uruchomieniem następującego polecenia zastąp element <PLACEHOLDERS> swoimi wartościami. Na potrzeby tego samouczka zastąp <UTILIZATION> z 1. Powoduje to skalowanie aplikacji kontenera, gdy średnie wykorzystanie pamięci dla wszystkich replik osiągnie 1%. Ta wartość jest tylko dla pokazu. Liczba replik jest ograniczona do 10 przez --max-replicas 10, który został ustalony podczas uruchamiania az containerapp update.

az containerapp update \
    --name my-container-app \
    --resource-group my-container-apps \
    --min-replicas 1 \
    --max-replicas 10 \
    --scale-rule-name my-memory-scale-rule \
    --scale-rule-type memory \
    --scale-rule-metadata type=Utilization value=<UTILIZATION>

Wiele reguł skalowania

Aby dodać wiele reguł skalowania do aplikacji kontenera przy użyciu interfejsu wiersza polecenia platformy Azure, musisz użyć języka YAML.

  1. Wyeksporuj konfigurację aplikacji kontenera do pliku YAML za pomocą polecenia az containerapp show.

    az containerapp show \
        --name my-container-app \
        --resource-group my-container-apps \
        --output yaml > app.yaml
    
  2. W sekcji properties>template>scale>rulesapp.yaml, dodaj następujące właściwości. Zastąp element <PLACEHOLDERS> swoimi wartościami.

    ...
    properties:
    ...
      template:
    ...
        scale:
    ...
          rules:
            - name: cpu-scaling-rule
              custom:
                type: cpu
                metadata:
                  type: "Utilization"
                  value: "<CPU_UTILIZATION>"
            - name: memory-scaling-rule
              custom:
                type: memory
                metadata:
                  type: "Utilization"
                  value: "<MEMORY_UTILIZATION>"
    ...
    
  3. Zaimportuj konfigurację aplikacji kontenera z app.yaml za pomocą polecenia az containerapp update.

    az containerapp update \
      --name my-container-app \
      --resource-group my-container-apps \
      --yaml app.yaml
    

Wyczyść zasoby

Jeśli nie zamierzasz nadal korzystać z tej aplikacji, uruchom następujące polecenie, aby usunąć grupę zasobów wraz ze wszystkimi zasobami utworzonymi w tym samouczku.

Uwaga

Następujące polecenie usuwa określoną grupę zasobów i wszystkie zawarte w niej zasoby. Jeśli zasoby spoza zakresu tego samouczka istnieją w określonej grupie zasobów, zostaną również usunięte.

az group delete --name my-container-apps

Napiwek

Masz problemy? Poinformuj nas na GitHubie, otwierając problem w repozytorium Azure Container Apps.

Następne kroki