Udostępnij przez


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 wystąpienia 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 go utworzyć 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 usługi GitHub Pobierz go bezpłatnie.
Interfejs wiersza polecenia platformy Azure Zainstaluj interfejs wiersza polecenia platformy Azure.

Ustawienia

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 interfejsu wiersza polecenia, 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 Microsoft.App , zarejestruj przestrzenie nazw i Microsoft.OperationalInsights .

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

Tworzenie i wdrażanie aplikacji kontenera

Utwórz i wdróż aplikację kontenera za containerapp up pomocą polecenia . To polecenie 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, a nie tworzenia nowych.

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 w małym przypadku.

Ustawiając wartość --ingressexternal, 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

Dodawanie reguły skalowania

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

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, aby sprawdzić, czy żądanie powiodło się.

Uruchamianie danych wyjściowych dziennika

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 aplikacji kontenera 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.

Wysyłanie żądań

Otwórz nową powłokę powłoki bash. Uruchom następujące polecenie, zastępując <YOUR_CONTAINER_APP_FQDN> element w pełni kwalifikowaną nazwą domeny dla aplikacji kontenera zapisanej 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 kontenera w równoczesnych partiach 10 żądań.

Polecenie lub argument opis
seq 1 50 Generuje sekwencję liczb z zakresu od 1 do 50.
| Operator potoku wysyła sekwencję do xargs polecenia .
xargs Przebiegi curl z określonym adresem URL
-Iname Działa jako symbol zastępczy danych wyjściowych seq. Ten argument uniemożliwia wysyłanie wartości zwracanej do curl polecenia .
curl Wywołuje podany adres URL.
-P10 Nakazuje 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
}

Wyświetlanie skalowania w witrynie Azure Portal (opcjonalnie)

  1. Zaloguj się w witrynie 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ę Skaluj i repliki.

  5. Na stronie Skalowanie i repliki wybierz pozycję Repliki.

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

    Zrzut ekranu przedstawiający repliki aplikacji kontenera.

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

  7. Na pasku nawigacyjnym po lewej stronie rozwiń węzeł 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 podzielone przez replikę.

    Wykres metryk aplikacji kontenera przedstawiający żądania podzielone przez replikę.

  13. Domyślnie skala grafu 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 stopień szczegółowości czasu to jedna minuta. Naciśnij przycisk Zastosuj.

  14. Wybierz wykres 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 z skalę 30 minut i stopień szczegółowości czasu jednej minuty.

    Poniższy zrzut ekranu przedstawia powiększy 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%.

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
    

Czyszczenie zasobów

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 o usłudze GitHub, otwierając problem w repozytorium usługi Azure Container Apps.

Następne kroki