Progettazione di servizi a disponibilità elevata con database SQL di AzureDesigning highly available services using Azure SQL Database

Quando si compilano e si distribuiscono servizi a disponibilità elevata nel database SQL di Azure, i gruppi di failover e la replica geografica attiva consentono di garantire resilienza in caso di interruzioni a livello di area ed errori irreversibili,When building and deploying highly available services on Azure SQL Database, you use failover groups and active geo-replication to provide resilience to regional outages and catastrophic failures. nonché un rapido ripristino nei database secondari.It also enables fast recovery to the secondary databases. Questo articolo esamina modelli di applicazione comuni e illustra vantaggi e svantaggi di ogni opzione.This article focuses on common application patterns and discusses the benefits and trade-offs of each option. Per informazioni sulla replica geografica attiva con i pool elastici, vedere Strategie di ripristino di emergenza per applicazioni che usano il pool elastico del database SQL.For information about active geo-replication with Elastic Pools, see Elastic Pool disaster recovery strategies.

Scenario 1: Uso di due aree di Azure per la continuità aziendale con tempo di inattività minimoScenario 1: Using two Azure regions for business continuity with minimal downtime

In questo scenario, le applicazioni presentano le caratteristiche seguenti:In this scenario the applications has the following characteristics:

  • L'applicazione è attiva in un'area di AzureApplication is active in one Azure region
  • Tutte le sessioni del database richiedono l'accesso in lettura e scrittura ai datiAll database sessions require read and write access (RW) to data
  • Il livello Web e il livello dati devono essere collocati in modo da ridurre la latenza e il costo del trafficoWeb tier and data tier must be collocated to reduce latency and traffic cost
  • Essenzialmente, il tempo di inattività rappresenta per queste applicazioni un rischio aziendale più elevato rispetto alla perdita di datiFundamentally, downtime is a higher business risk for these applications than data loss

In questo caso, la topologia di distribuzione dell'applicazione è ottimizzata per la gestione delle emergenze a livello di area in cui tutti i componenti dell'applicazione devono essere sottoposti a failover contemporaneamente.In this case, the application deployment topology is optimized for handling regional disasters when all application components need to failover together. Il diagramma seguente illustra questa topologia.The diagram below shows this topology. Per garantire la ridondanza geografica, le risorse dell'applicazione vengono distribuite nelle aree A e B. Le risorse nell'area B, tuttavia, non vengono utilizzate finché non si verifica un errore nell'area A.For geographic redundancy, the application’s resources are deployed to Region A and B. However, the resources in Region B are not utilized until Region A fails. Tra le due aree viene configurato un gruppo di failover per gestire la connettività del database, la replica e il failover.A failover group is configured between the two regions to manage database connectivity, replication and failover. Il servizio Web in entrambe le aree è configurato per accedere al database tramite il listener di lettura/scrittura <nome-gruppo-failover>.database.windows.net (1).The web service in both regions is configured to access the database via the read-write listener <failover-group-name>.database.windows.net (1). Gestione traffico è configurato per l'uso del metodo di routing per priorità (2).Traffic manager is set up to use priority routing method (2).

Nota

Gestione traffico di Azure viene usato in questo articolo solo a scopi illustrativi.Azure traffic manager is used throughout this article for illustration purposes only. È possibile usare qualsiasi soluzione di bilanciamento del carico che supporti il metodo di routing per priorità.You can use any load-balancing solution that supports priority routing method.

Il diagramma seguente illustra questa configurazione prima di un'interruzione:The following diagram shows this configuration before an outage:

Scenario 1.

Dopo un'interruzione nell'area primaria, il servizio di database SQL rileva che il database primario non è accessibile e attiva il failover nell'area secondaria in base ai parametri dei criteri di failover automatico (1).After an outage in the primary region, the SQL Database service detects that the primary database is not accessible and triggers failover to the secondary region based on the parameters of the automatic failover policy (1). A seconda del contratto di servizio dell'applicazione, è possibile configurare un periodo di tolleranza che controlla l'intervallo di tempo tra il rilevamento dell'interruzione e il failover stesso.Depending on your application SLA, you can configure a grace period that controls the time between the detection of the outage and the failover itself. Gestione traffico potrebbe avviare il failover degli endpoint prima che il gruppo di failover attivi il failover del database.It is possible that traffic manager initiates the endpoint failover before the failover group triggers the failover of the database. In tal caso, l'applicazione Web non può riconnettersi immediatamente al database.In that case the web application cannot immediately reconnect to the database. Le riconnessioni, tuttavia, avranno automaticamente esito positivo non appena verrà completato il failover del database.But the reconnections will automatically succeed as soon as the database failover completes. Quando l'area in cui si è verificato l'errore è ripristinata e di nuovo online, il database primario precedente si riconnette automaticamente come nuovo database secondario.When the failed region is restored and back online, the old primary automatically reconnects as a new secondary. Il diagramma seguente illustra la configurazione dopo il failover.The diagram below illustrates the configuration after failover.

Nota

Tutte le transazioni di cui è stato eseguito il commit dopo il failover andranno perse durante la riconnessione.All transactions committed after the failover are lost during the reconnection. Dopo il completamento del failover, l'applicazione nell'area B può riconnettersi e riavviare l'elaborazione delle richieste utente.After the failover is completed, the application in region B is able to reconnect and restart processing the user requests. Sia l'applicazione Web che il database primario si trovano nell'area B e continuano a condividere lo stesso percorso.Both the web application and the primary database are now in region B and remain co-located. n>

Scenario 1.

In caso di interruzione nell'area B, il processo di replica tra il database primario e quello secondario viene sospeso ma il collegamento tra i due resta intatto (1).If an outage happens in region B, the replication process between the primary and the secondary database gets suspended but the link between the two remains intact (1). Gestione traffico rileva l'interruzione della connettività all'area B e contrassegna l'endpoint web-app-2 come danneggiato (2).Traffic managed detects that connectivity to Region B is broken and marks the endpoint web app 2 as Degraded (2). Le prestazioni dell'applicazione non subiscono alcun impatto in questo caso, ma il database risulta esposto e quindi maggiormente a rischio di perdita di dati in caso di errore in successione nell'area A.The application's performance is not impacted in this case, but the database becomes exposed and therefore at higher risk of data loss in case region A fails in succession.

Nota

Per il ripristino di emergenza è consigliabile la configurazione con distribuzione dell'applicazione limitata a due aree.For disaster recovery, we recommend the configuration with application deployment limited to two regions. Infatti la maggior parte delle geografie di Azure ha solo due aree.This is because most of the Azure geographies have only two regions. Questa configurazione non protegge l'applicazione da un errore irreversibile simultaneo in entrambe le aree.This configuration does not protect your application from a simultaneous catastrophic failure of both regions. Nell'improbabile eventualità di un errore di questo genere, è possibile recuperare i database in una terza area con un'operazione di ripristino geografico.In an unlikely event of such a failure, you can recover your databases in a third region using geo-restore operation.

Dopo che l'interruzione è stata risolta, il database secondario viene automaticamente risincronizzato con quello primario.Once the outage is mitigated, the secondary database automatically resynchronizes with the primary. Durante la sincronizzazione, le prestazioni del database primario possono risultare peggiorate.During synchronization, performance of the primary can be impacted. L'impatto specifico dipende dalla quantità di dati acquisita dal nuovo database primario dal momento del failover.The specific impact depends on the amount of data the new primary acquired since the failover. Il diagramma seguente illustra un'interruzione nell'area secondaria:The following diagram illustrates an outage in the secondary region:

Scenario 1.

I vantaggi chiave di questo modello di progettazione sono:The key advantages of this design pattern are:

  • La stessa applicazione Web viene distribuita in entrambe le aree senza alcuna configurazione specifica dell'area e non richiede logica aggiuntiva per la gestione del failover.The same web application is deployed to both regions without any region-specific configuration and doesn’t require additional logic to manage failover.
  • Il failover non influisce sulle prestazioni dell'applicazione perché l'applicazione Web e il database condividono sempre lo stesso percorso.Application performance is not impacted by failover as the web application and the database are always co-located.

Il principale svantaggio è rappresentato dal fatto che le risorse dell'applicazione nell'area B sono sottoutilizzate nella maggior parte dei casi.The main tradeoff is that the application resources in Region B are underutilized most of the time.

Scenario 2: Aree di Azure per la continuità aziendale con mantenimento massimo dei datiScenario 2: Azure regions for business continuity with maximum data preservation

Questa opzione è particolarmente indicata per le applicazioni con le caratteristiche seguenti:This option is best suited for applications with the following characteristics:

  • Qualsiasi perdita di dati rappresenta un rischio aziendale elevato.Any data loss is high business risk. Il failover del database può essere usato solo come ultima soluzione se l'interruzione è causata da un errore irreversibile.The database failover can only be used as a last resort if the outage is caused by a catastrophic failure.
  • L'applicazione supporta le modalità di sola lettura e lettura/scrittura delle operazioni e può funzionare in "modalità di sola lettura" per un periodo di tempo.The application supports read-only and read-write modes of operations and can operate in "read-only mode" for a period of time.

In questo modello l'applicazione passa alla modalità di sola lettura quando le connessioni di lettura-scrittura iniziano a dare errori di timeout.In this pattern, the application switches to read-only mode when the read-write connections start getting time-out errors. L'applicazione Web viene distribuita in entrambe le aree e include una connessione all'endpoint listener di lettura/scrittura e una diversa connessione all'endpoint listener di sola lettura (1).The Web Application is deployed to both regions and include a connection to the read-write listener endpoint and different connection to the read-only listener endpoint (1). Il profilo di Gestione traffico dovrà usare il routing per priorità.The Traffic manager profile should use priority routing. Il monitoraggio degli endpoint dovrà essere abilitato per l'endpoint applicazione in ogni area (2).End point monitoring should be enabled for the application endpoint in each region (2).

Il diagramma seguente illustra questa configurazione prima di un'interruzione:The following diagram illustrates this configuration before an outage:

Scenario 2.

Quando Gestione traffico rileva un errore di connettività all'area A, trasferisce automaticamente il traffico utente all'istanza dell'applicazione nell'area B. Con questo modello, è importante impostare il periodo di tolleranza con perdita di dati su un valore sufficientemente elevato, ad esempio 24 ore.When the traffic manager detects a connectivity failure to region A, it automatically switches user traffic to the application instance in region B. With this pattern, it is important that you set the grace period with data loss to a sufficiently high value, for example 24 hours. In questo modo si impedisce la perdita di dati se l'interruzione del servizio viene risolta entro tale intervallo di tempo.It ensures that data loss is prevented if the outage is mitigated within that time. Quando l'applicazione Web nell'area B viene attivata, le operazioni di lettura/scrittura iniziano ad avere esito negativo.When the Web application in region B is activated the read-write operations start failing. A questo punto, passerà alla modalità di sola lettura (1).At that point, it should switch to the read-only mode (1). In questa modalità, le richieste vengono instradate automaticamente al database secondario.In this mode the requests are automatically routed to the secondary database. Se l'interruzione è causata da un errore irreversibile, molto probabilmente non potrà essere risolta entro il periodo di tolleranza.If the outage is caused by a catastrophic failure, most likely it cannot be mitigated within the grace period. Alla scadenza, il gruppo di failover attiva il failover.When it expires the failover group triggers the failover. Il listener di lettura/scrittura diventa quindi disponibile e le connessioni non hanno più esito negativo (2).After that the read-write listener becomes available and the connections to it stop failing (2). Il diagramma seguente illustra le due fasi del processo di ripristino.The following diagram illustrates the two stages of the recovery process.

Nota

Se l'interruzione nell'area primaria viene risolta entro il periodo di tolleranza, Gestione traffico rileva il ripristino della connettività nell'area primaria e trasferisce di nuovo il traffico utente all'istanza dell'applicazione nell'area A. Tale istanza riprende l'esecuzione e funziona in modalità lettura/scrittura usando il database primario nell'area A come illustrato nel diagramma precedente.If the outage in the primary region is mitigated within the grace period, traffic manager detects the restoration of connectivity in the primary region and switches user traffic back to the application instance in region A. That application instance resumes and operates in read-write mode using the primary database in region A as illustrated by the previous diagram.

Scenario 2.

In caso di interruzione nell'area B, Gestione traffico rileva l'errore dell'endpoint web-app-2 nell'area B e lo contrassegna come danneggiato (1).If an outage happens in region B, the traffic manager detects the failure of the end point web-app-2 in region B and marks it degraded (1). Nel frattempo, il gruppo di failover trasferisce il listener di sola lettura all'area A (2).In the meantime, the failover group switches the read-only listener to region A (2). L'interruzione non influisce sull'esperienza degli utenti finali, ma il database primario viene esposto durante l'interruzione.This outage does not impact the end user experience but the primary database is exposed during the outage. Il diagramma seguente illustra un errore nell'area secondaria:The following diagram illustrates a failure in the secondary region:

Scenario 2.

Dopo che l'interruzione del servizio è stata risolta, il database secondario viene immediatamente sincronizzato con quello primario e il listener di sola lettura viene passato nuovamente al database secondario nell'area B. Durante la sincronizzazione, le prestazioni del database primario potrebbero essere leggermente influenzate a seconda della quantità di dati che deve essere sincronizzata.Once the outage is mitigated, the secondary database is immediately synchronized with the primary and the read-only listener is switched back to the secondary database in region B. During synchronization performance of the primary could be slightly impacted depending on the amount of data that needs to be synchronized.

Questo modello di progettazione presenta diversi vantaggi:This design pattern has several advantages:

  • Impedisce la perdita dei dati durante le interruzioni temporanee.It avoids data loss during the temporary outages.
  • Il tempo di inattività dipende solo dalla velocità con cui Gestione traffico rileva l'errore di connettività, che è configurabile.Downtime depends only on how quickly traffic manager detects the connectivity failure, which is configurable.

Lo svantaggio è rappresentato dal fatto che l'applicazione deve poter funzionare in modalità di sola lettura.The tradeoff is that the application must be able to operate in read-only mode.

Scenario 3: Spostamento dell'applicazione in una diversa area geografica senza perdita di dati e tempo di inattività quasi nulloScenario 3: Application relocation to a different geography without data loss and near zero downtime

In questo scenario, l'applicazione presenta le caratteristiche seguenti:In this scenario the application has the following characteristics:

  • Gli utenti finali accedono all'applicazione da diverse aree geograficheThe end users access the application from different geographies
  • L'applicazione include carichi di lavoro di sola lettura che non dipendono dalla sincronizzazione completa con gli aggiornamenti più recentiThe application includes read-only workloads that do not depend on full synchronization with the latest updates
  • L'accesso in scrittura ai dati deve essere supportato nella stessa area geografica per la maggior parte degli utentiWrite access to data should be supported in the same geography for majority of the users
  • La latenza di lettura è di importanza critica per l'esperienza degli utenti finaliRead latency is critical for the end user experience

Per soddisfare questi requisiti, è necessario garantire che il dispositivo utente si connetta sempre all'applicazione distribuita nella stessa area geografica per le operazioni di sola lettura, come l'esplorazione dei dati, l'analisi e così via. Le operazioni OLTP vengono invece elaborate nella stessa area geografica nella maggior parte dei casi.In order to meet these requirements you need to guarantee that the user device always connects to the application deployed in the same geography for the read-only operations, such as browsing data, analytics etc. Whereas, the OLTP operations are processed in the same geography most of the time. Ad esempio, le operazioni OLTP potrebbero essere elaborate nella stessa area geografica in orario diurno e in un'altra area geografica durante gli orari di minore attività.For example, during the day time OLTP operations are processed in the same geography, but during the off hours they could be processed in a different geography. Se l'attività degli utenti finali si verifica prevalentemente nelle ore lavorative, è possibile garantire prestazioni ottimali per quasi tutti gli utenti nella maggior parte dei casi.If the end user activity mostly happens during the working hours, you can guarantee the optimal performance for most of the users most of the time. Il diagramma seguente illustra questa topologia.The following diagram shows this topology.

Le risorse dell'applicazione dovranno essere distribuite in ogni area geografica in cui si ha un'elevata esigenza di utilizzo.The application’s resources should be deployed in each geography where you have substantial usage demand. Se l'applicazione viene usata attivamente in Stati Uniti, Unione Europea e Asia sud-orientale, ad esempio, dovrà essere distribuita in tutte queste aree geografiche.For example, if your application is actively used in the United States, European Union and South East Asia the application should be deployed to all of these geographies. Il database primario dovrà essere trasferito automaticamente da un'area geografica alla successiva al termine dell'orario lavorativo.The primary database should be dynamically switched from one geography to the next at the end of the working hours. Questo metodo è detto "follow the sun".This method is called “follow the sun”. Il carico di lavoro OLTP si connette sempre al database tramite il listener di lettura/scrittura <nome-gruppo-failover>.database.windows.net (1).The OLTP workload always connects to the database via the read-write listener <failover-group-name>.database.windows.net (1). Il carico di lavoro di sola lettura si connette direttamente al database locale usando l'endpoint server di database <nome-server>.database.windows.net (2).The read-only workload connects to the local database directly using the databases server endpoint <server-name>.database.windows.net (2). Gestione traffico viene configurato con il metodo di routing per prestazioni,Traffic manager is configured with the performance routing method. che assicura la connessione del dispositivo dell'utente finale al servizio Web nell'area più vicina.It ensures that the end user’s device is connected to the web service in the closest region. La configurazione di Gestione traffico dovrà includere l'abilitazione del monitoraggio degli endpoint per ogni endpoint servizio Web (3).Traffic manager should be set up with end point monitoring enabled for each web service end point (3).

Nota

La configurazione del gruppo di failover definisce l'area usata per il failover.The failover group configuration defines which region is used for failover. Dato che il nuovo database primario si trova in una diversa area geografica, il failover determina una latenza superiore per i carichi di lavoro sia OLTP che di sola lettura finché l'area interessata non è di nuovo online.Because the new primary is in a different geography the failover results in longer latency for both OLTP and read-only workloads until the impacted region is back online.

Scenario 3.

Alla fine della giornata (ad esempio, alle 23 ora locale), i database attivi dovranno essere trasferiti all'area successiva (Europa settentrionale).At the end of the day (for example at 11PM local time) the active databases should be switched to the next region (North Europe). Questa attività può essere interamente automatizzata con il servizio di pianificazione di Azure.This task can be fully automated by using Azure scheduling service. L'attività include i passaggi seguenti:The task involves the following steps:

  • Trasferire il server primario del gruppo di failover all'area Europa settentrionale con il failover semplice (1).Switch primary server in the failover group to North Europe using friendly failover (1)
  • Rimuovere il gruppo di failover tra Stati Uniti orientali ed Europa settentrionale.Remove the failover group between East US and North Europe
  • Creare un nuovo gruppo di failover con lo stesso nome ma tra Europa settentrionale e Asia orientale (2).Create a new failover group with the same name but between North Europe and East Asia (2).
  • Aggiungere il database primario nell'area Europa settentrionale e il database secondario nell'area Asia orientale a questo gruppo di failover (3).Add the primary in North Europe and secondary in East Asia to this failover group (3).

Il diagramma seguente illustra la nuova configurazione dopo il failover pianificato:The following diagram illustrates the new configuration after the planned failover:

Scenario 3.

In caso di interruzione nell'area Europa settentrionale, ad esempio, il gruppo di failover avvia il failover automatico del database, che di fatto determina lo spostamento dell'applicazione nell'area successiva in anticipo rispetto alla pianificazione (1).If an outage happens in North Europe for example, the automatic database failover is initiated by the failover group, which effectively results in moving the application to the next region ahead of schedule (1). In tal caso, gli Stati Uniti orientali sono l'unica area secondaria rimanente finché l'area Europa settentrionale non è di nuovo online.In that case the US East is the only remaining secondary region until North Europe is back online. Le due aree rimanenti gestiscono i clienti in tutte e tre le aree geografiche cambiando i ruoli.The remaining two regions serve the customers in all three geographies by switching roles. L'utilità di pianificazione di Azure deve essere modificata di conseguenza.Azure scheduler has to be adjusted accordingly. Dato che le aree rimanenti ricevono traffico utente aggiuntivo dall'Europa, le prestazioni dell'applicazione risultano peggiorate a causa non solo della latenza aggiuntiva ma anche di un maggior numero di connessioni degli utenti finali.Because the remaining regions get additional user traffic from Europe, the application's performance is impacted not only by additional latency but also by an increased number of end user connections. Dopo che l'interruzione in Europa settentrionale è stata risolta, il database secondario in tale area viene immediatamente sincronizzato con il database primario corrente.Once the outage is mitigated in North Europe, the secondary database there is immediately synchronized with the current primary. Il diagramma seguente illustra un'interruzione nell'area Europa settentrionale:The following diagram illustrates an outage in North Europe:

Scenario 3.

Nota

È possibile ridurre il periodo di tempo in cui l'esperienza degli utenti finali in Europa risulta compromessa dalla latenza elevata.You can reduce the time when the end user’s experience in Europe is degraded by the long latency. A tale scopo, è consigliabile distribuire in modo proattivo una copia dell'applicazione e creare i database secondari in un'altra area locale (Europa occidentale) per la sostituzione dell'istanza dell'applicazione offline in Europa settentrionale.To do that you should proactively deploy an application copy and create the secondary database(s) in another local region (West Europe) as a replacement of the offline application instance in North Europe. Quando quest'ultima è di nuovo online, si può decidere di continuare a usare l'area Europa occidentale oppure rimuovere tale copia dell'applicazione e tornare a usare l'area Europa settentrionale.When the latter is back online you can decide whether to continue using West Europe or to remove the copy of the application there and switch back to using North Europe,

I principali vantaggi di questa progettazione sono i seguenti:The key benefits of this design are:

  • Il carico di lavoro di sola lettura dell'applicazione accede sempre ai dati nell'area più vicina.The read-only application workload accesses data in the closets region at all times.
  • Il carico di lavoro di lettura/scrittura dell'applicazione accede ai dati nell'area più vicina durante il periodo di maggiore attività in ogni area geografica.The read-write application workload accesses data in the closest region during the period of the highest activity in each geography
  • Dato che l'applicazione viene distribuita in più aree, può superare la perdita di una delle aree senza tempi di inattività significativi.Because the application is deployed to multiple regions, it can survive a loss of one of the regions without any significant downtime.

Esistono tuttavia alcuni svantaggi:But there are some tradeoffs:

  • Un'interruzione a livello di area determina una latenza superiore nell'area geografica.A regional outage results in the geography to be impacted by longer latency. I carichi di lavoro sia di lettura/scrittura che di sola lettura vengono gestiti dall'applicazione in una diversa area geografica.Both read-write and read-only workloads is served by the application in a different geography.
  • I carichi di lavoro di sola lettura devono connettersi a un diverso endpoint in ogni area.The read-only workloads must connect to a different end point in each region.

Pianificazione della continuità aziendale: Scegliere una progettazione di applicazioni per il ripristino di emergenza cloudBusiness continuity planning: Choose an application design for cloud disaster recovery

La strategia di ripristino di emergenza cloud specifica può combinare o estendere questi modelli di progettazione per soddisfare al meglio le esigenze dell'applicazione.Your specific cloud disaster recovery strategy can combine or extend these design patterns to best meet the needs of your application. Come accennato in precedenza, la strategia scelta si basa sul contratto di servizio che si vuole offrire ai clienti e sulla topologia di distribuzione dell'applicazione.As mentioned earlier, the strategy you choose is based on the SLA you want to offer to your customers and the application deployment topology. Per facilitare la decisione, la tabella seguente confronta le opzioni in base all'obiettivo del punto di ripristino (RPO) e al tempo di recupero stimato (ERT).To help guide your decision, the following table compares the choices based on recovery point objective (RPO) and estimated recovery time (ERT).

ModelloPattern RPORPO ERTERT
Distribuzione attiva/passiva per il ripristino di emergenza con accesso al database con percorso condivisoActive-passive deployment for disaster recovery with co-located database access Accesso in lettura/scrittura < 5 secRead-write access < 5 sec Ora di rilevamento dell'errore + DNS TTLFailure detection time + DNS TTL
Distribuzione attiva/attiva per il bilanciamento del carico dell'applicazioneActive-active deployment for application load balancing Accesso in lettura/scrittura < 5 secRead-write access < 5 sec Ora di rilevamento dell'errore + DNS TTLFailure detection time + DNS TTL
Distribuzione attiva/passiva per la conservazione dei datiActive-passive deployment for data preservation Accesso in sola lettura < 5 secRead-only access < 5 sec Accesso in sola lettura = 0Read-only access = 0
Accesso in lettura/scrittura = zeroRead-write access = zero Accesso in lettura-scrittura = ora di rilevamento dell'errore + periodo di tolleranza con perdita di datiRead-write access = Failure detection time + grace period with data loss

Passaggi successiviNext steps