# Georedundanz

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

Diese Referenzarchitektur zeigt, wie eine Azure App Service-Anwendung in mehreren Regionen betrieben werden kann, um hohe Verfügbarkeit zu erreichen.

{% hint style="info" %}
Geo-Redundanz / Hochverfügbarkeit ist derzeit nur für den (primären) SCEPman App Service verfügbar. Begründung: Die Benutzer von Certificate Master sind Administratoren mit typischerweise nicht zeitkritischen Zertifikats-Workloads und Kenntnissen über Verfahren zum Umgang mit solchen Szenarien.
{% endhint %}

## Architektur

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

Wie oben dargestellt, nutzt die geo-redundante Bereitstellung ein Azure Traffic Manager-Profil, das (DNS-basierte) Anfragen an die SCEPman CA an ein Paar von SCEPman-Instanzen weiterleitet, die in unterschiedlichen Geolokationen bereitgestellt werden. Die einzelnen SCEPman-Instanzen kommunizieren mit demselben Key Vault, Storage Account und AAD und teilen sich dadurch dieselbe Root CA. Neben dem Lastenausgleich des Traffics auf Basis einer Reihe von Routing-Algorithmen, aus denen Sie wählen können, prüft Traffic Manager auch kontinuierlich beide SCEPman-Instanzen. Falls eine Instanz nicht verfügbar wird, wird sämtlicher Traffic automatisch an die verfügbare Instanz geleitet.

Microsoft behandelt in [diesem Artikel](https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/app-service-web-app/multi-region) drei verschiedene Strategien zur Geo-Redundanz, die zur Verwaltung dieses Architekturtps verwendet werden können. In unserem Fall verwenden wir jedoch den **Active/Active** Ansatz. Das bedeutet, dass beide Regionen aktiv sind und Anfragen zwischen ihnen per Lastenausgleich verteilt werden. Wenn eine Region aus irgendeinem Grund nicht verfügbar ist oder eine gewisse Latenz aufweist, leitet Traffic Manager den Datenverkehr an den zweiten App Service weiter.

{% hint style="info" %}
Stellen Sie sicher, dass Sie einen Blick auf [Microsofts Liste der verfügbaren Regionen](https://learn.microsoft.com/en-us/azure/reliability/regions-list#azure-regions-list-1) und die jeweils zugehörige Partnerregion werfen. Die Verwendung ungepaarter Regionen kann bei der Einrichtung dieser Redundanz zu Problemen führen.
{% endhint %}

## Workflow

* Zuerst wird der SCEPman App Service in eine andere Geolokation geklont.
* Dann wird Traffic Manager konfiguriert und seine Endpoints werden hinzugefügt und mit beiden SCEPman App Services verbunden.
* Anschließend werden die benutzerdefinierten Domänen für beide App Services konfiguriert.
* Schließlich wird der DNS-CNAME-Eintrag konfiguriert, der Ihre benutzerdefinierte Domäne auf den Traffic Manager verweist.

### App klonen

Um einen App Service zu klonen, müssen Sie zunächst einen neuen **App Service Plan** in einer zweiten Geolokation erstellen; dort wird die geklonte App bereitgestellt. Sie können ihn in derselben SCEPman-Ressourcengruppe oder in einer neuen erstellen. Siehe Screenshot unten:

![Erstellung eines neuen App Service Plans mit Windows](https://2075553437-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" %}
Anforderungen für das Klonen des App Service (über [SCEPman PowerShell-Modul](https://docs.scepman.com/de/scepman-bereitstellung/permissions/post-installation-config#acquire-and-run-the-scepman-installation-powershell-module)):

* SCEPman **2.2** oder höher
* SCEPman PowerShell-Modul **1.6.3.0** oder höher
* Global-Admin-Berechtigungen
  {% endhint %}

Der folgende CMDlet-Befehl klont Ihren SCEPman App Service und konfiguriert alle erforderlichen Berechtigungen:

```
New-SCEPmanClone -SourceAppServiceName <Name Ihres SCEPman App Service> -TargetAppServiceName <Name Ihres geklonten App Service> -TargetAppServicePlan <Ihr zweiter App Service Plan in der zweiten Geolokation> -SearchAllSubscriptions 6>&1
```

* **SourceAppServiceName:** Der Name des vorhandenen SCEPman App Service.
* **TargetAppServiceName:** Der Name des neu geklonten SCEPman App Service.
* **TargetAppServicePlan:** Der Name des App Service Plans für die geklonte SCEPman-Instanz. Der App Service Plan muss bereits in der TargetResourceGroup vorhanden sein.
* **SourceResourceGroup:** (Optional) Die Azure-Ressourcengruppe, die den vorhandenen SCEPman App Service hostet. Für die automatische Erkennung leer lassen.
* **TargetResourceGroup:** (Optional) Die Azure-Ressourcengruppe, die den neuen SCEPman App Service hostet. Leer lassen, um die Ressourcengruppe des App Service Plans automatisch zu erkennen.
* **SourceSubscriptionId:** (Optional) Die ID des Abonnements, in dem SCEPman installiert ist. Kann weggelassen werden, wenn es bereits in az vorab ausgewählt ist, oder verwenden Sie das Flag SearchAllSubscriptions, um alle zugänglichen Abonnements zu durchsuchen
* **TargetSubscriptionId:** (Optional) Die ID des Abonnements, in dem SCEPman installiert werden soll. Kann weggelassen werden, wenn sie mit SourceSubscriptionId identisch ist.
* **SearchAllSubscriptions:** (Optional) Setzen Sie dieses Flag, um alle Abonnements nach dem SCEPman App Service zu durchsuchen. Andernfalls wählen Sie das richtige Abonnement vorab in az aus oder übergeben Sie die korrekte SubscriptionId.

### **Beispiel**

Einen vorhandenen SCEPman App Service "as-scepman-nrg5reuov63vk" klonen

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

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

Nachdem die Bereitstellung erfolgreich abgeschlossen wurde, navigieren Sie zum geklonten App Service und prüfen Sie auf der SCEPman-Startseite, ob alle Berechtigungen korrekt gesetzt sind und alles grün und verbunden ist (dies kann bis zu 3 Minuten nach Abschluss der Bereitstellung dauern).

![](https://2075553437-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" %}
Um einen Single Point of Failure zu vermeiden, empfehlen wir, [WEBSITE\_RUN\_FROM\_PACKAGE](https://docs.scepman.com/de/scepman-konfiguration/application-artifacts) des geklonten App Service auf den zweiten unabhängigen Artifact-Host in Azure zu setzen.

Produktionskanal:

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

Der ursprüngliche App Service sollte standardmäßig den ersten Artifact-Host haben, der auf ein GitHub-Repository verweist. Weitere Informationen finden Sie unter [Anwendungsartefakte](https://docs.scepman.com/de/scepman-konfiguration/application-artifacts).
{% endhint %}

{% hint style="warning" %}
Das Klonen eines App Service hat einige Einschränkungen, wie zum Beispiel **Autoskalierung** -Einstellungen, **Sicherungszeitplan** -Einstellungen, **App Insights**, usw. Konfigurationen, die nicht geklont werden können, müssen im geklonten App Service manuell erneut konfiguriert werden. Darüber hinaus werden Änderungen an den Einstellungen eines App Service nicht automatisch mit dem zweiten App Service synchronisiert, wenn sie nach dem Klonvorgang vorgenommen werden. Weitere Informationen finden Sie unter <https://docs.microsoft.com/en-us/azure/app-service/app-service-web-app-cloning#current-restrictions>
{% endhint %}

### Traffic Manager einrichten

Befolgen Sie die folgenden Schritte, um Traffic Manager zu erstellen und zu konfigurieren und den Traffic zwischen beiden SCEPman-Instanzen auszugleichen:

1. Suchen Sie im Marketplace nach **Traffic Manager-Profil** und klicken Sie auf **Erstellen**.
2. Füllen Sie die Felder aus und wählen Sie Ihre SCEPman-Ressourcengruppe

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

1. Dann klicken Sie auf **Erstellen**.
2. Nachdem Ihr Traffic Manager bereitgestellt wurde, öffnen Sie ihn und klicken Sie auf **Konfiguration**
3. Ändern Sie die Einstellungen wie folgt und speichern Sie

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

#### Hinzufügen von Endpoints

#### Erster Endpoint

1. Dann unter **Einstellungen** wählen Sie **Endpoints**
2. Wählen Sie "Azure Endpoint" als **Typ**, geben Sie einen Namen für den ersten Endpoint an, und "App Service" als **Zielressourcentyp**
3. Wählen Sie Ihren primären SCEPman App Service als **Zielressource**

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

#### Zweiter Endpoint

Wiederholen Sie dieselben Schritte für den zweiten Endpoint und wählen Sie den zweiten (geklonten) SCEPman App Service als **Zielressource**

### Konfiguration der benutzerdefinierten Domäne

Nach erfolgreicher Bereitstellung und Konfiguration der Traffic Manager-Endpoints müssen Sie die **gleiche** benutzerdefinierte Domäne für **beide** SCEPman-Instanzen wie beschrieben einrichten [hier](https://docs.scepman.com/de/azure-konfiguration/custom-domain).

Stellen Sie sicher, dass Sie den Wert der Einstellung **AppConfig:BaseUrl** für **beide** der SCEPman App Services ändern, nachdem die benutzerdefinierten Domänen erstellt wurden.

### DNS-Konfiguration

In der Traffic Manager **Übersicht,** finden Sie den DNS-Namen, der zu Ihrem DNS hinzugefügt werden muss

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

* Navigieren Sie zu Ihrem DNS-Verwaltungsdienst (z. B. **Azure DNS-Zonen**)
* Entfernen Sie eventuell vorhandene falsche CNAME-Einträge, die auf eine der Azure App Service-Instanzen verweisen, und fügen Sie einen CNAME hinzu, der die erstellte SCEPman-benutzerdefinierte Domäne auf den Traffic Manager-DNS-Namen abbildet. Im folgenden Beispiel sollte der CNAME auf **gk-blueprint-scepman.trafficmanager.net**.

{% hint style="info" %}
In **der Azure DNS-Zone**, müssen Sie zum Ändern eines Eintrags zunächst die DNS-Sperre entfernen, indem Sie zu **Sperren**.
{% endhint %}

{% hint style="info" %}
Nach Abschluss der Konfiguration stellen Sie sicher, dass Sie die SCEP-Server-URL in Ihren SCEP-Profilen in Intune aktualisieren. Die neue URL sollte die benutzerdefinierte Domäne sein, die Sie erstellt haben, mit "/certsrv/mscep/mscep.dll" am Ende.

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

### Geo-Redundanz des Storage Account

Der für SCEPman verwendete Storage Account sollte ebenfalls auf Redundanz konfiguriert werden. Die standardmäßige SCEPman-Einrichtung verwendet lokal redundanten Speicher (LRS), der nur eine einzige Region nutzt. Konfigurieren Sie beispielsweise geo-redundanten Speicher (GRS).

![Dialog zur Redundanz des Storage Account im Azure Portal](https://2075553437-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)
