Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Wanneer u uw app host met Azure Functions in het Flex Consumption-abonnement, kunt u bepalen hoe updates worden geïmplementeerd voor actieve exemplaren. Er wordt een site-update uitgevoerd wanneer u code implementeert, toepassingsinstellingen wijzigt of andere configuratie-eigenschappen wijzigt. Het Flex Consumption-abonnement biedt een siteconfiguratie-instelling (SiteUpdateStrategy) die u kunt gebruiken om te bepalen of uw function app uitvaltijd heeft tijdens deze updates en hoe in-progressuitvoeringen worden afgehandeld.
Het Flex Consumption-abonnement ondersteunt momenteel deze updatestrategieën:
- Opnieuw maken: Met Functions worden alle actieve exemplaren opnieuw opgestart nadat u de code hebt vervangen door de nieuwste versie. Deze aanpak kan korte downtime veroorzaken terwijl exemplaren worden gerecycled en het standaardgedrag van andere Azure Functions-hostingplannen behouden blijven.
- Rolling update (preview): biedt implementaties zonder downtime door exemplaren in batches leeg te maken en te vervangen. Uitvoeringen die worden uitgevoerd, worden op natuurlijke wijze voltooid zonder geforceerde beëindiging.
Belangrijk
De strategie voor rolling update is momenteel beschikbaar als preview-versie en wordt niet aanbevolen voor productie-apps. Bekijk de huidige beperkingen en overwegingen voordat u deze strategie inschakelt in een productie-app.
Strategievergelijking
In deze tabel worden de twee strategieën voor site-updates vergeleken:
| Overweging | Recreëren | Geleidelijke update |
|---|---|---|
| Uitvaltijd | Korte downtime wanneer uw app uitschaalt vanaf nul na het opnieuw opstarten | Geen periode van downtime |
| Lopende uitvoeringen | Geforceerd beëindigd | Is toegestaan binnen de respijtperiode van 60 minuten (HTTP-functies beperkt tot time-out van 230 seconden) |
| Snelheid | Sneller: instanties worden direct opnieuw gestart | Tragere verwerking: instanties worden op regelmatige tijdstippen in batches bijgewerkt. |
| Compatibiliteit met eerdere versies | Niet nodig als één versie tegelijk wordt uitgevoerd | Wijzigingen moeten compatibel zijn met eerdere versies, met name met stateful workloads of ingrijpende wijzigingen. |
| Hoe in te stellen | Standaardgedrag, consistent met andere hostingabonnementen | Configuratie voor aanmelden |
| Gebruiken wanneer... | ✔ U hebt snelle implementaties nodig. ✔ Een korte uitvaltijd is acceptabel. ✔ U implementeert ingrijpende wijzigingen en moet een schone herstart uitvoeren. ✔ Uw functies zijn staatloos en kunnen onderbrekingen afhandelen. |
✔ U hebt implementaties zonder downtime nodig. ✔ U hebt langlopende of kritieke functies die niet kunnen worden onderbroken. ✔ Uw wijzigingen zijn compatibel met eerdere versies. ✔ U moet lopende uitvoeringen behouden. |
Strategiegedragingen bijwerken
In deze tabel wordt het updateproces van de twee strategieën vergeleken:
Strategie opnieuw maken:
Rolling-update-strategie:
- Er wordt een site-update (code- of configuratiewijzigingen) toegepast op uw functie-app.
- De strategie voor opnieuw maken wordt geactiveerd om actieve exemplaren bij te werken met de nieuwe wijzigingen.
- Het platform start alle live en afsluitende exemplaren geforceerd opnieuw op.
- Het schaalsysteem begint onmiddellijk met het inrichten van nieuwe instanties met de bijgewerkte versie (oorspronkelijke instanties kunnen nog steeds in de achtergrond worden verwijderd).
- Er wordt een site-update (code- of configuratiewijzigingen) toegepast op uw functie-app.
- De strategie voor rolling updates wordt geactiveerd om actieve exemplaren bij te werken met de nieuwe wijzigingen.
- Het platform wijst alle live-exemplaren toe aan batches.
- Met regelmatige tussenpozen verwijdert het platform een batch instances. Leegmaken voorkomt dat instanties nieuwe gebeurtenissen accepteren, terwijl lopende uitvoeringen worden voltooid, tot een maximale uitvoeringstijd van één uur.
- Tegelijkertijd provisioneert het schaalbare platform nieuwe instanties waarop de bijgewerkte versie draait om de uitgeputte capaciteit te vervangen.
- Dit proces wordt voortgezet totdat alle live-exemplaren de bijgewerkte versie uitvoeren.
In deze tabel worden de belangrijkste kenmerken van de twee strategieën vergeleken:
Strategie opnieuw maken:
Rolling-update-strategie:
- Korte downtime: uw app is niet beschikbaar terwijl exemplaren opnieuw worden opgestart en uitgeschaald
- Onderbreking van de uitvoering: uitvoeringen in uitvoering worden onmiddellijk beëindigd
- Geen voltooiingssignaal: bewaak exemplaarlogboeken om bij te houden wanneer oorspronkelijke exemplaren stoppen met het verzenden van logboeken
- Geen downtime: implementaties worden uitgevoerd in batches, zodat uitvoeringen worden voltooid zonder geforceerde beëindiging.
- Asynchrone bewerkingen: Afvoeren en uitschalen worden gelijktijdig uitgevoerd zonder op elkaar te wachten. De uitbreiding is niet gegarandeerd vóór het volgende leegloopinterval.
- Overlappende updates: u kunt extra rolling updates initiëren terwijl er een wordt uitgevoerd. Alle niet-meest recente exemplaren worden leeggeschaald en alleen de nieuwste versie wordt uitgeschaald.
- Dynamisch schalen: het platform past het aantal exemplaren aan op basis van de huidige vraag tijdens de update.
- Door het platform beheerde capaciteit: wanneer de vraag toeneemt, voorziet het platform meer instances dan het afbouwt. Wanneer de vraag afneemt, worden alleen de benodigde exemplaren gecreëerd om aan de huidige behoeften te voldoen. Deze benadering zorgt voor continue beschikbaarheid tijdens het optimaliseren van het resourcegebruik.
Overwegingen voor een rolling update-strategie
Houd rekening met dit huidige gedrag en deze beperkingen bij het gebruik van de strategie voor rolling updates. Deze lijst wordt onderhouden tijdens de preview-periode en kan veranderen naarmate de functie algemene beschikbaarheid nadert.
- Platform-beheerde parameters: Het platform bepaalt de parameters (zoals het aantal batches, instanties per batch, het aantal batches en drain-intervallen) die het gedrag van rolling updates bepalen. Deze parameters kunnen veranderen vóór GA om prestaties en betrouwbaarheid te optimaliseren.
- Geen realtime-bewaking: er is momenteel geen inzicht in het aantal exemplaren dat leegloopt, hoeveel batches er blijven of de huidige voortgangspercentages.
- Geen voltooiingssignaal: u kunt echter exemplaarlogboeken bewaken om een schatting te maken wanneer een update is voltooid.
- Scenario's met één instantie: apps die op één instantie worden uitgevoerd, hebben een korte downtime die vergelijkbaar is met recreatie, hoewel uitvoeringen die aan de gang zijn nog steeds zullen worden voltooid.
- Durable Functions: Omdat het combineren van versies tijdens updates onverwacht gedrag in een Durable orkestratie kan veroorzaken, gebruik een expliciete orkestratieversiematchstrategie.
- Infrastructuur als code: als u code en configuratiewijzigingen implementeert, worden meerdere rolling updates geactiveerd die elkaar kunnen overlappen.
- Compatibiliteit met eerdere versies: zorg ervoor dat uw wijzigingen werken met de vorige versie tijdens de overgangsperiode van de rolling update.
Uw updatestrategie configureren
U kunt de updatestrategie voor uw app instellen met behulp van de SiteUpdateStrategy site-instelling, een onderliggend element van functionAppConfig. Standaard is SiteUpdateStrategy.type ingesteld op Recreate. Momenteel ondersteunen alleen Bicep- en ARM-sjablonen met API-versie 2023-12-01 of hoger het wijzigen van deze eigenschap.
functionAppConfig: {
...
siteUpdateStrategy: {
type: 'RollingUpdate'
}
...
}
Wijzigingen in de strategie voor site-updates worden van kracht bij de volgende site-update. Als u bijvoorbeeld type wijzigt van Recreate naar RollingUpdate, gebruikt u de hercreëerstrategie voor die update. Alle volgende site-updates maken vervolgens gebruik van rolling updates.
Updates van de site monitoren
Tijdens de openbare preview is er geen ingebouwd voltooiingssignaal voor site-updates. U kunt KQL-query's in Application Insights gebruiken als best effort-benadering om de voortgang van rolling updates te schatten.
Voortgang van rolling updates bewaken
Deze KQL-query's bieden een beste poging schatting van de voortgang van golfgewijze updates door het verloop van instanties in de logboeken van Application Insights bij te houden. Deze benadering heeft aanzienlijke beperkingen en mag niet worden gebruikt voor productieautomatisering:
// 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
Deze query gebruiken voor schatting:
- Plak deze query in het blad Logboeken van de Application Insights-resource die is gekoppeld aan uw functieapp.
- Stel
deploymentStartde tijdstempel in op wanneer de site-update succesvol is. - Voer de query periodiek uit om de voortgang te schatten. Stel het polling-interval in op ten minste zolang de gemiddelde uitvoeringstijd van de functie is en zorg ervoor dat de
checkIntervalvariabele in de query overeenkomt met deze pollingfrequentie. - De query retourneert geschatte waarden:
-
RollingUpdateComplete: Beste schatting van of alle oorspronkelijke exemplaren worden vervangen -
PercentComplete: Geschat percentage van oorspronkelijke exemplaren die worden vervangen -
OriginalStillActiveCount: Geschat aantal oorspronkelijke exemplaren dat nog steeds actief is -
NewCount: Aantal nieuwe instanties die momenteel actief zijn
-
Houd rekening met deze beperkingen bij het gebruik van deze query's:
Tijdsverschil: de
deploymentStarttijd geeft aan wanneer uw site-update een succes retourneert, maar de werkelijke rolling update wordt mogelijk niet onmiddellijk gestart. Tijdens deze periode voorzien scale-out gebeurtenissen instanties waarop de oorspronkelijke versie wordt uitgevoerd. Omdat de query alleen instanties bijdeploymentStartbijhoudt die actief zijn, worden deze nieuwe instanties van de oorspronkelijke versie niet bewaakt, wat mogelijk leidt tot valse voltooiingssignalen.Detectie op basis van logboeken: deze benadering is afhankelijk van toepassingslogboeken om de exemplaarstatus af te stellen in plaats van de exemplaarstatus rechtstreeks op te vragen. Exemplaren worden mogelijk uitgevoerd, maar niet actief logboeken registreren, wat tot valse voltooiingssignalen leidt wanneer originele exemplaren nog steeds actief zijn, maar geen logboeken binnen het
checkIntervalvenster hebben verzonden.
Aanbeveling voor productie: gebruik rolling updates wanneer implementaties zonder downtime essentieel zijn. Zorg ervoor dat uw implementatiepijplijnen niet hoeven te wachten op voltooiing van de update voordat u doorgaat met de volgende stappen. Gebruik opnieuw maken wanneer u snellere, voorspelbarere tijdsinstellingen voor updates nodig hebt en korte downtime kan verdragen.
Veelgestelde vragen
Ik ben gewend aan implementatieslots voor implementaties zonder downtime. Hoe verschillen de rolling updates?
- In tegenstelling tot implementatieslots is voor rolling updates geen extra infrastructuur vereist. Stel
siteUpdateStrategy.typein op"RollingUpdate"voor implementaties zonder downtime. - Rollende updates behouden lopende uitvoeringen, terwijl implementatieslots deze tijdens omwisselingen beëindigen. Bepaalde site-eigenschappen en permanente instellingen kunnen niet worden gewisseld en moeten rechtstreeks in de productiesleuf worden gewijzigd.
- In tegenstelling tot implementatieslots bieden rolling updates geen afzonderlijke omgeving voor canary-testwijzigingen of voor het routeren van een percentage van het live verkeer. Als u deze functies nodig hebt, gebruikt u een plan dat ondersteuning biedt voor implementatieslots, zoals Elastic Premium, of beheert u aparte Flex Consumption-apps achter een traffic manager.
Hoe kan ik een site-update terugdraaien?
- Er is momenteel geen functie om een site-update terug te draaien. Als een terugdraaiactie nodig is, start u een andere site-update met de vorige status van de code of configuratie.
Hoe worden timertriggers verwerkt?
- Timertriggers behouden hun singleton-aard. Zodra een door een timer geactiveerde functie-app is gemarkeerd voor leegmaken, worden nieuwe timerfuncties uitgevoerd op de nieuwste versie.
Ik zie runtimefouten tijdens de rolling update... Wat is er misgegaan?
- Als nieuwe exemplaren niet kunnen worden gestart of runtimefouten optreden, is het probleem waarschijnlijk in de toepassingscode, afhankelijkheden, configuratie-instellingen of omgevingsvariabelen die u hebt gewijzigd.
- Als u het probleem wilt oplossen, herplaatst u uw laatst bekende gezonde versie om de runtime te herstellen. Test vervolgens uw voorgestelde wijzigingen in een ontwikkel- of faseringsomgeving voordat u deze opnieuw uitvoert. Bekijk de foutenlogboeken om te bepalen welke specifieke wijziging het probleem heeft veroorzaakt.