# Georredudância

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

Esta arquitetura de referência mostra como executar uma aplicação do Azure App Service em múltiplas regiões para alcançar alta disponibilidade.

{% hint style="info" %}
A georredudância / alta disponibilidade está atualmente disponível apenas para o App Service principal do SCEPman. Justificativa: os utilizadores do Certificate Master são administradores com cargas de trabalho de certificados normalmente não críticas em termos de tempo e com conhecimento dos procedimentos para lidar com esses cenários.
{% endhint %}

## Arquitetura

![](/files/2e29609a6fc26d657e436f437b1bd6ddb2d0a8bd)

Como ilustrado acima, a implementação georredundante utiliza um perfil do Azure Traffic Manager, que encaminha pedidos (baseados em DNS) para a CA do SCEPman para um par de instâncias do SCEPman que são implementadas em diferentes localizações geográficas. As instâncias individuais do SCEPman comunicam com o mesmo KeyVault, Storage Account e AAD e, assim, partilham a mesma Root CA. Para além de equilibrar o tráfego com base num conjunto de algoritmos de encaminhamento que pode escolher, o Traffic Manager também verifica continuamente ambas as instâncias do SCEPman. Caso uma instância fique indisponível, todo o tráfego será automaticamente encaminhado para a instância disponível.

A Microsoft discute em [este artigo](https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/app-service-web-app/multi-region) três estratégias diferentes de Geo-Redundancy que podem ser usadas para gerir este tipo de arquitetura. No entanto, no nosso caso, vamos usar a abordagem **Active/Active** . Isto significa que ambas as regiões estão ativas e os pedidos são balanceados entre elas. Se uma região ficar indisponível ou tiver alguma latência por qualquer motivo, o Traffic Manager encaminhará o tráfego para o segundo App Service.

{% hint style="info" %}
Certifique-se de consultar [a lista de regiões disponíveis da Microsoft](https://learn.microsoft.com/en-us/azure/reliability/regions-list#azure-regions-list-1) e a respetiva região emparelhada. Usar regiões não emparelhadas pode levar a problemas durante a configuração desta redundância.
{% endhint %}

## Fluxo de trabalho

* Primeiro, o App Service do SCEPman será clonado para outra localização geográfica.
* Depois, o Traffic Manager é configurado e os seus Endpoints são adicionados e ligados a ორივos App Services do SCEPman.
* Depois, os domínios personalizados para ambos os App Services são configurados.
* Por fim, o registo DNS CNAME é configurado, apontando o seu domínio personalizado para o Traffic Manager.

### Clonar App

Para clonar um App Service, primeiro é necessário criar um novo **App Service Plan** numa segunda localização geográfica, é aí que a App clonada será implementada. Pode criá-lo no mesmo grupo de recursos do SCEPman ou num novo. Veja a captura de ecrã abaixo:

![Criação de um novo App Service Plan com Windows](/files/82d07ebddc2b78c36da7f00177502327df335afa)

{% hint style="info" %}
Requisitos de clonagem do App Service (via [Módulo SCEPman PowerShell](/pt/implementacao-do-scepman/permissions/post-installation-config.md#acquire-and-run-the-scepman-installation-powershell-module)):

* SCEPman **2.2** ou superior
* Módulo SCEPman PowerShell **1.6.3.0** ou superior
* permissões de Global Admin
  {% endhint %}

O seguinte comando CMDlet irá clonar o seu App Service do SCEPman e configurar todas as permissões necessárias:

```
New-SCEPmanClone -SourceAppServiceName <Nome do seu App Service do SCEPman> -TargetAppServiceName <Nome do seu App Service clonado> -TargetAppServicePlan <O seu segundo App Service Plan na segunda localização geográfica> -SearchAllSubscriptions 6>&1
```

* **SourceAppServiceName:** O nome do App Service do SCEPman existente.
* **TargetAppServiceName:** O nome do novo App Service do SCEPman clonado.
* **TargetAppServicePlan:** O nome do App Service Plan para a instância clonada do SCEPman. O App Service Plan já deve existir no TargetResourceGroup.
* **SourceResourceGroup:** (Opcional) O grupo de recursos do Azure que aloja o App Service do SCEPman existente. Deixe em branco para deteção automática.
* **TargetResourceGroup:** (Opcional) O grupo de recursos do Azure que aloja o novo App Service do SCEPman. Deixe em branco para detetar automaticamente o grupo de recursos do App Service Plan.
* **SourceSubscriptionId:** (Opcional) O ID da Subscription onde o SCEPman está instalado. Pode ser omitido se já estiver pré-selecionado no az ou use a flag SearchAllSubscriptions para procurar em todas as subscrições acessíveis
* **TargetSubscriptionId:** (Opcional) O ID da Subscription onde o SCEPman deverá ser instalado. Pode ser omitido se for o mesmo que SourceSubscriptionId.
* **SearchAllSubscriptions:** (Opcional) Defina esta flag para procurar o App Service do SCEPman em todas as subscrições. Caso contrário, selecione previamente a subscrição correta no az ou passe o SubscriptionId correto.

### **Exemplo**

Clonar um App Service existente "as-scepman-nrg5reuov63vk"

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

![](/files/29b854740d0f79c2dc01a702cbf0c6e216c2cbb3)

Após a implementação ter terminado com sucesso, navegue até ao App Service clonado e verifique a página inicial do SCEPman para confirmar que todas as permissões estão definidas corretamente e que tudo está verde e ligado (isto pode demorar até 3 minutos após a conclusão da implementação).

![](/files/2bb4bfb02abf9f50a02dbda50a49d3e96a4399ec)

{% hint style="info" %}
Para evitar um único ponto de falha, recomendamos definir o [WEBSITE\_RUN\_FROM\_PACKAGE](/pt/configuracao-do-scepman/application-artifacts.md) do App Service clonado para o segundo host de artefactos independente no Azure.

Canal de produção:

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

O App Service original deve ter por defeito o primeiro host de artefactos, que aponta para um repositório GitHub. Para mais informações, consulte [Artefatos da aplicação](/pt/configuracao-do-scepman/application-artifacts.md).
{% endhint %}

{% hint style="warning" %}
Clonar um App Service tem algumas restrições, tais como **autoscale** definições, **agenda de cópias de segurança** definições, **App Insights**, etc. As configurações que não podem ser clonadas têm de ser novamente configuradas manualmente no App Service clonado. Além disso, alterações às definições de um AppService não serão sincronizadas automaticamente com o segundo App Service se forem efetuadas após a operação de clonagem. Para mais informações, visite <https://docs.microsoft.com/en-us/azure/app-service/app-service-web-app-cloning#current-restrictions>
{% endhint %}

### Configurar o Traffic Manager

Siga os passos abaixo para criar e configurar o Traffic Manager e equilibrar o tráfego entre ambas as instâncias do SCEPman:

1. Procure no Marketplace por **perfil do Traffic Manager** e clique **Criar**.
2. Preencha os campos e escolha o seu grupo de recursos do SCEPman

![](/files/160b801a542b2e35aeca0fe208f32bd0c6a74843)

1. Depois clique em **Criar**.
2. Depois de o Traffic Manager estar implementado, abra-o e clique em **Configuração**
3. Altere as definições da seguinte forma e guarde

![Configuração do Traffic Manager](/files/8b956e01d566959327af978fc549bd30a7b7a004)

#### Adicionar Endpoints

#### Primeiro Endpoint

1. Depois, em **Settings** escolha **Endpoints**
2. Escolha "Azure Endpoint" como **Type**, indique um nome para o primeiro Endpoint e "App Service" como **tipo de recurso de destino**
3. Escolha o seu App Service principal do SCEPman como **recurso de destino**

![Traffic Manager, configuração do Endpoint](/files/f6571fb71f7627d77b22fdf0da242193833686f2)

#### Segundo Endpoint

Repita os mesmos passos para o segundo endpoint e escolha o segundo App Service do SCEPman (clonado) como **recurso de destino**

### Configuração de Domínio Personalizado

Após uma implementação e configuração bem-sucedidas dos Endpoints do Traffic Manager, é necessário configurar o **mesmo** domínio personalizado para **ambos os** SCEPman, conforme descrito [aqui](/pt/configuracao-do-azure/custom-domain.md).

Certifique-se de alterar o valor da definição **AppConfig:BaseUrl** para **ambos os** dos App Services do SCEPman após os domínios personalizados terem sido criados.

### Configuração de DNS

No **Resumo** do Traffic Manager, encontrará o nome DNS que precisa de ser adicionado ao seu DNS

![Resumo do Traffic Manager](/files/3defcf275bbc4332ee8e88dbbcc6e459ac5c09fd)

* Navegue até ao seu serviço de gestão de DNS (por ex. **Azure DNS Zones**)
* Remova quaisquer entradas CNAME incorretas possivelmente existentes que apontem para uma das instâncias do Azure App Service e adicione um CNAME que mapeie o domínio personalizado do SCEPman criado para o nome DNS do Traffic Manager. No exemplo abaixo, o CNAME deve apontar para **gk-blueprint-scepman.trafficmanager.net**.

{% hint style="info" %}
Em **Zona DNS do Azure**, para modificar um registo, primeiro tem de remover o bloqueio de DNS navegando para **Locks**.
{% endhint %}

{% hint style="info" %}
Ao concluir a configuração, certifique-se de atualizar o URL do SCEP Server nos seus perfil(s) SCEP no Intune. O novo URL deverá ser o domínio personalizado que criou, com "/certsrv/mscep/mscep.dll" no final.

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

### Redundância de Geo do Storage Account

O Storage Account utilizado para o SCEPman também deve ser configurado para redundância. A configuração predefinida do SCEPman usa Locally Redundant Storage (LRS), que utiliza apenas uma única região. Por exemplo, configure Geo-redundant storage (GRS).

![Diálogo de redundância da conta de armazenamento no Azure Portal](/files/5378420fc121adfbebc7f6f83db0bb0270278a45)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.scepman.com/pt/configuracao-do-azure/geo-redundancy.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
