> For the complete documentation index, see [llms.txt](https://docs.scepman.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.scepman.com/pt/configuracao-do-azure/geo-redundancy.md).

# Geo-redundância

{% hint style="warning" %}
apenas na Edição Enterprise do SCEPman
{% endhint %}

Esta arquitetura de referência mostra como executar uma aplicação Azure App Service em várias regiões para obter alta disponibilidade.

{% hint style="info" %}
A geo-redundância / alta disponibilidade está atualmente disponível apenas para o SCEPman App Service (principal). Justificação: 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

![](https://3802289327-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 ilustrado acima, a implementação geo-redundante tira partido de um perfil do Azure Traffic Manager, que encaminha pedidos (baseados em DNS) para a SCEPman CA para um par de instâncias SCEPman implementadas em diferentes geolocalizações. As instâncias individuais SCEPman comunicam com o mesmo KeyVault, Storage Account e AAD e, assim, partilham a mesma Root CA. Além de equilibrar o tráfego com base num conjunto de algoritmos de encaminhamento que pode escolher, o Traffic Manager também verifica constantemente 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-Redundância que podem ser usadas para gerir este tipo de arquitetura. No entanto, no nosso caso, usaremos a **Ativo/Ativo** abordagem. Isto significa que ambas as regiões estão ativas e os pedidos são equilibrados 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. Utilizar regiões não emparelhadas pode causar problemas durante a configuração desta redundância.
{% endhint %}

## Fluxo de trabalho

1. Clonar o SCEPman App Service para outra geolocalização.
2. Configure o Traffic Manager e ligue os seus Endpoints a ambos os SCEPman App Services.
3. Configure o mesmo Custom Domain para ambos os App Services.
4. Configure o registo DNS CNAME, apontando o seu domínio personalizado para o Traffic Manager.

## Passos

{% stepper %}
{% step %}

### Clonar App

Para clonar um App Service, primeiro precisa de criar um novo **Plano do App Service** numa segunda geolocalização, é 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 Plano do App Service com Windows](https://3802289327-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 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 Administrador Global
  {% endhint %}

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

```
New-SCEPmanClone -SourceAppServiceName <Nome do seu SCEPman App Service> -TargetAppServiceName <Nome do seu App Service clonado> -TargetAppServicePlan <O seu segundo Plano do App Service na segunda Geolocalização> -SearchAllSubscriptions 6>&1
```

* **SourceAppServiceName:** O nome do SCEPman App Service existente.
* **TargetAppServiceName:** O nome do SCEPman App Service recém-clonado.
* **TargetAppServicePlan:** O nome do Plano do App Service para a instância SCEPman clonada. O Plano do App Service tem de existir já no TargetResourceGroup.
* **SourceResourceGroup:** (Opcional) O grupo de recursos Azure que aloja o SCEPman App Service existente. Deixe em branco para deteção automática.
* **TargetResourceGroup:** (Opcional) O grupo de recursos Azure que aloja o novo SCEPman App Service. Deixe em branco para detetar automaticamente o grupo de recursos do Plano do App Service.
* **SourceSubscriptionId:** (Opcional) O ID da Subscription onde o SCEPman está instalado. Pode ser omitido se já estiver pré-selecionada no az ou use a flag SearchAllSubscriptions para procurar todas as subscriptions 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 todas as subscriptions pelo SCEPman App Service. Caso contrário, pré-selecione a subscription correta no az ou transmita o SubscriptionId correto.

#### **Exemplo**

Clonar um SCEPman App Service existente "app-scepman-contoso"

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

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

Após a implementação terminar com êxito, navegue até ao App Service clonado e verifique na página inicial do SCEPman se todas as permissões estão definidas corretamente e se tudo está verde e ligado (isto pode demorar até 3 minutos após a implementação estar concluída).

![](https://3802289327-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 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 anfitrião de artefactos independente no Azure.

Canal de produção:

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

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

{% hint style="warning" %}
Clonar um App Service tem algumas restrições, como **dimensionamento automático** definições, **agendamento de cópias de segurança** definições, **App Insights**, etc.. As configurações que não podem ser clonadas têm de ser configuradas manualmente novamente 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 %}
{% endstep %}

{% step %}

### 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 SCEPman:

1. Procure no Marketplace por **perfil do Traffic Manager** e clique **Criar**.
2. Preencha os campos e escolha o seu grupo de recursos SCEPman\
   ![](https://3802289327-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FUgVnDX8hq0TTN00kGdHZ%2Fimage.png?alt=media\&token=d497732c-983e-4e9f-bf31-e4a2c0d51086)
3. Depois clique em **Criar**.
4. Após o Traffic Manager ser implementado, abra-o e clique em **Configuração**
5. Altere as definições da seguinte forma e **guarde**<br>

   <figure><img src="https://3802289327-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FAnYpAYYRkqhB2fKYNrF3%2Fimage.png?alt=media&amp;token=a6c73544-72fa-4f07-b29d-f8553c81375b" alt=""><figcaption></figcaption></figure>

{% endstep %}

{% step %}

### Adicionar Endpoints

1. Depois, em **Definições** escolha **Endpoints**
2. Escolha "Azure Endpoint" como **Tipo**, forneça um nome para o primeiro Endpoint e "App Service" como **tipo de recurso de destino**
3. Escolha o seu SCEPman App Service principal como o **recurso de destino**<br>

   <figure><img src="https://3802289327-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FjSE1QKh2iExQTuqXrBMB%2Fimage.png?alt=media&amp;token=43112cf2-c134-493e-a0c9-007397cd1744" alt=""><figcaption></figcaption></figure>
4. Repita os mesmos passos para o segundo endpoint e escolha o segundo SCEPman App Service (clonado) como o **recurso de destino**
   {% endstep %}

{% step %}

### Configuração do domínio personalizado

Após uma implementação e configuração bem-sucedidas dos Endpoints do Traffic Manager, precisa de configurar o **mesmo** domínio personalizado para **ambas** instâncias SCEPman, conforme descrito [aqui](/pt/configuracao-do-azure/custom-domain.md).

Certifique-se de alterar o valor da definição **AppConfig:BaseUrl** para **ambas** nos SCEPman App Services após os domínios personalizados terem sido criados.
{% endstep %}

{% step %}

### Configuração de DNS

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

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

* Navegue até ao seu serviço de gestão de DNS (por ex., **Zonas DNS do Azure**)
* Remova quaisquer entradas CNAME incorretas possivelmente existentes que apontem para uma das instâncias Azure App Service e adicione um CNAME que mapeie o domínio personalizado SCEPman criado para o nome DNS do Traffic Manager. No exemplo abaixo, o CNAME deverá 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 **Bloqueios**.
{% endhint %}

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

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

{% step %}

### Geo-Redundância da Storage Account

A configuração predefinida do SCEPman usa Locally Redundant Storage (LRS), que utiliza apenas uma única região.

Altere a redundância de Locally Redundant Storage (LRS) para Geo-redundant storage (GRS).

![Caixa de diálogo de redundância da Storage Account no Azure Portal](https://3802289327-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)
{% endstep %}
{% endstepper %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
