Sdílet prostřednictvím


Kurz: Škálování aplikace typu kontejner

Azure Container Apps spravuje automatické horizontální škálování prostřednictvím sady deklarativních pravidel škálování. Při horizontálním navýšení kapacity aplikace typu kontejner se vytvoří nové instance aplikace kontejneru na vyžádání. Tyto instance se označují jako repliky.

V tomto kurzu přidáte do kontejnerové aplikace pravidlo škálování HTTP a zjistíte, jak se vaše aplikace škáluje.

Požadavky

Požadavek Pokyny
Účet Azure Pokud účet Azure nemáte, můžete si ho zdarma vytvořit.

Abyste mohli pokračovat, potřebujete oprávnění Přispěvatel k předplatnému Azure. Podrobnosti najdete v tématu Přiřazení rolí Azure pomocí webu Azure Portal .
Účet GitHubu Získejte ho zdarma.
Azure CLI Nainstalujte rozhraní příkazového řádku Azure CLI.

Nastavení

Pokud se chcete přihlásit k Azure z rozhraní příkazového řádku, spusťte následující příkaz a podle pokynů dokončete proces ověřování.

az login

Pokud chcete zajistit, že používáte nejnovější verzi rozhraní příkazového řádku, spusťte příkaz upgrade.

az upgrade

Dále nainstalujte nebo aktualizujte rozšíření Azure Container Apps pro rozhraní příkazového řádku.

Pokud se při spouštění az containerapp příkazů v Azure CLI nebo rutinách z Az.App modulu v PowerShellu zobrazí chyby týkající se chybějících parametrů, ujistěte se, že máte nainstalovanou nejnovější verzi rozšíření Azure Container Apps.

az extension add --name containerapp --upgrade

Poznámka:

Od května 2024 už rozšíření Azure CLI ve výchozím nastavení nepovolují funkce ve verzi Preview. Pokud chcete získat přístup k funkcím Container Apps ve verzi Preview, nainstalujte rozšíření Container Apps pomocí --allow-preview truenástroje .

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

Teď, když je nainstalované aktuální rozšíření nebo modul, zaregistrujte obory Microsoft.App názvů a Microsoft.OperationalInsights obory názvů.

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

Vytvoření a nasazení aplikace typu kontejner

Pomocí příkazu vytvořte a nasaďte aplikaci kontejneru containerapp up . Tento příkaz vytvoří:

  • Skupina prostředků
  • Prostředí Container Apps
  • pracovní prostor služby Log Analytics

Pokud některý z těchto prostředků již existuje, příkaz místo vytváření nových prostředků použije existující prostředky.

Nakonec příkaz vytvoří a nasadí kontejnerovou aplikaci pomocí veřejného obrazu kontejneru, mcr.microsoft.com/dotnet/samples:aspnetapp. Tato image slouží k aktivaci pravidel škálování, která vytvoříte v tomto článku. K dokončení tohoto postupu nemusíte vědět ani používat .NET.

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 \

Poznámka:

Ujistěte se, že hodnota parametru --image je malá písmena.

Nastavením této --ingressmožnosti external zpřístupníte aplikaci kontejneru pro veřejné požadavky.

Příkaz up vrátí plně kvalifikovaný název domény (FQDN) pro aplikaci kontejneru. Zkopírujte tento plně kvalifikovaný název domény do textového souboru. Použijete ho v části Odeslat žádosti . Váš plně kvalifikovaný název domény vypadá jako v následujícím příkladu:

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

Přidání pravidla škálování

Spuštěním az containerapp update příkazu přidejte pravidlo škálování HTTP do kontejnerové aplikace.

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

Tento příkaz přidá do aplikace kontejneru pravidlo škálování HTTP s názvem my-http-scale-rule a nastavením 1souběžnosti . Pokud vaše aplikace obdrží více než jeden souběžný požadavek HTTP, modul runtime vytvoří repliky vaší aplikace pro zpracování požadavků.

Příkaz update vrátí novou konfiguraci jako odpověď JSON, aby ověřil, že váš požadavek byl úspěšný.

Spuštění výstupu protokolu

Účinky škálování aplikace můžete sledovat zobrazením protokolů generovaných modulem runtime Container Apps. az containerapp logs show Pomocí příkazu začněte naslouchat položkám protokolu.

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

Příkaz show vrátí položky ze systémových protokolů pro vaši aplikaci kontejneru v reálném čase. Můžete očekávat odpověď jako v následujícím příkladu:

{
    "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/"
}

Další informace najdete v tématu az containerapp logs.

Odesílání požadavků

Otevřete nové prostředí Bash. Spusťte následující příkaz a nahraďte <YOUR_CONTAINER_APP_FQDN> plně kvalifikovaným názvem domény aplikace kontejneru, kterou jste uložili z části Vytvořit a nasadit aplikaci kontejneru.

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

Tyto příkazy odesílají do aplikace kontejneru 50 požadavků v souběžných dávkách 10 požadavků.

Příkaz nebo argument Popis
seq 1 50 Vygeneruje sekvenci čísel od 1 do 50.
| Operátor kanálu odešle sekvenci do xargs příkazu.
xargs Spustí curl se se zadanou adresou URL.
-Iname Slouží jako zástupný symbol pro výstup funkce seq. Tento argument zabraňuje odeslání návratové hodnoty do curl příkazu.
curl Zavolá danou adresu URL.
-P10 xargs Dává pokyn, aby najednou běžel až 10 procesů.

Další informace najdete v dokumentaci pro:

V prvním prostředí, kde jste spustili az containerapp logs show příkaz, teď výstup obsahuje jednu nebo více položek protokolu, jako je následující.

{
    "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
}

Zobrazení škálování na webu Azure Portal (volitelné)

  1. Přihlaste se k portálu Azure.

  2. Na panelu Hledání v horní části zadejte my-container-app.

  3. Ve výsledcích hledání v části Prostředky vyberte my-container-app.

  4. Na navigačním panelu vlevo rozbalte položku Aplikace a vyberte Škálovat a repliky.

  5. Na stránce Škálování a repliky vyberte Repliky.

  6. Vaše aplikace kontejneru teď má spuštěnou více než jednu repliku.

    Snímek obrazovky s replikami kontejnerové aplikace

    Možná budete muset vybrat Aktualizovat , aby se zobrazily nové repliky.

  7. V navigačním panelu vlevo rozbalte položku Monitorování a vyberte Metriky.

  8. Na stránce Metriky nastavte metriku na Požadavky.

  9. Vyberte možnost Použít rozdělení.

  10. Rozbalte rozevírací seznam Hodnoty a zkontrolujte repliku.

  11. Kliknutím na modrou ikonu zaškrtnutí dokončíte úpravy rozdělení.

  12. Graf zobrazuje požadavky přijaté vaší aplikací kontejneru rozdělené podle repliky.

    Graf metrik kontejnerové aplikace zobrazující požadavky rozdělené podle repliky

  13. Ve výchozím nastavení je měřítko grafu nastavené na posledních 24 hodin s časovým intervalem 15 minut. Vyberte měřítko a změňte ho na posledních 30 minut s časovým intervalem jedné minuty. Vyberte tlačítko Použít.

  14. Vyberte graf a přetažením zvýrazněte nedávné zvýšení požadavků přijatých vaší aplikací kontejneru.

    Snímek obrazovky s grafem metrik kontejnerové aplikace zobrazující požadavky rozdělené podle repliky s měřítkem 30 minut a časovým intervalem jedné minuty

    Následující snímek obrazovky ukazuje přiblížení způsobu rozdělení požadavků přijatých vaší aplikací kontejneru mezi repliky.

    Snímek obrazovky s grafem metrik kontejnerové aplikace zobrazující žádosti rozdělené podle repliky v zobrazení s přiblížením

Škálování procesoru a paměti

Měli byste preferovat pravidla škálování HTTP před pravidly škálování podle procesoru nebo paměti, kdykoli je to možné. Škálování procesoru a paměti neumožňuje vaší aplikaci kontejneru škálovat na nulu.

Po přidání pravidla škálování procesoru nebo paměti ho můžete otestovat odesláním požadavků do aplikace kontejneru a zobrazením škálování na webu Azure Portal.

Po odeslání požadavků do škálovací aplikace může trvat minutu, než se pravidlo škálování aktivuje a vytvoří se nové repliky.

Škálování procesoru

Škálování CPU umožňuje vaší aplikaci škálovat dovnitř nebo ven v závislosti na tom, jak moc se CPU používá.

Pokud například vytvoříte pravidlo škálování procesoru s hodnotou 50využití , Azure Container Apps vytvoří více replik vaší aplikace kontejneru, když průměrné využití procesoru pro všechny repliky dosáhne 50%.

Škálování procesoru neumožňuje vaší aplikaci kontejneru škálovat na nulu. Další informace o tomto triggeru najdete v tématu KeDA Cpu Scale Trigger.

Spuštěním příkazu přidejte do aplikace kontejneru pravidlo škálování procesoru az containerapp update .

Poznámka:

Když použijete Azure CLI k přidání pravidla škálování do aplikace kontejneru, která už má pravidlo škálování, nahradí nové pravidlo škálování staré pravidlo škálování. Pokud chcete zjistit, jak přidat více pravidel škálování, přečtěte si téma Více pravidel škálování.

Před spuštěním následujícího příkazu nahraďte <PLACEHOLDERS> svými hodnotami. Pro účely tohoto kurzu nahraďte <UTILIZATION> s 1. To způsobí, že se vaše aplikace kontejneru škáluje, když průměrné využití procesoru pro všechny repliky dosáhne 1%. Tato hodnota je určena pouze pro ukázku. Maximální počet replik je omezen na 10 podle --max-replicas 10, který jste určili při spuštění 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>

Škálování paměti

Škálování paměti umožňuje vaší aplikaci škálovat nebo zmenšit kapacitu v závislosti na tom, kolik paměti se používá.

Pokud například vytvoříte pravidlo škálování paměti s hodnotou 50využití , Azure Container Apps vytvoří více replik vaší aplikace kontejneru, když průměrné využití paměti pro všechny repliky dosáhne 50%.

Škálování paměti neumožňuje vaší aplikaci kontejneru škálovat na nulu. Další informace o tomto triggeru najdete v tématu KeDA trigger škálování paměti.

Spuštěním az containerapp update příkazu přidejte do aplikace kontejneru pravidlo škálování paměti.

Poznámka:

Když použijete Azure CLI k přidání pravidla škálování do aplikace kontejneru, která už má pravidlo škálování, nahradí nové pravidlo škálování staré pravidlo škálování. Pokud chcete zjistit, jak přidat více pravidel škálování, přečtěte si téma Více pravidel škálování.

Před spuštěním následujícího příkazu nahraďte <PLACEHOLDERS> svými hodnotami. Pro účely tohoto kurzu nahraďte <UTILIZATION> s 1. To způsobí, že se aplikace kontejneru škáluje, když průměrné využití paměti pro všechny repliky dosáhne 1%. Tato hodnota je určena pouze pro ukázku. Maximální počet replik je omezen na 10 podle --max-replicas 10, který jste určili při spuštění 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>

Více pravidel škálování

Pokud chcete do aplikace kontejneru přidat více pravidel škálování pomocí Azure CLI, musíte použít YAML.

  1. Pomocí příkazu exportujte konfiguraci aplikace kontejneru az containerapp show do YAML.

    az containerapp show \
        --name my-container-app \
        --resource-group my-container-apps \
        --output yaml > app.yaml
    
  2. properties > template > scale > rules V části app.yamlpřidejte následující vlastnosti. Nahraďte <PLACEHOLDERS> vlastními hodnotami.

    ...
    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. Naimportujte konfiguraci své kontejnerové aplikace z app.yaml pomocí příkazu az containerapp update.

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

Vyčištění prostředků

Pokud tuto aplikaci nebudete dál používat, spuštěním následujícího příkazu odstraňte skupinu prostředků spolu se všemi prostředky vytvořenými v tomto kurzu.

Upozornění

Následující příkaz odstraní zadanou skupinu prostředků a všechny prostředky obsažené v ní. Pokud prostředky mimo rozsah tohoto kurzu existují v zadané skupině prostředků, odstraní se také.

az group delete --name my-container-apps

Tip

Máte problémy? Dejte nám vědět na GitHubu otevřením problému v úložišti Azure Container Apps.

Další kroky