Wdrożenie skalowania dla poszczególnych aplikacji w hostingu o wysokiej gęstości

Uwaga / Notatka

Zalecamy użycie modułu Azure Az PowerShell do interakcji z Azure. Aby rozpocząć, zobacz Instalowanie programu Azure PowerShell. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Aplikacje usługi Azure App Service można skalować, skalując plan usługi App Service , na którym działają. Domyślnie właściwość perSiteScaling na poziomie planu ma wartość false, a każda aplikacja i każde gniazdo wdrożeniowe używa wszystkich dostępnych instancji w planie.

Gdy perSiteScaling jest true, każda aplikacja i slot wdrożenia mogą mieć swój własny siteConfig.numberOfWorkers limit. Na przykład plan może mieć skonfigurowaną pojemność 10 pracowników, podczas gdy aplikacja ma skonfigurowany limit pięciu pracowników. Każdy slot wdrożenia ma swój limit; konfiguracja aplikacji produkcyjnej nie konfiguruje jednocześnie jej slotów.

Uwaga / Notatka

  • Skalowanie dla aplikacji jest dostępne tylko dla poziomów cenowych Standardowy, Premium, Premium V2, Premium V3 i Izolowany.
  • Limit na aplikację nie zmniejsza dedykowanej pojemności skonfigurowanej dla planu App Service ani jego rozliczeń samodzielnie.

Zachowaj te wartości odrębne:

  • Pojemność planu skonfigurowanego: wartość planu sku.capacity .
  • Limit skonfigurowanych aplikacji lub slotów: Wartość zasobu siteConfig.numberOfWorkers .
  • Zaobserwowane aktywne instancje aplikacji: Obserwacja w czasie rzeczywistym. Rzeczywista liczba nie może przekroczyć dostępnych pracowników planu. Skalowanie planu może zmniejszyć tę liczbę poniżej skonfigurowanego limitu aplikacji lub slotów.

Platforma umieszcza aplikację na wybranych dostępnych pracownikach planu, stosując podejście oparte na najlepszym wysiłku. Umiejscowienie jest niezależne od metryki.

Scenario Semantyka wartości
Granica 1 Aplikacja lub slot może korzystać z maksymalnie jednego dostępnego pracownika planu. Wybierz tę wartość tylko wtedy, gdy pojedynczy pracownik jest akceptowalny dla obciążenia pracą.
Limit większy niż 1 Wartość ta ogranicza, ile różnych pracowników planu może używać aplikacja lub automat. Faktycznie aktywnych instancji może być mniej.
Limit powyżej dostępnej pojemności planu Dostępne procesy robocze planu ograniczają rzeczywistą liczbę wystąpień aplikacji lub gniazd.
Skalowanie planu Aplikacja lub slot może działać na mniejszej liczbie pracowników niż jej skonfigurowany limit po usunięciu pracowników planu.

Skalowanie na aplikację to stałe, niezależne od metryki umieszczenie wśród dostępnych pracowników planu. Nie reaguje na zapotrzebowanie ani nie zmienia pojemności planów. Aby zmieniać pojemność w zależności od zapotrzebowania, użyj automatycznego skalowania lub Azure Monitor do automatycznego skalowania.

Ważne

Redundancja strefowa rozmieszcza instancje planu usługi App Service; nie tworzy ukrytych replik aplikacji. W przypadku skalowania na poziomie aplikacji limit aplikacji lub slotu wynoszący 1 umożliwia umieszczenie w co najwyżej jednej instancji planu i nie może być traktowany jako jednoczesna replika między strefami. Ograniczenia 2 lub więcej pozwoleń na umieszczenie wielu pracowników różnych planów, ale nie gwarantują publicznie, że te instancje aplikacji obejmują fizyczne strefy. W celu wskazówek dotyczących projektowania niezawodności zobacz Niezawodność w App Service.

Model nieruchomości i wymagania wstępne

Użyj obsługiwanego planu cenowego, konta z uprawnieniami do aktualizowania planu, aplikacji i miejsca wdrożenia oraz bieżącej wersji wybranego narzędzia. Przykłady używają Azure CLI 2.89.1 oraz Az PowerShell 16.2.0.

Scope Właściwość zasobu Przykład
Funkcja planu properties.perSiteScaling true
Planowanie pojemności sku.capacity 10
Limit żądanych przez aplikację properties.siteConfig.numberOfWorkers 5
Limit pożądanych slotów properties.siteConfig.numberOfWorkers 2
Odpowiedź na żądanie GET dotyczące konfiguracji aplikacji lub slotu properties.numberOfWorkers 5 lub 2

W Azure CLI podobnie nazwane opcje mają różne zakresy: az appservice plan ... --number-of-workers ustawia pojemność planu, a jednocześnie az webapp config set ... --number-of-workers limit aplikacji lub slotów.

Konfiguruj skalowanie dla aplikacji

Użyj zakładki jako ulubionego narzędzia. Zamień nazwy zastępcze i lokalizacje przed uruchomieniem polecenia lub wdrożeniem szablonu.

Wybierz krok tworzenia lub aktualizacji planu. Krok aktualizacji zmienia tylko perSiteScaling; nie zmienia istniejącej pojemności planu.

resourceGroup='<resource-group-name>'
planName='<app-service-plan-name>'
appName='<app-name>'
slotName='staging'
location='westus3'

# Create a plan with capacity 10 and per-app scaling.
az appservice plan create \
    --resource-group $resourceGroup \
    --name $planName \
    --location $location \
    --sku P1V3 \
    --number-of-workers 10 \
    --per-site-scaling

# Or enable per-app scaling on an existing plan without changing its capacity.
az appservice plan update \
    --resource-group $resourceGroup \
    --name $planName \
    --set properties.perSiteScaling=true

# Configure the production app and its staging slot independently.
az webapp config set \
    --resource-group $resourceGroup \
    --name $appName \
    --number-of-workers 5

az webapp config set \
    --resource-group $resourceGroup \
    --name $appName \
    --slot $slotName \
    --number-of-workers 2

Tutaj planem --number-of-workers 10 jest pojemność. Opcja konfiguracji aplikacji webowej o tej samej nazwie to żądany limit aplikacji lub slotów. Sprawdź skonfigurowane wartości:

az appservice plan show \
    --resource-group $resourceGroup \
    --name $planName \
    --query "{planCapacity:sku.capacity, perSiteScaling:perSiteScaling}"

az webapp config show \
    --resource-group $resourceGroup \
    --name $appName \
    --query "{appWorkerLimit:numberOfWorkers}"

az webapp config show \
    --resource-group $resourceGroup \
    --name $appName \
    --slot $slotName \
    --query "{slotWorkerLimit:numberOfWorkers}"

Szczegóły poleceń znajdziesz w az appservice plan oraz az webapp config.

Sprawdzanie konfiguracji

Sprawdź każdą skonfigurowaną wartość po zmianie lub wdrożeniu.

Value Oczekiwany przykład Gdzie to zweryfikować
Funkcja planu true Reakcja na plan properties.perSiteScaling
Planowanie pojemności 10 Reakcja na plan sku.capacity
Żądany limit aplikacji produkcyjnej 5 Reakcja produkcyjna config/webproperties.numberOfWorkers
Żądany limit slotów wdrożeniowych 2 Odpowiedź slotu config/webproperties.numberOfWorkers

Te wartości to konfiguracja, a nie obserwowane liczby aktywnych instancji. Umieszczanie w czasie wykonywania pozostaje najlepszym wysiłkiem i jest ograniczone dostępnymi pracownikami planu. Przed połączeniem skalowania dla poszczególnych aplikacji z redundancją strefową zapoznaj się z pojemnością planu oraz limitami każdej aplikacji lub miejsca wdrożenia w Ustaw redundancję strefową dla istniejącego planu usługi App Service.

Konfiguruj hosting o wysokiej gęstości dla swojego scenariusza

Skalowanie pojedynczej aplikacji jest dostępne zarówno w globalnych regionach Azure, jak i w środowiskach App Service. Wybierz limity aplikacji i slotów zgodnie z wymaganiami dotyczącymi obciążenia i niezawodności, zamiast stosować jeden limit dla każdego obciążenia.

W przypadku hostingu o dużej gęstości:

  1. Wyznacz plan usługi App Service planem o wysokiej gęstości i skaluj go do poziomu żądanej pojemności.

  2. Ustaw flagę PerSiteScaling na true w planie usługi App Service.

  3. Ustaw limit każdej aplikacji i slotu numberOfWorkers wdrożenia w zależności od jej potrzeb.

    • Limit zapewnia 1 największą gęstość, ale stosuj go tylko w zadaniach, gdzie przydzielenie maksymalnie jednego pracownika planu jest akceptowalne.
    • Stosuj limit lub 2 wyższy, gdy obciążenie powinno być przydzielone do kilku różnych pracowników planu, pod warunkiem dostępnej pojemności planu.
  4. Samodzielnie weryfikuj limity w miarę zmiany wymagań dotyczących obciążenia. Na przykład aplikacja intensywniej używana może stosować limit 3, aby uzyskać większą moc przetwarzania, podczas gdy inna aplikacja może korzystać z 1, gdy odpowiednie jest wdrożenie z pojedynczym procesem roboczym.