Ejecución de una aplicación web en varias regiones de Azure para alta disponibilidadRun a web application in multiple Azure regions for high availability

Esta arquitectura de referencia muestra cómo ejecutar una aplicación de Azure App Service en varias regiones para lograr una alta disponibilidad.This reference architecture shows how to run an Azure App Service application in multiple regions to achieve high availability.

Arquitectura de referencia para una aplicación web con alta disponibilidad

Descargue un archivo Visio de esta arquitectura.Download a Visio file of this architecture.

ArquitecturaArchitecture

Esta arquitectura se basa en la que se muestra en mejorar la escalabilidad en una aplicación web.This architecture builds on the one shown in Improve scalability in a web application. Las principales diferencias son:The main differences are:

  • Regiones primarias y secundariasPrimary and secondary regions. Esta arquitectura emplea dos regiones para lograr una mayor disponibilidad.This architecture uses two regions to achieve higher availability. La aplicación se implementa en cada región.The application is deployed to each region. Durante las operaciones normales, el tráfico de red se enruta a la región primaria.During normal operations, network traffic is routed to the primary region. Si la región primaria deja de estar disponible, el tráfico se enruta a la región secundaria.If the primary region becomes unavailable, traffic is routed to the secondary region.
  • Puerta delantera.Front Door. La puerta delantera enruta las solicitudes entrantes a la región primaria.Front Door routes incoming requests to the primary region. Si la aplicación que ejecuta esa región deja de estar disponible, la puerta frontal conmuta por error a la región secundaria.If the application running that region becomes unavailable, Front Door fails over to the secondary region.
  • Replicación geográfica de SQL Database y/o Cosmos dB.Geo-replication of SQL Database and/or Cosmos DB.

Una arquitectura de varias regiones puede proporcionar una mayor disponibilidad que la implementación en una sola región.A multi-region architecture can provide higher availability than deploying to a single region. Si una interrupción regional afecta a la región primaria, puede usar la puerta delantera para conmutar por error a la región secundaria.If a regional outage affects the primary region, you can use Front Door to fail over to the secondary region. Esta arquitectura también puede ayudar si un determinado subsistema de la aplicación produce un error.This architecture can also help if an individual subsystem of the application fails.

Existen varios enfoques generales para lograr una alta disponibilidad en regiones:There are several general approaches to achieving high availability across regions:

  • Activo/pasivo con espera activa.Active/passive with hot standby. Un tráfico se dirige a una región, mientras el otro se encuentra en espera activa.Traffic goes to one region, while the other waits on hot standby. Espera activa significa que las máquinas virtuales de la región secundaria están siempre asignadas y en funcionamiento.Hot standby means the VMs in the secondary region are allocated and running at all times.
  • Activo/pasivo con espera pasiva.Active/passive with cold standby. El tráfico se dirige a una región, mientras el otro se encuentra en espera pasiva.Traffic goes to one region, while the other waits on cold standby. Espera pasiva significa que las máquinas virtuales de la región secundaria no se asignan hasta que son necesarias para una conmutación por error.Cold standby means the VMs in the secondary region are not allocated until needed for failover. Este enfoque tiene un coste menor de ejecución, pero generalmente tarda más en ponerse en línea durante un error.This approach costs less to run, but will generally take longer to come online during a failure.
  • Activo/activo.Active/active. Ambas regiones están activas y se equilibra la carga de las solicitudes entre ellas.Both regions are active, and requests are load balanced between them. Si una región no está disponible, se saca de la rotación.If one region becomes unavailable, it is taken out of rotation.

Esta arquitectura de referencia se centra en activo/pasivo con espera activa, con la puerta delantera para la conmutación por error.This reference architecture focuses on active/passive with hot standby, using Front Door for failover.

RecomendacionesRecommendations

Los requisitos pueden diferir de los de la arquitectura que se describe aquí.Your requirements might differ from the architecture described here. Use las recomendaciones de esta sección como punto de partida.Use the recommendations in this section as a starting point.

Emparejamiento regionalRegional pairing

Cada región de Azure se empareja con otra región de la misma zona geográfica.Each Azure region is paired with another region within the same geography. En general, elija regiones del mismo par de regional (por ejemplo, Este de EE. UU. 2 y Centro de EE. UU.).In general, choose regions from the same regional pair (for example, East US 2 and Central US). Las ventajas de hacerlo son:Benefits of doing so include:

  • Si se produce una interrupción prolongada, se establece como prioridad la recuperación de al menos una región de cada par.If there is a broad outage, recovery of at least one region out of every pair is prioritized.
  • Las actualizaciones planeadas del sistema de Azure se implementan en las regiones emparejadas de manera secuencial para reducir el posible tiempo de inactividad.Planned Azure system updates are rolled out to paired regions sequentially to minimize possible downtime.
  • En la mayoría de los casos, los pares regionales residen en la misma zona geográfica para cumplir los requisitos de residencia de datos.In most cases, regional pairs reside within the same geography to meet data residency requirements.

Sin embargo, asegúrese de que ambas regiones admitan todos los servicios de Azure necesarios para la aplicación.However, make sure that both regions support all of the Azure services needed for your application. Consulte servicios por región.See Services by region. Para más información sobre los pares regionales, consulte Continuidad empresarial y recuperación ante desastres (BCDR): Regiones emparejadas de Azure.For more information about regional pairs, see Business continuity and disaster recovery (BCDR): Azure Paired Regions.

Grupos de recursosResource groups

Considere la posibilidad de colocar la región primaria, la región secundaria y el Traffic Manager en grupos de recursosindependientes.Consider placing the primary region, secondary region, and Traffic Manager into separate resource groups. De esta forma, podrá administrar los recursos implementados en cada región como una sola colección.This lets you manage the resources deployed to each region as a single collection.

Configuración de la puerta frontalFront Door configuration

Enrutamiento.Routing. La puerta delantera admite varios mecanismos de enrutamiento.Front Door supports several routing mechanisms. En el escenario que se describe en este artículo, use el enrutamiento prioritario .For the scenario described in this article, use priority routing. Con esta configuración, la puerta delantera envía todas las solicitudes a la región primaria a menos que no se pueda tener acceso al punto de conexión de esa región.With this setting, Front Door sends all requests to the primary region unless the endpoint for that region becomes unreachable. En ese momento, conmuta por error automáticamente a la región secundaria.At that point, it automatically fails over to the secondary region. Establezca el grupo de back-end con diferentes valores de prioridad, 1 para la región activa y 2 o inferior para la región en espera o pasiva.Set the backend pool with different priority values, 1 for the active region and 2 or lower for the standby or passive region.

Sondeo de mantenimiento.Health probe. La puerta delantera usa un sondeo HTTP (o HTTPS) para supervisar la disponibilidad de cada back-end.Front Door uses an HTTP (or HTTPS) probe to monitor the availability of each back end. El sondeo proporciona una prueba de superación o error de puerta delantera para la conmutación por error a la región secundaria.The probe gives Front Door a pass/fail test for failing over to the secondary region. Funciona mediante el envío de una solicitud a la ruta de acceso de una dirección URL especificada.It works by sending a request to a specified URL path. Si recibe una respuesta distinta de 200 dentro de un período de tiempo de espera, el sondeo produce un error.If it gets a non-200 response within a timeout period, the probe fails. Puede configurar la frecuencia de sondeo de mantenimiento, el número de muestras necesarias para la evaluación y el número de ejemplos correctos necesarios para que el back-end se marque como correcto.You can configure the health probe frequency, number of samples required for evaluation, and the number of successful samples required for the backend to be marked as healthy. Si la puerta delantera marca el back-end como degradado, se conmuta por error al otro back-end.If Front Door marks the backend as degraded, it fails over to the other backend. Para obtener más información, consulte sondeos de Estado.For details, see Health Probes.

Como procedimiento recomendado, cree una ruta de acceso de sondeo de estado en el back-end de la aplicación que informe del estado general de la aplicación.As a best practice, create a health probe path in your application backend that reports the overall health of the application. Este sondeo de Estado debe comprobar las dependencias críticas, como la App Service aplicaciones, la cola de almacenamiento y la SQL Database.This health probe should check critical dependencies such as the App Service apps, storage queue, and SQL Database. De lo contrario, el sondeo podría informar de un back-end en buen estado cuando realmente se producen errores en partes críticas de la aplicación.Otherwise, the probe might report a healthy backend when critical parts of the application are actually failing. Por otro lado, no use el sondeo de estado para comprobar los servicios de prioridad inferior.On the other hand, don't use the health probe to check lower priority services. Por ejemplo, si un servicio de correo electrónico queda fuera de servicio, la aplicación puede cambiar a un segundo proveedor o simplemente enviar los mensajes de correo electrónico más tarde.For example, if an email service goes down the application can switch to a second provider or just send emails later. Para obtener más información sobre este patrón de diseño, vea el patrón de supervisión de puntos de conexión de mantenimiento.For further discussion of this design pattern, see Health Endpoint Monitoring Pattern.

SQL DatabaseSQL Database

Use la replicación geográfica activa para crear una réplica secundaria legible en una región diferente.Use Active Geo-Replication to create a readable secondary replica in a different region. Puede tener hasta cuatro réplicas secundarias legibles.You can have up to four readable secondary replicas. Conmute por error a una base de datos secundaria si la base de datos principal da error o debe desconectarse.Fail over to a secondary database if your primary database fails or needs to be taken offline. La replicación geográfica activa puede configurarse para cualquier base de datos de cualquier grupo de bases de datos elásticas.Active Geo-Replication can be configured for any database in any elastic database pool.

Cosmos DBCosmos DB

Cosmos DB admite la replicación geográfica entre regiones con arquitectura multimaestro (varias regiones de escritura).Cosmos DB supports geo-replication across regions with multi-master (multiple write regions). Como alternativa, puede designar una región como la región de escritura y las demás como réplicas de solo lectura.Alternatively, you can designate one region as the writable region and the others as read-only replicas. Si se produce una interrupción regional del sistema, puede conmutar por error y seleccionar otra región como la región de escritura.If there is a regional outage, you can fail over by selecting another region to be the write region. El SDK de cliente envía automáticamente las solicitudes de escritura a la región de escritura actual, por lo que no es necesario actualizar la configuración del cliente después de una conmutación por error.The client SDK automatically sends write requests to the current write region, so you don't need to update the client configuration after a failover. Para obtener más información, consulte distribución de datos globales con Azure Cosmos dB.For more information, see Global data distribution with Azure Cosmos DB.

Nota

Todas las réplicas pertenecen al mismo grupo de recursos.All of the replicas belong to the same resource group.

AlmacenamientoStorage

Por Azure Storage, use el almacenamiento con redundancia geográfica con acceso de lectura (RA-grs).For Azure Storage, use read-access geo-redundant storage (RA-GRS). Con el almacenamiento RA-GRS, los datos se replican en una región secundaria.With RA-GRS storage, the data is replicated to a secondary region. Tiene acceso de solo lectura a los datos de la región secundaria mediante un punto de conexión independiente.You have read-only access to the data in the secondary region through a separate endpoint. Si se produce una interrupción regional o una situación de desastre, el equipo de Azure Storage puede decidir realizar una conmutación por error geográfica a la región secundaria.If there is a regional outage or disaster, the Azure Storage team might decide to perform a geo-failover to the secondary region. En este caso, no es necesario que el cliente intervenga de ninguna forma.There is no customer action required for this failover.

Para Queue Storage, cree una cola de copia de seguridad en la región secundaria.For Queue storage, create a backup queue in the secondary region. Durante la conmutación por error, la aplicación puede usar la cola de copia de seguridad hasta que la región primaria vuelva a estar disponible.During failover, the app can use the backup queue until the primary region becomes available again. De este modo, la aplicación puede seguir procesando nuevas solicitudes.That way, the application can still process new requests.

Consideraciones de disponibilidad: puerta delanteraAvailability considerations - Front Door

La puerta delantera conmuta por error automáticamente si la región primaria deja de estar disponible.Front Door automatically fails over if the primary region becomes unavailable. Cuando la puerta delantera conmuta por error, hay un período de tiempo (normalmente de aproximadamente 20-60 segundos) cuando los clientes no pueden acceder a la aplicación.When Front Door fails over, there is a period of time (usually about 20-60 seconds) when clients cannot reach the application. La duración viene determinada por los siguientes factores:The duration is affected by the following factors:

  • Frecuencia de sondeos de estado.Frequency of health probes. Cuanto más frecuentes se envían los sondeos de mantenimiento, la puerta delantera más rápida puede detectar el tiempo de inactividad o el back-end correcto.The more frequent the health probes are sent, the faster Front Door can detect downtime or the backend coming back healthy.
  • Configuración del tamañode la muestra.Sample size configuration. Esta configuración controla el número de muestras que se requieren para que el sondeo de estado detecte que el back-end principal se ha vuelto inaccesible.This configuration controls how many samples are required for the health probe to detect that the primary backend has become unreachable. Si este valor es demasiado bajo, podría obtener falsos positivos de problemas intermitentes.If this value is too low, you could get false positives from intermittent issues.

La puerta delantera es un posible punto de error en el sistema.Front Door is a possible failure point in the system. Si el servicio no funciona, los clientes no pueden acceder a la aplicación durante el tiempo de inactividad.If the service fails, clients cannot access your application during the downtime. Revise el acuerdo de nivel de servicio (SLA) de la puerta delantera y determine si el uso de la puerta delantera solo cumple sus requisitos empresariales para lograr alta disponibilidad.Review the Front Door service level agreement (SLA) and determine whether using Front Door alone meets your business requirements for high availability. Si no es así, considere la posibilidad de agregar otra solución de administración de tráfico como reserva.If not, consider adding another traffic management solution as a fallback. Si se produce un error en el servicio de la puerta delantera, cambie los registros de nombre canónico (CNAME) en DNS para que apunten a otro servicio de administración de tráfico.If the Front Door service fails, change your canonical name (CNAME) records in DNS to point to the other traffic management service. Este paso debe realizarse manualmente, y la aplicación dejará de estar disponible hasta que se propaguen los cambios de DNS.This step must be performed manually, and your application will be unavailable until the DNS changes are propagated.

Consideraciones sobre disponibilidad: SQL DatabaseAvailability Considerations - SQL Database

El objetivo de punto de recuperación (RPO) y el tiempo de recuperación Estimado (ERT) para SQL Database se documentan en información general sobre la continuidad del negocio con Azure SQL Database.The recovery point objective (RPO) and estimated recovery time (ERT) for SQL Database are documented in Overview of business continuity with Azure SQL Database.

Consideraciones sobre disponibilidad: almacenamientoAvailability Considerations - Storage

RA-GRS proporciona almacenamiento duradero, pero es importante comprender lo que sucede durante una interrupción:RA-GRS storage provides durable storage, but it's important to understand what can happen during an outage:

  • Si se produce una interrupción en el almacenamiento, habrá un período de tiempo en que no tenga acceso de escritura a los datos.If a storage outage occurs, there will be a period of time when you don't have write-access to the data. Aún así, puede leer desde el punto de conexión secundario durante la interrupción.You can still read from the secondary endpoint during the outage.

  • Si una interrupción regional o una situación de desastre afecta a la ubicación principal y no se pueden recuperar los datos, el equipo de Azure Storage puede decidir realizar una conmutación por error geográfica a la región secundaria.If a regional outage or disaster affects the primary location and the data there cannot be recovered, the Azure Storage team may decide to perform a geo-failover to the secondary region.

  • La replicación de datos en la región secundaria se realiza de forma asincrónica.Data replication to the secondary region is performed asynchronously. Por lo tanto, si se realiza una conmutación por error geográfica, podría haber alguna pérdida de datos si los datos no se pueden recuperar de la región primaria.Therefore, if a geo-failover is performed, some data loss is possible if the data can't be recovered from the primary region.

  • Los errores transitorios, como una interrupción de la red, no desencadenarán una conmutación por error de almacenamiento.Transient failures, such as a network outage, will not trigger a storage failover. Diseñe la aplicación para que sea resistente a los errores transitorios.Design your application to be resilient to transient failures. Posibles remedios:Possible mitigations:

    • Realizar las operaciones de lectura desde la región secundaria.Read from the secondary region.
    • Cambiar temporalmente a otra cuenta de almacenamiento con nuevas operaciones de escritura (por ejemplo, poner en cola los mensajes).Temporarily switch to another storage account for new write operations (for example, to queue messages).
    • Copiar los datos de la región secundaria a otra cuenta de almacenamiento.Copy data from the secondary region to another storage account.
    • Proporcionan funcionalidad reducida hasta que el sistema con errores conmute por recuperación.Provide reduced functionality until the system fails back.

Para más información, vea Qué hacer si se produce una interrupción del servicio Azure Storage.For more information, see What to do if an Azure Storage outage occurs.

Consideraciones sobre facilidad de uso: SQL DatabaseManageability Considerations - SQL Database

Si se produce un error en la base de datos principal, realice una conmutación por error manual a la base de datos secundaria.If the primary database fails, perform a manual failover to the secondary database. Consulte restauración de una Azure SQL Database o conmutación por error a una secundaria.See Restore an Azure SQL Database or failover to a secondary. La base de datos secundaria sigue siendo de solo lectura hasta que se realiza la conmutación por error.The secondary database remains read-only until you fail over.