Slot di distribuzione di Funzioni di Azure
Gli slot di distribuzione di Funzioni di Azure consentono all'app per le funzioni di eseguire istanze diverse denominate slot. Gli slot sono ambienti diversi esposti tramite un endpoint disponibile pubblicamente. Un'istanza dell'app viene sempre mappata allo slot di produzione ed è possibile scambiare le istanze assegnate a uno slot su richiesta.
Il numero di slot disponibili dipende dall'opzione di hosting specifica:
Opzione Hosting | Slot (incluso l'ambiente di produzione) |
---|---|
Piano a consumo | 2 |
Piano A consumo Flex | Non è al momento supportato |
Piano Premium | 3 |
Piano dedicato (servizio app) | 1-20 |
App contenitore | Usa revisioni |
Di seguito viene illustrato come le funzioni vengono influenzate dallo scambio di slot:
- Il reindirizzamento del traffico avviene senza interuzioni; nessuna richiesta viene eliminata a causa di uno scambio. Questo comportamento senza interruzioni si verifica perché l'attivazione della funzione successiva viene indirizzata allo slot scambiato.
- La funzione attualmente in esecuzione viene terminata durante lo scambio. Per informazioni su come scrivere funzioni senza stato e difensive, vedere Migliorare le prestazioni e l'affidabilità di Funzioni di Azure.
Perché usare gli slot?
L'uso degli slot di distribuzione offre numerosi vantaggi, tra cui:
- Ambienti diversi per scopi diversi: l'uso di slot diversi consente di differenziare le istanze dell'app prima di passare alla produzione o a uno slot di staging.
- Preriscaldamento: la distribuzione in uno slot anziché direttamente nell'ambiente di produzione consente all'app di riscaldarsi prima della pubblicazione. Inoltre, l'uso degli slot riduce la latenza per i carichi di lavoro attivati da HTTP. Le istanze vengono riscaldate prima della distribuzione, riducendo l'avvio a freddo per le funzioni appena distribuite.
- Facilità di fallback: dopo uno scambio con la produzione, lo slot con un'app gestita precedentemente ha ora l'app di produzione precedente. Se le modifiche scambiate nello slot di produzione non sono quelle previste, è possibile invertire immediatamente lo scambio per ripristinare "l'ultima istanza valida nota".
- Ridurre al minimo i riavvii: la modifica delle impostazioni dell'app in uno slot di produzione richiede il riavvio dell'app in esecuzione. È invece possibile modificare le impostazioni in uno slot di staging e scambiare le modifiche delle impostazioni in produzione con un'istanza preriscaldata. Gli slot sono il modo consigliato per eseguire la migrazione tra le versioni del runtime di Funzioni mantenendo la massima disponibilità. Per altre informazioni, vedere Aggiornamento del tempo di inattività minimo.
Operazioni di scambio
Durante uno scambio, uno slot è considerato l'origine e l'altro la destinazione. Lo slot di origine contiene l'istanza dell'applicazione che viene applicata allo slot di destinazione. I passaggi seguenti assicurano che lo slot di destinazione non subisca interruzioni durante uno scambio:
Applica impostazioni: le impostazioni dello slot di destinazione vengono applicate a tutte le istanze dello slot di origine. Ad esempio, le impostazioni di produzione vengono applicate all'istanza di gestione temporanea. Le impostazioni applicate includono le categorie seguenti:
- Impostazioni dell'app specifiche dello slot e stringhe di connessione (se applicabile)
- Impostazioni di Distribuzione continua (se abilitata)
- Impostazioni di autenticazione del servizio app (se abilitata)
Attendere i riavvii e la disponibilità: lo scambio attende che ogni istanza nello slot di origine completi il riavvio e sia disponibile per le richieste. Se un'istanza non viene riavviata, l'operazione di scambio ripristina tutte le modifiche apportate allo slot di origine e arresta l'operazione.
Aggiornare il routing: se tutte le istanze nello slot di origine vengono riscaldate correttamente, i due slot completano lo scambio scambiando le regole di gestione. Dopo questo passaggio, lo slot di destinazione (ad esempio, lo slot di produzione) contiene l'app precedentemente riscaldata nello slot di origine.
Ripetere l'operazione: ora che lo slot di origine ha l'app di preswap in precedenza nello slot di destinazione, completare la stessa operazione applicando tutte le impostazioni e riavviando le istanze per lo slot di origine.
Tenere presente quanto segue:
In qualsiasi momento dell'operazione di scambio, l'inizializzazione delle app scambiate avviene nello slot di origine. Lo slot di destinazione rimane online mentre lo slot di origine viene preparato, sia che lo scambio abbia esito positivo o meno.
Per scambiare uno slot di staging con lo slot di produzione, assicurarsi che lo slot di produzione sia sempre lo slot di destinazione. In questo modo, l'operazione di scambio non influisce sull'app di produzione.
Le impostazioni relative alle origini eventi e alle associazioni devono essere configurate come impostazioni dello slot di distribuzione prima di avviare uno scambio. Contrassegnandoli in anticipo come "permanenti", si garantisce che gli eventi e gli output vengano indirizzati all'istanza corretta.
Quando si crea un nuovo slot di staging, tutte le impostazioni esistenti nello slot di produzione vengono create nel nuovo slot, indipendentemente dalla persistenza dell'impostazione.
Gestisci impostazioni
Alcune impostazioni di configurazione sono specifiche dello slot. Gli elenchi seguenti illustrano nel dettaglio quali impostazioni cambiano quando si cambia slot e quali rimangono invariate.
Impostazioni specifiche dello slot:
- Endpoint di pubblicazione
- Nomi di dominio personalizzati
- Certificati non pubblici e impostazioni TLS/SSL
- Impostazioni di ridimensionamento
- Restrizioni IP
- Funzionamento continuo
- Impostazioni di diagnostica
- Condivisione di risorse tra le origini (CORS)
- Endpoint privati
Impostazioni non specifiche dello slot:
- Impostazioni generali, quali la versione del framework, 32/64 bit, i socket Web
- Impostazioni dell'app (possono essere configurate per essere associate a uno slot)
- Stringhe di connessione (possono essere configurate per essere associate a uno slot)
- Mapping del gestore
- Certificati pubblici
- Connessioni ibride *
- Integrazione della rete virtuale *
- Endpoint servizio *
- Rete di distribuzione di contenuti di Azure *
Le funzionalità contrassegnate con un asterisco (*) non vengono scambiate, in base alla progettazione.
Nota
Anche alcune impostazioni dell'app applicabili alle impostazioni non scambiate non vengono scambiate. Ad esempio, poiché le impostazioni di diagnostica non vengono scambiate, le impostazioni dell'app correlate come WEBSITE_HTTPLOGGING_RETENTION_DAYS
e DIAGNOSTICS_AZUREBLOBRETENTIONDAYS
non vengono scambiate, anche se non vengono visualizzate come impostazioni dello slot.
Creare un'impostazione di distribuzione
È possibile contrassegnare le impostazioni come impostazioni di distribuzione, rendendole permanenti. L'impostazione permanente non viene scambiata con l'istanza dell'app.
Se si crea un'impostazione di distribuzione in uno slot, assicurarsi di creare la stessa impostazione con un valore univoco in qualsiasi altro slot coinvolto in uno scambio. In questo modo, mentre il valore di un'impostazione non cambia, i nomi delle impostazioni rimangono coerenti tra gli slot. La coerenza dei nomi garantisce che il codice non tenti di accedere a un'impostazione definita in uno slot ma non in un altro.
Per creare un'impostazione di distribuzione, seguire questa procedura:
Passare a slot di distribuzione nell'app per le funzioni, quindi selezionare il nome dello slot.
Selezionare Configurazione, quindi selezionare il nome dell'impostazione da associare allo slot corrente.
Selezionare Impostazione slot di distribuzione, quindi selezionare OK.
Dopo aver rimosso la sezione delle impostazioni, selezionare Salva per mantenere le modifiche
Distribuzione
Gli slot sono vuoti quando si crea uno slot. È possibile usare una qualsiasi delle tecnologie di distribuzione supportate per distribuire l'applicazione su uno slot.
Scalabilità
Tutti gli slot vengono ridimensionati allo stesso numero di ruoli di lavoro dello slot di produzione.
- Per i piani A consumo, lo slot si adatta al ridimensionamento dell'app per le funzioni.
- Per i piani del servizio app, l'app viene ridimensionata a un numero fisso di ruoli di lavoro. Gli slot vengono eseguiti nello stesso numero di ruoli di lavoro del piano dell'app.
Visualizzare gli slot
È possibile visualizzare le informazioni sugli slot esistenti usando l'interfaccia della riga di comando di Azure o il portale di Azure.
Usare questi passaggi per creare un nuovo slot nel portale:
Passare all'app per le funzioni.
Selezionare gli Slot di distribuzione per visualizzare gli slot esistenti.
Aggiungi uno slot
È possibile aggiungere uno slot usando l'interfaccia della riga di comando di Azure o tramite il portale di Azure.
Usare questi passaggi per creare uno slot nel portale:
Passare all'app per le funzioni.
Selezionare Slot di distribuzione, quindi selezionare + Aggiungi slot.
Digitare il nome dello slot e selezionare Aggiungi.
Accedere alle risorse dello slot
È possibile accedere alle risorse (trigger HTTP e endpoint dell'amministratore) in uno slot di staging allo stesso modo dello slot di produzione. Tuttavia, al posto del nome host dell'app per le funzioni, nell'URL della richiesta si utilizza il nome host specifico dello slot, insieme a qualsiasi chiave specifica dello slot. Poiché gli slot di staging sono app attive, è necessario proteggere le funzioni in uno slot di staging come nello slot di produzione. produzione.
Scambio degli slot
È possibile scambiare gli slot all'esterno dell'ambiente di produzione usando l'interfaccia della riga di comando di Azure o tramite il portale di Azure.
Usare questi passaggi per scambiare uno slot di staging nell'ambiente di produzione:
Passare all'app per le funzioni.
Selezionare Slot di distribuzione, quindi selezionare Scambia.
Verificare le impostazioni di configurazione per lo scambio e selezionare Scambia
L'operazione di scambio può richiedere alcuni secondi.
Eseguire il rollback di uno scambio
Se uno scambio genera un errore o se si vuole semplicemente “annullare” uno scambio, è possibile eseguire il rollback allo stato iniziale. Per tornare allo stato precedente allo scambio, effettuare un altro scambio per invertirlo.
Rimuovere uno slot
È possibile rimuovere uno slot usando l'interfaccia della riga di comando di Azure o tramite il portale di Azure.
Usare questi passaggi per rimuovere uno slot dall'app nel portale:
Passare a slot di distribuzione nell'app per le funzioni, quindi selezionare il nome dello slot.
Selezionare Elimina.
Digitare il nome dello slot di distribuzione da eliminare, quindi selezionare Elimina.
Chiudere il riquadro di conferma.
Cambia il piano di servizio app
Con un'app per le funzioni in esecuzione in un piano di servizio app, è possibile modificare il piano di servizio app sottostante per uno slot.
Nota
Non è possibile modificare il piano di servizio app di uno slot nel piano A consumo.
Usare la procedura seguente per modificare il piano di servizio app di uno slot:
Passare a slot di distribuzione nell'app per le funzioni, quindi selezionare il nome dello slot.
In Piano di servizio app, selezionare Modificare il piano di servizio app.
Selezionare il piano da aggiornare o creare un nuovo piano.
Seleziona OK.
Considerazioni
Per gli slot di distribuzione di Funzioni di Azure occorre tenere presente quanto segue:
- Il numero di slot disponibili per un'app dipende dal piano. Al piano A consumo è consentito solo uno slot di distribuzione. Sono disponibili più slot per le app in esecuzione in altri piani. Per informazioni dettagliate, vedere Limiti del servizio.
- Lo scambio di uno slot reimposta le chiavi per le app con un'impostazione dell'app
AzureWebJobsSecretStorageType
uguale afiles
. - Quando gli slot sono abilitati, l'app per le funzioni è impostata sulla modalità di sola lettura nel portale.
- Gli scambi di slot potrebbero non riuscire quando l'app per le funzioni usa un account di archiviazione protetto come account di archiviazione predefinito (impostato in
AzureWebJobsStorage
). Vedere le informazioni di riferimento perWEBSITE_OVERRIDE_STICKY_DIAGNOSTICS_SETTINGS
. - Usare nomi di app per le funzioni più brevi di 32 caratteri. I nomi con più di 32 caratteri rischiano di causare conflitti di ID host.