# Géo-redondance

{% hint style="warning" %}
Édition SCEPman Enterprise uniquement
{% endhint %}

Cette architecture de référence montre comment exécuter une application Azure App Service dans plusieurs régions afin d’obtenir une haute disponibilité.

{% hint style="info" %}
La redondance géographique / haute disponibilité n’est actuellement disponible que pour l’App Service SCEPman (principal). Justification : les utilisateurs de Certificate Master sont des administrateurs dont les charges de travail de certificats ne sont généralement pas critiques en temps et qui connaissent les procédures permettant de gérer de tels scénarios.
{% endhint %}

## Architecture

![](https://129332256-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)

Comme illustré ci-dessus, le déploiement géoredondant s’appuie sur un profil Azure Traffic Manager, qui achemine les requêtes (basées sur DNS) vers l’AC SCEPman vers une paire d’instances SCEPman déployées dans différentes géolocalisations. Les différentes instances SCEPman communiquent avec le même KeyVault, le même Storage Account et AAD, et partagent ainsi la même Root CA. En plus d’équilibrer le trafic en fonction d’un ensemble d’algorithmes de routage parmi lesquels vous pouvez choisir, Traffic Manager sonde également en permanence les deux instances de SCEPman. Si une instance devient indisponible, tout le trafic sera automatiquement redirigé vers l’instance disponible.

Microsoft en parle dans [cet article](https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/app-service-web-app/multi-region) trois stratégies différentes de redondance géographique pouvant être utilisées pour gérer ce type d’architecture. Cependant, dans notre cas, nous utiliserons l’approche **Actif/Actif** . Cela signifie que les deux régions sont actives et que les requêtes sont réparties en charge entre elles. Si une région devient indisponible ou présente une latence pour quelque raison que ce soit, Traffic Manager redirigera le trafic vers le second App Service.

{% hint style="info" %}
Assurez-vous de consulter [la liste Microsoft des régions disponibles](https://learn.microsoft.com/en-us/azure/reliability/regions-list#azure-regions-list-1) et leur région jumelée correspondante. L’utilisation de régions non jumelées peut entraîner des problèmes lors de la mise en place de cette redondance.
{% endhint %}

## Workflow

* Tout d’abord, l’App Service SCEPman sera cloné dans une autre géolocalisation.
* Ensuite, Traffic Manager est configuré et ses Endpoints sont ajoutés et connectés aux deux App Services SCEPman.
* Ensuite, les domaines personnalisés des deux App Services sont configurés.
* Enfin, l’enregistrement DNS CNAME est configuré, pointant votre domaine personnalisé vers Traffic Manager.

### Cloner l’application

Pour cloner un App Service, vous devez d’abord créer un nouveau **App Service Plan** dans une deuxième géolocalisation ; c’est là que l’application clonée sera déployée. Vous pouvez le créer dans le même groupe de ressources SCEPman ou dans un nouveau. Voir la capture d’écran ci-dessous :

![Création d’un nouveau App Service Plan avec Windows](https://129332256-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" %}
Exigences pour le clonage d’un App Service (via [le module PowerShell SCEPman](https://docs.scepman.com/fr/deploiement-scepman/permissions/post-installation-config#acquire-and-run-the-scepman-installation-powershell-module)):

* SCEPman **2.2** ou supérieur
* le module PowerShell SCEPman **1.6.3.0** ou supérieur
* autorisations d’administrateur global
  {% endhint %}

La commande CMDlet suivante clonera votre App Service SCEPman et configurera toutes les autorisations requises :

```
New-SCEPmanClone -SourceAppServiceName <Votre nom d’App Service SCEPman> -TargetAppServiceName <Votre nom d’App Service cloné> -TargetAppServicePlan <Votre deuxième App Service Plan dans la deuxième géolocalisation> -SearchAllSubscriptions 6>&1
```

* **SourceAppServiceName :** Le nom de l’App Service SCEPman existant.
* **TargetAppServiceName :** Le nom du nouvel App Service SCEPman cloné.
* **TargetAppServicePlan :** Le nom du App Service Plan pour l’instance SCEPman clonée. Le App Service Plan doit déjà exister dans le TargetResourceGroup.
* **SourceResourceGroup :** (Facultatif) Le groupe de ressources Azure hébergeant l’App Service SCEPman existant. Laissez vide pour la détection automatique.
* **TargetResourceGroup :** (Facultatif) Le groupe de ressources Azure hébergeant le nouvel App Service SCEPman. Laissez vide pour détecter automatiquement le groupe de ressources du App Service Plan.
* **SourceSubscriptionId :** (Facultatif) L’ID de l’abonnement où SCEPman est installé. Peut être omis s’il est déjà présélectionné dans az, ou utilisez l’indicateur SearchAllSubscriptions pour rechercher tous les abonnements accessibles
* **TargetSubscriptionId :** (Facultatif) L’ID de l’abonnement où SCEPman doit être installé. Peut être omis s’il est identique à SourceSubscriptionId.
* **SearchAllSubscriptions :** (Facultatif) Définissez cet indicateur pour rechercher l’App Service SCEPman dans tous les abonnements. Sinon, présélectionnez le bon abonnement dans az ou transmettez le bon SubscriptionId.

### **Exemple**

Cloner un App Service SCEPman existant "as-scepman-nrg5reuov63vk"

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

![](https://129332256-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)

Une fois le déploiement terminé avec succès, accédez à l’App Service cloné et vérifiez sur la page d’accueil de SCEPman que toutes les autorisations sont correctement définies et que tout est vert et connecté (cela peut prendre jusqu’à 3 minutes après la fin du déploiement).

![](https://129332256-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" %}
Pour éviter un point de défaillance unique, nous recommandons de définir le [WEBSITE\_RUN\_FROM\_PACKAGE](https://docs.scepman.com/fr/configuration-scepman/application-artifacts) de l’App Service cloné vers le second hébergeur d’artefacts indépendant sur Azure.

Canal de production :

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

L’App Service d’origine doit avoir par défaut le premier hébergeur d’artefacts, qui pointe vers un dépôt GitHub. Pour plus d’informations, veuillez consulter [Artefacts de l’application](https://docs.scepman.com/fr/configuration-scepman/application-artifacts).
{% endhint %}

{% hint style="warning" %}
Le clonage d’un App Service comporte certaines restrictions, telles que **autoscaling** paramètres, **planification des sauvegardes** paramètres, **App Insights**, etc. Les configurations qui ne peuvent pas être clonées doivent être reconfigurées manuellement sur l’App Service cloné. De plus, les modifications apportées aux paramètres d’un AppService ne seront pas synchronisées automatiquement avec le second App Service si elles sont effectuées après l’opération de clonage. Pour plus d’informations, consultez <https://docs.microsoft.com/en-us/azure/app-service/app-service-web-app-cloning#current-restrictions>
{% endhint %}

### Configurer Traffic Manager

Suivez les étapes ci-dessous pour créer et configurer Traffic Manager et équilibrer le trafic entre les deux instances SCEPman :

1. Recherchez dans la place de marché **profil Traffic Manager** et cliquez sur **Créer**.
2. Renseignez les champs et choisissez votre groupe de ressources SCEPman

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

1. Puis cliquez sur **Créer**.
2. Une fois Traffic Manager déployé, ouvrez-le et cliquez sur **Configuration**
3. Modifiez les paramètres comme suit et enregistrez

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

#### Ajout d’Endpoints

#### Premier Endpoint

1. Puis sous **Settings** choisissez **Endpoints**
2. Choisissez "Azure Endpoint" comme **Type**, donnez un nom au premier Endpoint, et "App Service" comme **Type de ressource cible**
3. Choisissez votre App Service SCEPman principal comme **Ressource cible**

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

#### Deuxième Endpoint

Répétez les mêmes étapes pour le deuxième endpoint et choisissez le deuxième App Service SCEPman (cloné) comme **Ressource cible**

### Configuration du domaine personnalisé

Après un déploiement et une configuration réussis des Endpoints de Traffic Manager, vous devez configurer le **même** domaine personnalisé pour **les deux** instances SCEPman comme décrit [ici](https://docs.scepman.com/fr/configuration-azure/custom-domain).

Assurez-vous de modifier la valeur du paramètre **AppConfig:BaseUrl** pour **les deux** des App Services SCEPman après la création des domaines personnalisés.

### Configuration DNS

Dans la **Vue d’ensemble** de Traffic Manager, vous trouverez le nom DNS à ajouter à votre DNS

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

* Accédez à votre service de gestion DNS (par exemple **Azure DNS Zones**)
* Supprimez toute éventuelle entrée CNAME incorrecte existante pointant vers l’une des instances Azure App Service et ajoutez un CNAME qui associe le domaine personnalisé SCEPman créé au nom DNS de Traffic Manager. Dans l’exemple ci-dessous, le CNAME doit pointer vers **gk-blueprint-scepman.trafficmanager.net**.

{% hint style="info" %}
Dans **Azure DNS Zone**, pour modifier un enregistrement, vous devez d’abord supprimer le verrou DNS en accédant à **Verrous**.
{% endhint %}

{% hint style="info" %}
Une fois la configuration terminée, veillez à mettre à jour l’URL du serveur SCEP dans votre ou vos profils SCEP dans Intune. La nouvelle URL doit être le domaine personnalisé que vous avez créé, avec "/certsrv/mscep/mscep.dll" à la fin.

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

### Redondance géographique du Storage Account

Le Storage Account utilisé pour SCEPman doit également être configuré pour la redondance. La configuration SCEPman par défaut utilise le stockage localement redondant (LRS), qui n’utilise qu’une seule région. Par exemple, configurez le stockage géoredondant (GRS).

![Boîte de dialogue de redondance du Storage account dans Azure Portal](https://129332256-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)
