# Redundancia geográfica

{% hint style="warning" %}
solo en SCEPman Enterprise Edition
{% endhint %}

Esta arquitectura de referencia muestra cómo ejecutar una aplicación de Azure App Service en varias regiones para lograr alta disponibilidad.

{% hint style="info" %}
La geo-redundancia / alta disponibilidad está actualmente disponible solo para el App Service principal de SCEPman. Justificación: los usuarios de Certificate Master son administradores con cargas de trabajo de certificados normalmente no críticas en cuanto al tiempo y con conocimiento de los procedimientos para manejar tales escenarios.
{% endhint %}

## Arquitectura

![](https://4115997120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2Fgit-blob-6865890fc78414e9600419ba8897a3b76803ff92%2F2022-06-23%2012_32_59-GeoRedundancy.png?alt=media)

Como se ilustra arriba, la implementación georreduntante aprovecha un perfil de Azure Traffic Manager, que dirige las solicitudes (basadas en DNS) a la CA de SCEPman hacia un par de instancias de SCEPman desplegadas en diferentes ubicaciones geográficas. Las instancias individuales de SCEPman se comunican con el mismo KeyVault, Storage Account y AAD, y por lo tanto comparten la misma Root CA. Además de equilibrar el tráfico en función de un conjunto de algoritmos de enrutamiento entre los que puede elegir, Traffic Manager también sondea constantemente ambas instancias de SCEPman. En caso de que una instancia deje de estar disponible, todo el tráfico se enrutará automáticamente a la instancia disponible.

Microsoft analiza en [este artículo](https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/app-service-web-app/multi-region) tres estrategias diferentes de Geo-Redundancy que pueden utilizarse para gestionar este tipo de arquitectura. Sin embargo, en nuestro caso utilizaremos el enfoque **Active/Active** . Esto significa que ambas regiones están activas y las solicitudes se equilibran entre ellas. Si una región deja de estar disponible o presenta cierta latencia por cualquier motivo, Traffic Manager redirigirá el tráfico al segundo App Service.

{% hint style="info" %}
Asegúrese de echar un vistazo a [la lista de regiones disponibles de Microsoft](https://learn.microsoft.com/en-us/azure/reliability/regions-list#azure-regions-list-1) y a su región emparejada correspondiente. Usar regiones no emparejadas puede provocar problemas durante la configuración de esta redundancia.
{% endhint %}

## Flujo de trabajo

* Primero, el App Service de SCEPman se clonará en otra ubicación geográfica.
* Luego, se configura Traffic Manager y se agregan y conectan sus endpoints a ambos App Services de SCEPman.
* Luego, se configuran los dominios personalizados para ambos App Services.
* Por último, se configura el registro DNS CNAME, apuntando su dominio personalizado a Traffic Manager.

### Clonar aplicación

Para clonar un App Service, primero debe crear un nuevo **App Service Plan** en una segunda ubicación geográfica; allí se implementará la aplicación clonada. Puede crearlo en el mismo grupo de recursos de SCEPman o en uno nuevo. Vea la captura de pantalla a continuación:

![Creación de un nuevo App Service Plan con Windows](https://4115997120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2Fgit-blob-87bb339bda3436681a5fd22707345bb6d4d5f1f2%2F2022-06-15%2013_29_57-Create%20App%20Service%20Plan.png?alt=media)

{% hint style="info" %}
Requisitos para clonar App Service (mediante [SCEPman PowerShell Module](https://docs.scepman.com/es/implementacion-de-scepman/permissions/post-installation-config#acquire-and-run-the-scepman-installation-powershell-module)):

* SCEPman **2.2** o superior
* SCEPman PowerShell Module **1.6.3.0** o superior
* permisos de Global Admin
  {% endhint %}

El siguiente comando CMDlet clonará su App Service de SCEPman y configurará todos los permisos necesarios:

```
New-SCEPmanClone -SourceAppServiceName <Nombre de su App Service de SCEPman> -TargetAppServiceName <Nombre de su App Service clonado> -TargetAppServicePlan <Su segundo App Service Plan en la segunda ubicación geográfica> -SearchAllSubscriptions 6>&1
```

* **SourceAppServiceName:** El nombre del App Service de SCEPman existente.
* **TargetAppServiceName:** El nombre del nuevo App Service de SCEPman clonado.
* **TargetAppServicePlan:** El nombre del App Service Plan para la instancia clonada de SCEPman. El App Service Plan ya debe existir en TargetResourceGroup.
* **SourceResourceGroup:** (Opcional) El grupo de recursos de Azure que aloja el App Service de SCEPman existente. Déjelo vacío para la autodetección.
* **TargetResourceGroup:** (Opcional) El grupo de recursos de Azure que alojará el nuevo App Service de SCEPman. Déjelo vacío para detectar automáticamente el grupo de recursos del App Service Plan.
* **SourceSubscriptionId:** (Opcional) El ID de la suscripción donde SCEPman está instalado. Puede omitirse si ya está preseleccionado en az o usar la marca SearchAllSubscriptions para buscar en todas las suscripciones accesibles
* **TargetSubscriptionId:** (Opcional) El ID de la suscripción donde se instalará SCEPman. Puede omitirse si es el mismo que SourceSubscriptionId.
* **SearchAllSubscriptions:** (Opcional) Establezca esta marca para buscar en todas las suscripciones el App Service de SCEPman. De lo contrario, preseleccione la suscripción correcta en az o pase el SubscriptionId correcto.

### **Ejemplo**

Clonar un App Service de SCEPman existente "as-scepman-nrg5reuov63vk"

```
New-SCEPmanClone -SourceAppServiceName as-scepman-nrg5reuov63vk -TargetAppServiceName as-scepman-clone -TargetAppServicePlan asp-scepman-geo2 -SearchAllSubscriptions 6>&1
```

![](https://4115997120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2Fgit-blob-30e1cb5d7dfe6877face335d0524bae25d402d88%2F2022-06-15%2014_29_28-SCEPmanCloneApp.png?alt=media)

Después de que la implementación haya finalizado correctamente, vaya al App Service clonado y compruebe en la página principal de SCEPman que todos los permisos están configurados correctamente y que todo está en verde y conectado (esto puede tardar hasta 3 minutos después de que finalice la implementación).

![](https://4115997120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2Fgit-blob-8faef5c52ed690e841b35c50d979d861bb055725%2F2022-06-21%2010_32_37.png?alt=media)

{% hint style="info" %}
Para evitar un único punto de falla, recomendamos establecer [WEBSITE\_RUN\_FROM\_PACKAGE](https://docs.scepman.com/es/configuracion-de-scepman/application-artifacts) del App Service clonado al segundo host de artefactos independiente en Azure.

Canal de producción:

`https://install.scepman.com/dist/Artifacts.zip`

El App Service original debería tener por defecto el primer host de artefactos, que apunta a un repositorio de GitHub. Para más información, consulte [Artefactos de aplicación](https://docs.scepman.com/es/configuracion-de-scepman/application-artifacts).
{% endhint %}

{% hint style="warning" %}
Clonar un App Service tiene algunas restricciones, como **autoscale** configuración, **programación de copias de seguridad** configuración, **App Insights**, etc.. Las configuraciones que no puedan clonarse deben configurarse manualmente de nuevo en el App Service clonado. Además, los cambios en la configuración de un AppService no se sincronizarán automáticamente con el segundo App Service si se realizan después de la operación de clonación. Para más información visite <https://docs.microsoft.com/en-us/azure/app-service/app-service-web-app-cloning#current-restrictions>
{% endhint %}

### Configurar Traffic Manager

Siga los pasos a continuación para crear y configurar Traffic Manager y equilibrar el tráfico entre ambas instancias de SCEPman:

1. Busque en Marketplace **perfil de Traffic Manager** y haga clic en **Crear**.
2. Complete los campos y elija su grupo de recursos de SCEPman

![](https://4115997120-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LoGejQeUQcw7lqnQ3WX%2Fsync%2F15d2d4d57e5c253ac38108a08f469873f4c81caf.png?generation=1595318560386415\&alt=media)

1. Luego haga clic en **Crear**.
2. Después de que Traffic Manager se haya implementado, ábralo y haga clic en **Configuración**
3. Cambie la configuración de la siguiente manera y guarde

![Configuración de Traffic Manager](https://4115997120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2Fgit-blob-7d6832befd58e8a12ec6adcac01cf7cf57d8458f%2FReplaceTrafficManagerSS.png?alt=media)

#### Agregar endpoints

#### Primer endpoint

1. Luego, en **Configuración** elija **Endpoints**
2. Elija "Azure Endpoint" como **Escribe**, proporcione un nombre para el primer endpoint y "App Service" como **Tipo de recurso de destino**
3. Elija su App Service principal de SCEPman como **Recurso de destino**

![Traffic Manager, configuración de endpoint](https://4115997120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2Fgit-blob-4f777e4983920544cd23a54cd397231ce63d4c41%2Fscepman_trafficmanager3.png?alt=media)

#### Segundo endpoint

Repita los mismos pasos para el segundo endpoint y elija el segundo App Service de SCEPman (clonado) como **Recurso de destino**

### Configuración de dominio personalizado

Después de una implementación y configuración correctas de los endpoints de Traffic Manager, debe configurar el **mismo** dominio personalizado para **ambas** instancias de SCEPman como se describe [aquí](https://docs.scepman.com/es/configuracion-de-azure/custom-domain).

Asegúrese de cambiar el valor de la configuración **AppConfig:BaseUrl** para **ambas** de los App Services de SCEPman después de que se hayan creado los dominios personalizados.

### Configuración de DNS

En la **Vista general** de Traffic Manager, encontrará el nombre DNS que debe agregarse a su DNS

![Vista general de Traffic Manager](https://4115997120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2Fgit-blob-d80894aab4311887f9e7b9a063817e0383c89601%2Fscepman_trafficmanager4.png?alt=media)

* Vaya a su servicio de administración de DNS (p. ej. **Azure DNS Zones**)
* Elimine cualquier entrada CNAME incorrecta que pueda existir apuntando a una de las instancias de Azure App Service y agregue un CNAME que asigne el dominio personalizado de SCEPman creado al nombre DNS de Traffic Manager. En el ejemplo siguiente, el CNAME debe apuntar a **gk-blueprint-scepman.trafficmanager.net**.

{% hint style="info" %}
En **Azure DNS Zone**, para modificar un registro, primero debe quitar el bloqueo de DNS navegando a **Locks**.
{% endhint %}

{% hint style="info" %}
Al completar la configuración, asegúrese de actualizar la URL del servidor SCEP en su(s) perfil(es) SCEP en Intune. La nueva URL debe ser el dominio personalizado que ha creado con "/certsrv/mscep/mscep.dll" al final.

Ejemplo: <https://scepman.contoso.com/certsrv/mscep/mscep.dll>
{% endhint %}

### Redundancia de Storage Account geográfica

El Storage Account utilizado para SCEPman también debe configurarse para redundancia. La configuración predeterminada de SCEPman usa Locally Redundant Storage (LRS), que utiliza solo una única región. Por ejemplo, configure Geo-redundant storage (GRS).

![Diálogo de redundancia de Storage Account en Azure Portal](https://4115997120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2Fgit-blob-ef32806a7e8d3c5c76c8b9c5191a527f5bae2037%2Fstorage-account-redundancy%20\(1\).png?alt=media)
