Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Podczas hostowania swojej aplikacji za pomocą Azure Functions w planie Flex Consumption, można kontrolować sposób wdrażania aktualizacji na działające wystąpienia. Aktualizacja witryny odbywa się za każdym razem, gdy wdrażasz kod, modyfikujesz ustawienia aplikacji lub zmieniasz inne właściwości konfiguracji. Plan Flex Consumption udostępnia ustawienie konfiguracji (SiteUpdateStrategy), którego można użyć do określenia, czy podczas tych aktualizacji w aplikacji funkcji występuje przestój oraz w jaki sposób obsługiwane są uruchomienia będące w toku.
Plan Flex Consumption obecnie obsługuje następujące strategie aktualizacji:
- Odtwórz: Powoduje ponowne uruchomienie wszystkich działających instancji po zaktualizowaniu aplikacji o najnowsze zmiany. Takie podejście może spowodować krótki przestój podczas ponownego uruchamiania wystąpień i zachowuje domyślne zachowanie z innych planów hostingu Azure Functions.
- Aktualizacja stopniowa: zapewnia wdrożenia bez przestojów przez opróżnianie i zastępowanie wystąpień w partiach. Aktualnie wykonywane procesy przebiegają naturalnie bez przymusowego zakończenia.
Ważne
Strategia aktualizacji stopniowej jest ogólnie dostępna w regionie Azja Wschodnia, Zachodnio-środkowe stany USA, Północno-środkowe stany USA i Zachodnie stany USA 2. Wdrożenie we wszystkich innych regionach jest w toku w ciągu następnych tygodni. Przed włączeniem tej strategii zapoznaj się z ograniczeniami i zagadnieniami .
Porównanie strategii
W tej tabeli porównaliśmy dwie strategie aktualizacji witryny:
| Kwestie wymagające rozważenia | Odtworzyć | Aktualizacja krocząca |
|---|---|---|
| Przestój | Krótki przestój podczas uruchamiania aplikacji od zera po ponownym uruchomieniu | Brak okresu przestoju |
| Wykonywanie w toku | Wymuszone zakończenie | Można ukończyć w ciągu 60-minutowego okresu tolerancji skalowania (funkcje HTTP mają ograniczenie do 230 sekund) |
| Czas wdrożenia | Szybciej — instancje zostają natychmiast uruchomione ponownie | Wolniejsze: wystąpienia są aktualizowane w pakietach w regularnych odstępach czasu |
| Zgodność z poprzednimi wersjami | Nie jest konieczne, ponieważ jedna wersja jest uruchamiana naraz | Zmiany muszą być wstecznie zgodne, zwłaszcza w przypadku obciążeń stanowych lub zmian powodujących niezgodność działania. |
| Jak ustawić | Domyślne zachowanie zgodne z innymi planami hostingu | Konfiguracja oparta na zgodzie |
| Użyj, gdy... | ✔ Potrzebne są szybkie wdrożenia. ✔ Krótki przestój jest akceptowalny. ✔ Wdrażasz zmiany powodujące niekompatybilność i potrzebujesz czystego ponownego uruchomienia. ✔ Twoje funkcje są bezstanowe i mogą obsługiwać zakłócenia. |
✔ Wymagane są wdrożenia bez przestojów. ✔ Masz długotrwałe lub krytyczne funkcje, których nie można przerwać. ✔ Zmiany są zgodne z poprzednimi wersjami. ✔ Należy zachować bieżące wykonania. |
Zachowania strategii aktualizacji
W tej tabeli porównaliśmy proces aktualizacji dwóch strategii:
| Ponowne tworzenie strategii | Strategia aktualizacji stopniowej |
|---|---|
| 1. Aktualizacja witryny (zmiany kodu lub konfiguracji) jest wdrażana w aplikacji funkcji. 2. Strategia ponownego tworzenia jest wyzwalana w celu zaktualizowania uruchomionych wystąpień przy użyciu nowych zmian. 3. Platforma wymusza ponowne uruchamianie wszystkich wystąpień na żywo i opróżnianie. 4. System skalowania natychmiast rozpoczyna tworzenie nowych instancji ze zaktualizowaną wersją (oryginalne instancje mogą być nadal wycofywane w tle). |
1. Aktualizacja witryny (zmiany kodu lub konfiguracji) jest wdrażana w aplikacji funkcji. 2. Strategia aktualizacji stopniowej jest wyzwalana w celu zaktualizowania uruchomionych wystąpień przy użyciu nowych zmian. 3. Platforma przypisuje wszystkie wystąpienia na żywo do partii. 4. W regularnych odstępach czasu platforma opróżnia jedną partię wystąpień. Odciążanie blokuje wystąpieniom możliwość przyjmowania nowych zdarzeń, pozwalając jednocześnie na dokończenie trwających zadań (do maksymalnego czasu jednej godziny). 5. Jednocześnie platforma skalująca udostępnia nowe instancje działające w zaktualizowanej wersji, aby zastąpić wycofywaną wydajność. 6. Ten proces trwa, dopóki wszystkie aktywne instancje nie działają w zaktualizowanej wersji. |
W tej tabeli porównaliśmy kluczowe cechy dwóch strategii:
| Ponowne tworzenie strategii | Strategia aktualizacji stopniowej |
|---|---|
|
|
Zagadnienia dotyczące strategii aktualizacji stopniowej
Podczas korzystania ze strategii aktualizacji stopniowej należy pamiętać o tych bieżących zachowaniach i ograniczeniach.
- Parametry zarządzane przez platformę: platforma kontroluje parametry (takie jak liczba partii, instancje na partię, liczba cykli oraz interwały opróżniania), które określają zachowania aktualizacji stopniowej. Te parametry mogą ulec zmianie, aby zoptymalizować wydajność i niezawodność.
-
Zmiana strategii nie ma żadnego efektu w regionach GA: W regionach, w których aktualizacje stopniowe są ogólnie dostępne, zmiana
siteUpdateStrategy.typesama w sobie nie wyzwala aktualizacji witryny. Możesz bezpiecznie zaktualizować strategię przed upływem czasu i zastosować ją do następnego kodu lub wdrożenia konfiguracji. W regionach, w których aktualizacje stopniowe są nadal wdrażane, zmiana strategii jest traktowana jak każda inna zmiana konfiguracji i wyzwala aktualizację witryny korzystającą z poprzedniej strategii; nowa strategia ma zastosowanie od następnego wdrożenia. - Brak monitorowania w czasie rzeczywistym: obecnie nie ma wglądu w liczbę wystąpień opróżniania, liczbę partii lub bieżące wartości procentowe postępu.
- Brak sygnału ukończenia: można jednak monitorować dzienniki wystąpień, aby oszacować, kiedy aktualizacja zostanie ukończona.
- Scenariusze z pojedynczym wystąpieniem: aplikacje działające w jednym wystąpieniu doświadczają krótkiego przestoju podobnego do ponownego uruchomienia, choć trwające działania są kontynuowane.
- Durable Functions: Ponieważ mieszanie wersji podczas aktualizacji może spowodować nieoczekiwane zachowanie w orkiestracji Durable, użyj jawnej strategii dopasowania wersji orchestracji.
- Infrastruktura jako kod: jednoczesne wdrażanie kodu i zmian konfiguracji powoduje wiele stopniowych aktualizacji, które mogą na siebie zachodzić.
- Zgodność z poprzednimi wersjami: upewnij się, że zmiany działają z poprzednią wersją w okresie przejściowym aktualizacji stopniowej.
Konfigurowanie strategii aktualizacji
Strategię aktualizacji dla aplikacji można ustawić przy użyciu SiteUpdateStrategy ustawienia witryny, które jest elementem podrzędnym functionAppConfig. Domyślnie SiteUpdateStrategy.type jest ustawiona na wartość Recreate. To ustawienie można skonfigurować przy użyciu Azure CLI 2.87.0 lub nowszego, Bicep lub szablonów usługi ARM z wersją interfejsu API 2023-12-01 lub nowszą.
Aby włączyć aktualizacje stopniowe, użyj polecenia az functionapp update-strategy config set :
az functionapp update-strategy config set \
--name MyFunctionApp \
--resource-group MyResourceGroup \
--type RollingUpdate
Monitorowanie aktualizacji strony
Nie ma wbudowanego sygnału informującego o zakończeniu aktualizacji witryny. Można używać zapytań KQL w usłudze Application Insights jako metody szacowania z najwyższym możliwym przybliżeniem postępu aktualizacji ciągłych.
Monitorowanie postępu aktualizacji przebiegającej etapowo
Te zapytania KQL zapewniają w miarę dokładne oszacowanie postępu aktualizacji stopniowej przez śledzenie zmian wystąpień w logach Application Insights. Takie podejście ma znaczące ograniczenia i nie należy polegać na automatyzacji produkcji:
// Rolling update completion check
let deploymentStart = datetime('2025-10-30T19:00:00Z'); // Set to your deployment start time
let checkInterval = 10s; // How often you run this query
let buffer = 30s; // Safety buffer for instance detection
//
// Get original instances (active before deployment)
let originalInstances =
traces
| where timestamp between ((deploymentStart - buffer) .. deploymentStart)
| where cloud_RoleInstance != ""
| summarize by InstanceId = cloud_RoleInstance;
//
// Get currently active instances
let currentInstances =
traces
| where timestamp >= now() - checkInterval
| where cloud_RoleInstance != ""
| summarize by InstanceId = cloud_RoleInstance;
//
// Check completion status
currentInstances
| join kind=leftouter (originalInstances | extend IsOriginal = true) on InstanceId
| extend IsOriginal = isnotnull(IsOriginal)
| summarize
OriginalStillActiveInstances = make_set_if(InstanceId, IsOriginal),
NewInstances = make_set_if(InstanceId, not(IsOriginal)),
OriginalStillActiveCount = countif(IsOriginal),
NewCount = countif(not(IsOriginal)),
TotalOriginal = toscalar(originalInstances | count)
| extend
RollingUpdateComplete = iff(OriginalStillActiveCount == 0, "YES", "NO"),
PercentComplete = round(100.0 * (1.0 - todouble(OriginalStillActiveCount) / todouble(TotalOriginal)), 1)
| project RollingUpdateComplete, PercentComplete, OriginalStillActiveCount, NewCount
Jak użyć tego zapytania do szacowania:
- Wklej to zapytanie w bloku Dzienniki zasobu usługi Application Insights skojarzonego z aplikacją funkcji.
- Ustaw
deploymentStartna znacznik czasu, w którym aktualizacja witryny zakończy się sukcesem. - Okresowo uruchamiaj zapytanie, aby oszacować postęp. Ustaw interwał sondowania na wartość co najmniej tak długo, jak średni czas wykonywania funkcji, i upewnij się, że zmienna
checkIntervalw zapytaniu jest zgodna z tą częstotliwością sondowania. - Zapytanie zwraca przybliżone wartości:
RollingUpdateComplete: Najlepsze oszacowanie, czy wszystkie oryginalne wystąpienia są zastępowanePercentComplete: Szacowany procent oryginalnych wystąpień, które są zastępowaneOriginalStillActiveCount: Szacowana liczba oryginalnych wystąpień nadal uruchomionychNewCount: Liczba aktualnie aktywnych wystąpień
Podczas korzystania z tych zapytań należy pamiętać o następujących ograniczeniach:
-
Luka czasowa:
deploymentStartczas oznacza, kiedy aktualizacja witryny osiągnie sukces, ale rzeczywista aktualizacja ciągła niekoniecznie uruchomi się natychmiast. Podczas tej przerwy wszystkie zdarzenia zwiększenia skali udostępniają wystąpienia uruchamiające oryginalną wersję. Ponieważ zapytanie śledzi tylko wystąpienia aktywne wdeploymentStart, nie monitoruje tych nowych instancji oryginalnej wersji, co potencjalnie powoduje fałszywe sygnały ukończenia. -
Wykrywanie oparte na dzienniku: takie podejście opiera się na dziennikach aplikacji w celu wnioskowania stanu wystąpienia, a nie bezpośredniego wykonywania zapytań dotyczących stanu wystąpienia. Wystąpienia mogą być uruchomione, ale nie są aktywnie rejestrowane, co prowadzi do fałszywych sygnałów ukończenia, gdy oryginalne wystąpienia są nadal aktywne, ale nie emitują dzienników w
checkIntervaloknie.
Zalecenie dotyczące środowiska produkcyjnego: użyj aktualizacji rotacyjnych, gdy wdrożenia bez przestojów są kluczowe. Upewnij się, że w potokach wdrażania nie ma konieczności oczekiwania na ukończenie aktualizacji przed przejściem do kolejnych kroków. Użyj odtworzenia, gdy potrzebujesz szybszego i bardziej przewidywalnego czasu aktualizacji oraz możesz tolerować krótki przestój.
Często zadawane pytania
Poniżej przedstawiono kilka typowych pytań dotyczących strategii aktualizacji witryny.
Jak aktualizacje stopniowe różnią się od miejsc wdrożenia?
W przeciwieństwie do miejsc wdrożenia aktualizacje stopniowe nie wymagają dodatkowej infrastruktury. Ustaw siteUpdateStrategy.type wartość na "RollingUpdate" dla wdrożeń bez przestojów.
Aktualizacje bez przestojów zachowują bieżące wykonanie, a sloty wdrożeniowe kończą je podczas zamian. Niektórych właściwości witryny i ustawień trwałych nie można zamienić i wymagają bezpośredniej modyfikacji wolumenu produkcji.
W przeciwieństwie do miejsc wdrożenia, aktualizacje etapowe nie zapewniają oddzielnego środowiska do testowania zmian kanarkowych ani przekierowania części ruchu na żywo. Jeśli potrzebujesz tych funkcji, użyj planu obsługującego miejsca wdrożenia, takiego jak Elastic Premium, lub zarządzaj oddzielnymi aplikacjami Flex Consumption za pomocą usługi Traffic Manager.
Jak wycofać aktualizację witryny?
Obecnie nie ma funkcji wycofywania aktualizacji witryny. Jeśli konieczne jest wycofanie, zainicjuj inną aktualizację witryny przy użyciu poprzedniego stanu kodu lub konfiguracji. Pełny przewodnik znajdziesz w artykule Odzyskiwanie po nieudanym wdrożeniu planu Flex Consumption.
Jak obsługiwane są wyzwalacze czasomierza?
Wyzwalacze czasomierza utrzymują swój pojedynczy charakter. Po oznaczeniu aplikacji funkcji wyzwalanej zegarem do opróżniania nowe funkcje są uruchamiane w najnowszej wersji.
Występują błędy środowiska uruchomieniowego podczas aktualizacji stopniowej
Jeśli nie można uruchomić nowych wystąpień lub napotkać błędy środowiska uruchomieniowego, problem prawdopodobnie występuje w kodzie aplikacji, zależnościach, ustawieniach konfiguracji lub zmodyfikowanych zmiennych środowiskowych.
Aby rozwiązać ten problem, ponownie wdróż ostatnią znaną wersję w dobrej kondycji, aby przywrócić środowisko uruchomieniowe. Następnie przetestuj proponowane zmiany w środowisku deweloperskim lub testowym przed ponowną próbą. Przejrzyj dzienniki błędów, aby zidentyfikować konkretną zmianę, która spowodowała problem.