Per ospitare un'applicazione web, qualsiasi linguaggio o framework noi usiamo, sulla piattaforma Microsoft Azure possiamo sfruttare gli App Service. Hanno molteplici funzionalità e automatismi che ci fanno dimenticare della loro gestione, ma è importante assicurarci che le app funzionino sempre.
Quando disponiamo di più istanze il load balancer distribuisce le chiamate su di esse a meno che IIS, il web server che sta dietro le quinte, non risponda con un 503. Per avere un errore di questo genere deve verificarsi qualcosa di molto grave, ma non sempre è così: sebbene il nostro applicativo risponda, potrebbe non essere tutto funzionante.
Di recente è stata aggiunta la possibilità di indicare al servizio di monitorare un endpoint HTTP. Con esso il nostro compito è di rispondere e dare uno status code 200 (o nel range dei 200-299) quando esso viene interpellato. In caso contrario il balancer non inoltrerà più le richieste all'istanza fino a quando non torneremo di nuovo healthy. Per sfruttare questa funzionalità è sufficiente aprire la pagina Health check della sotto sezione Monitoring, sempre attraverso il portale, e indicare il percorso relativo.
Fatto questo ogni due minuti il percorso verrà interrogato. Abbiamo due minuti per rispondere positivamente, ma se per cinque volte consecutive l'esito è negativo, l'istanza verrà rimossa. I ping, nel frattempo, proseguono fino a quando l'istanza torna di nuovo healty. Se questa situazione invece dovesse protrarsi per più di un'ora allora l'istanza verrà ricreata su un altro server virtuale. Da notare che se abbiamo abilitato l'autenticazione integrata degli App Service, questa viene saltata per interrogare direttamente il nostro endpoint.
In questo endpoint è importante quindi effettuare dei controlli di raggiungibilità su eventuali sotto sistemi, come database o code, al fine di dare un'indicazione veritiera dello stato di salute.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestire gli accessi con Token su Azure Container Registry
Migliorare l'organizzazione delle risorse con Azure Policy
Migliora le tue soluzioni ASP.NET Core con Azure OpenAI
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Creare una custom property in GitHub
Creare una libreria CSS universale: Cards
Implementare l'infinite scroll con QuickGrid in Blazor Server
Criptare la comunicazione con mTLS in Azure Container Apps
Utilizzare QuickGrid di Blazor con Entity Framework
Creare una libreria CSS universale - Rotazione degli elementi
Migrare una service connection a workload identity federation in Azure DevOps
Utilizzare Copilot con Azure Cosmos DB