Aplicação de nível N do Windows no Azure com o SQL ServerWindows N-tier application on Azure with SQL Server

Esta arquitetura de referência mostra como implementar máquinas virtuais (VMs) e uma rede virtual configurada para uma aplicação de nível N, utilizando o SQL Server no Windows para o nível de dados.This reference architecture shows how to deploy virtual machines (VMs) and a virtual network configured for an N-tier application, using SQL Server on Windows for the data tier. Implementar esta solução.Deploy this solution.

Arquitetura de nível N usando o Microsoft AzureN-tier architecture using Microsoft Azure

Transfira um ficheiro do Visio desta arquitetura.Download a Visio file of this architecture.

ArquiteturaArchitecture

A arquitetura é composta pelos seguintes componentes:The architecture has the following components.

GeralGeneral

  • Grupo de recursos.Resource group. Os grupos de recursos são utilizados para agrupar os recursos Azure para que possam ser geridos por tempo útil, proprietário ou outros critérios.Resource groups are used to group Azure resources so they can be managed by lifetime, owner, or other criteria.

  • Zonas de disponibilidade.Availability zones. As zonas de disponibilidade são locais físicos dentro de uma região de Azure.Availability zones are physical locations within an Azure region. Cada zona é constituída por um ou mais datacenters com potência independente, arrefecimento e networking.Each zone consists of one or more datacenters with independent power, cooling, and networking. Ao colocar VMs em zonas, a aplicação torna-se resistente a falhas dentro de uma zona.By placing VMs across zones, the application becomes resilient to failures within a zone.

Equilíbrio em rede e cargaNetworking and load balancing

  • Rede virtual e sub-redes.Virtual network and subnets. Cada VM Azure é implantado numa rede virtual que pode ser segmentada em sub-redes.Every Azure VM is deployed into a virtual network that can be segmented into subnets. Crie uma sub-rede separada para cada camada.Create a separate subnet for each tier.

  • Gateway de aplicação.Application gateway. Application Gateway é um equilibrador de carga de camada 7.Application Gateway is a layer 7 load balancer. Nesta arquitetura, encaminha pedidos HTTP para a frente web.In this architecture, it routes HTTP requests to the web front end. O Application Gateway também fornece uma firewall de aplicação web (WAF) que protege a aplicação de explorações e vulnerabilidades comuns.Application Gateway also provides a web application firewall (WAF) that protects the application from common exploits and vulnerabilities.

  • Os balançadores de carga.Load balancers. Utilize o Azure Standard Load Balancer para distribuir o tráfego de rede do nível web para o nível de negócio, e do nível de negócio para o SQL Server.Use Azure Standard Load Balancer to distribute network traffic from the web tier to the business tier, and from the business tier to SQL Server.

  • Grupos de segurança de rede (NSGs).Network security groups (NSGs). Utilize NSGs para restringir o tráfego de rede dentro da rede virtual.Use NSGs to restrict network traffic within the virtual network. Por exemplo, na arquitetura de três camadas aqui mostrada, o nível de base de dados não aceita o tráfego a partir da extremidade frontal da web, apenas a partir do nível de negócio e da sub-rede de gestão.For example, in the three-tier architecture shown here, the database tier does not accept traffic from the web front end, only from the business tier and the management subnet.

  • DDos Protection.DDoS Protection. Embora a plataforma Azure forneça proteção básica contra ataques de negação de serviço distribuídos (DDoS), recomendamos a utilização do DDoS Protection Standard, que tem funcionalidades de mitigação melhoradas do DDoS.Although the Azure platform provides basic protection against distributed denial of service (DDoS) attacks, we recommend using DDoS Protection Standard, which has enhanced DDoS mitigation features. Ver considerações de segurança.See Security considerations.

  • Azure DNS.Azure DNS. O DNS do Azure é um serviço de alojamento para domínios DNS.Azure DNS is a hosting service for DNS domains. Fornece resolução de nomes utilizando a infraestrutura Microsoft Azure.It provides name resolution using Microsoft Azure infrastructure. Ao alojar os seus domínios no Azure, pode gerir os recursos DNS com as mesmas credenciais, APIs, ferramentas e faturação dos seus outros serviços do Azure.By hosting your domains in Azure, you can manage your DNS records using the same credentials, APIs, tools, and billing as your other Azure services.

Máquinas virtuaisVirtual machines

  • Servidor SQL Sempre No Grupo de Disponibilidade.SQL Server Always On Availability Group. Fornece uma elevada disponibilidade na camada de dados ao ativar a replicação e a ativação pós-falha.Provides high availability at the data tier, by enabling replication and failover. Utiliza a tecnologia Do Cluster de Falha do Servidor do Windows (WSFC) para falha.It uses Windows Server Failover Cluster (WSFC) technology for failover.

  • Servidores do Active Directory Domain Services (AD DS).Active Directory Domain Services (AD DS) Servers. Os objetos de computador para o cluster failover e as suas funções agrupadas associadas são criados em Ative Directory Domain Services (AD DS).The computer objects for the failover cluster and its associated clustered roles are created in Active Directory Domain Services (AD DS).

  • Cloud Witness.Cloud Witness. Um aglomerado de falhanços requer mais de metade dos seus nós para funcionar, que é conhecido como tendo quórum.A failover cluster requires more than half of its nodes to be running, which is known as having quorum. Se o cluster tiver apenas dois nós, uma divisória de rede pode fazer com que cada nó pense que é o nó primário.If the cluster has just two nodes, a network partition could cause each node to think it's the primary node. Nesse caso, precisas de uma testemunha para quebrar laços e estabelecer quórum.In that case, you need a witness to break ties and establish quorum. Uma testemunha é um recurso como um disco partilhado que pode funcionar como um desempate para estabelecer quórum.A witness is a resource such as a shared disk that can act as a tie breaker to establish quorum. Cloud Witness é um tipo de testemunha que usa o armazenamento de Azure Blob.Cloud Witness is a type of witness that uses Azure Blob Storage. Para saber mais sobre o conceito de quórum, consulte o cluster understanding e o quorum da piscina.To learn more about the concept of quorum, see Understanding cluster and pool quorum. Para obter mais informações sobre cloud witness, consulte Implementar uma Testemunha em Nuvem para um Cluster de Falhas.For more information about Cloud Witness, see Deploy a Cloud Witness for a Failover Cluster.

  • Jumpbox.Jumpbox. Também denominada anfitrião de bastião.Also called a bastion host. Uma VM segura na rede que os administradores utilizam para ligar as outras VMs.A secure VM on the network that administrators use to connect to the other VMs. A jumpbox tem um NSG que permite tráfego remoto apenas a partir de endereços IP públicos numa lista segura.The jumpbox has an NSG that allows remote traffic only from public IP addresses on a safe list. O NSG deve permitir tráfego de ambiente de trabalho remoto (RDP).The NSG should permit remote desktop (RDP) traffic.

RecomendaçõesRecommendations

Os requisitos podem ser diferentes da arquitetura descrita aqui.Your requirements might differ from the architecture described here. Utilize estas recomendações como um ponto de partida.Use these recommendations as a starting point.

Máquinas virtuaisVirtual machines

Para obter recomendações sobre a configuração dos VMs, consulte executar um VM do Windows em Azure.For recommendations on configuring the VMs, see Run a Windows VM on Azure.

Rede virtualVirtual network

Quando criar a rede virtual, determine quantos endereços IP os seus recursos em cada sub-rede necessitam.When you create the virtual network, determine how many IP addresses your resources in each subnet require. Especifique uma máscara de sub-rede e um intervalo de endereços de rede suficientemente grande para os endereços IP necessários, utilizando a notação [CIDR.]Specify a subnet mask and a network address range large enough for the required IP addresses, using CIDR notation. Utilize um espaço de endereços contido nos blocos de endereços IP privados padrão, que são 10.0.0.0/8, 172.16.0.0/12 e 192.168.0.0/16.Use an address space that falls within the standard private IP address blocks, which are 10.0.0.0/8, 172.16.0.0/12, and 192.168.0.0/16.

Escolha um intervalo de endereços que não se sobreponha à sua rede no local, caso precise de configurar um portal de entrada entre a rede virtual e a rede no local mais tarde.Choose an address range that does not overlap with your on-premises network, in case you need to set up a gateway between the virtual network and your on-premises network later. Uma vez que cria a rede virtual, não pode alterar o intervalo de endereços.Once you create the virtual network, you can't change the address range.

Crie sub-redes com requisitos de funcionalidade e segurança em mente.Design subnets with functionality and security requirements in mind. Todas as VMs dentro da mesma camada ou função devem passar pela mesma sub-rede, a qual pode ser um limite de segurança.All VMs within the same tier or role should go into the same subnet, which can be a security boundary. Para obter mais informações sobre a conceção de redes virtuais e sub-redes, consulte Plano e design redes virtuais Azure.For more information about designing virtual networks and subnets, see Plan and design Azure Virtual Networks.

Gateway de AplicaçãoApplication Gateway

Para obter informações sobre a configuração do Gateway de aplicações, consulte a visão geral da configuração do Gateway de Aplicação.For information about configuring Application Gateway, see Application Gateway configuration overview.

Balanceadores de cargaLoad balancers

Não exponha os VM diretamente à Internet, mas em vez disso dê a cada VM um endereço IP privado.Don't expose the VMs directly to the Internet, but instead give each VM a private IP address. Os clientes conectam-se utilizando o endereço IP público associado ao Gateway de aplicação.Clients connect using the public IP address associated with the Application Gateway.

Defina as regras do balanceador de carga para direcionar o tráfego de rede para as VMs.Define load balancer rules to direct network traffic to the VMs. Por exemplo, para ativar o tráfego HTTP, mapear a porta 80 da configuração frontal para a porta 80 na piscina de endereços de fundo.For example, to enable HTTP traffic, map port 80 from the front-end configuration to port 80 on the back-end address pool. Quando um cliente envia um pedido HTTP para a porta 80, o balanceador de carga seleciona um endereço IP de back-end com um algoritmo hash que inclui o endereço IP de origem.When a client sends an HTTP request to port 80, the load balancer selects a back-end IP address by using a hashing algorithm that includes the source IP address. Os pedidos do cliente são distribuídos por todos os VMs na piscina de endereços back-end.Client requests are distributed across all the VMs in the back-end address pool.

Grupos de segurança de redeNetwork security groups

Utilize as regras do NSG para restringir o tráfego entre as camadas.Use NSG rules to restrict traffic between tiers. Na arquitetura de três camadas acima mostrada, o nível web não comunica diretamente com o nível de base de dados.In the three-tier architecture shown above, the web tier does not communicate directly with the database tier. Para impor esta regra, o nível de base de dados deve bloquear o tráfego de entrada a partir da sub-rede de nível web.To enforce this rule, the database tier should block incoming traffic from the web tier subnet.

  1. Negar todo o tráfego de entrada da rede virtual.Deny all inbound traffic from the virtual network. (Utilize a etiqueta VIRTUAL_NETWORK na regra.)(Use the VIRTUAL_NETWORK tag in the rule.)
  2. Permitir o tráfego de entrada a partir da sub-rede de nível de negócio.Allow inbound traffic from the business tier subnet.
  3. Permitir o tráfego de entrada a partir da própria sub-rede de nível de base de dados.Allow inbound traffic from the database tier subnet itself. Esta regra permite a comunicação entre os VMs da base de dados, que é necessário para a replicação da base de dados e para a falha.This rule allows communication between the database VMs, which is needed for database replication and failover.
  4. Permitir o tráfego RDP (porta 3389) a partir da sub-rede da caixa de salto.Allow RDP traffic (port 3389) from the jumpbox subnet. Esta regra permite aos administradores estabelecer ligação com o escalão da base de dados a partir da jumpbox.This rule lets administrators connect to the database tier from the jumpbox.

Crie regras – 24 com maior prioridade do que a primeira regra, por isso substituem-na.Create rules 2 – 4 with higher priority than the first rule, so they override it.

Grupos de Disponibilidade Always On do SQL ServerSQL Server Always On Availability Groups

Recomendamos Grupos de Disponibilidade AlwaysOn para a elevada disponibilidade do SQL Server.We recommend Always On Availability Groups for SQL Server high availability. Com as versões anteriores ao Windows Server 2016, os Grupos de Disponibilidade AlwaysOn necessitam de um controlador de domínio e todos os nós no grupo de disponibilidade têm de estar no mesmo domínio do AD.Prior to Windows Server 2016, Always On Availability Groups require a domain controller, and all nodes in the availability group must be in the same AD domain.

As outras camadas ligam-se à base de dados através de um serviço de escuta do grupo de disponibilidade.Other tiers connect to the database through an availability group listener. O serviço de escuta permite que um cliente do SQL se ligue sem saber o nome da instância física do SQL Server.The listener enables a SQL client to connect without knowing the name of the physical instance of SQL Server. As VMs com acesso à base de dados têm de estar associadas ao domínio.VMs that access the database must be joined to the domain. O cliente (neste caso, a outra camada) utiliza o DNS para resolver o nome da rede virtual do serviço de escuta nos endereços IP.The client (in this case, another tier) uses DNS to resolve the listener's virtual network name into IP addresses.

Configure os Grupos de Disponibilidade AlwaysOn do SQL Server da seguinte forma:Configure the SQL Server Always On Availability Group as follows:

  1. Crie um cluster WSFC (Clustering de Ativação Pós-falha do Windows Server), um Grupo de Disponibilidade AlwaysOn do SQL Server e uma réplica primária.Create a Windows Server Failover Clustering (WSFC) cluster, a SQL Server Always On Availability Group, and a primary replica. Para obter mais informações, veja Getting Started with Always On Availability Groups (Introdução aos Grupos de Disponibilidade AlwaysOn).For more information, see Getting Started with Always On Availability Groups.

  2. Crie um balanceador de carga interno com um endereço IP privado estático.Create an internal load balancer with a static private IP address.

  3. Criar um serviço de escuta do grupo de disponibilidade e mapeie o nome DNS do serviço de escuta do endereço IP de um balanceador de carga interno.Create an availability group listener, and map the listener's DNS name to the IP address of an internal load balancer.

  4. Crie uma regra de balanceador de carga para a porta de escuta do SQL Server (porta TCP 1433, por predefinição).Create a load balancer rule for the SQL Server listening port (TCP port 1433 by default). A regra de balanceador de carga tem de ativar o IP flutuante, também denominado Devolução Direta do Servidor.The load balancer rule must enable floating IP, also called Direct Server Return. Esta ação faz com que a VM responda diretamente ao cliente, o que permite uma ligação direta à réplica primária.This causes the VM to reply directly to the client, which enables a direct connection to the primary replica.

    Nota

    Quando o IP flutuante é ativado, o número de porta do front-end tem de ser igual ao número de porta do back-end na regra de balanceador de carga.When floating IP is enabled, the front-end port number must be the same as the back-end port number in the load balancer rule.

Quando um cliente do SQL tenta estabelecer ligação, o balanceador de carga encaminha o pedido de ligação para a réplica primária.When a SQL client tries to connect, the load balancer routes the connection request to the primary replica. Se houver uma falha noutra réplica, o equilibrador de carga encaminha automaticamente novos pedidos para uma nova réplica primária.If there is a failover to another replica, the load balancer automatically routes new requests to a new primary replica. Para obter mais informações, veja Configurar um serviço de escuta ILB para os Grupos de Disponibilidade AlwaysOn do SQL Server.For more information, see Configure an ILB listener for SQL Server Always On Availability Groups.

Durante a ativação pós-falha, as ligações de cliente existentes são fechadas.During a failover, existing client connections are closed. Após a conclusão da ativação pós-falha, as novas ligações serão encaminhadas para a nova réplica primária.After the failover completes, new connections will be routed to the new primary replica.

Se a sua aplicação fizer significativamente mais leituras do que escritas, pode descarregar algumas das consultas só de leitura para uma réplica secundária.If your application makes significantly more reads than writes, you can offload some of the read-only queries to a secondary replica. Veja Using a Listener to Connect to a Read-Only Secondary Replica (Read-Only Routing) (Utilizar um Serviço de Escuta para Ligar a uma Réplica Secundária Só de Leitura (Encaminhamento Só de Leitura)).See Using a Listener to Connect to a Read-Only Secondary Replica (Read-Only Routing).

Teste a sua implementação ao forçar uma ativação pós-falha manual do grupo de disponibilidade.Test your deployment by forcing a manual failover of the availability group.

JumpboxJumpbox

Não permita o acesso do RDP da Internet pública aos VMs que executam a carga de trabalho da aplicação.Don't allow RDP access from the public Internet to the VMs that run the application workload. Em vez disso, todo o acesso rdp a estes VMs deve passar pela caixa de salto.Instead, all RDP access to these VMs should go through the jumpbox. Um administrador inicia sessão na jumpbox e, em seguida, inicia sessão noutra VM a partir da jumpbox.An administrator logs into the jumpbox, and then logs into the other VM from the jumpbox. A jumpbox permite tráfego RDP através da Internet, mas apenas a partir de endereços IP conhecidos e seguros.The jumpbox allows RDP traffic from the Internet, but only from known, safe IP addresses.

A caixa de salto tem requisitos mínimos de desempenho, por isso selecione um pequeno tamanho VM.The jumpbox has minimal performance requirements, so select a small VM size. Crie um endereço IP público para a jumpbox.Create a public IP address for the jumpbox. Coloque a caixa de salto na mesma rede virtual que os outros VMs, mas numa sub-rede de gestão separada.Place the jumpbox in the same virtual network as the other VMs, but in a separate management subnet.

Para proteger a caixa de salto, adicione uma regra NSG que permite ligações RDP apenas a partir de um conjunto seguro de endereços IP públicos.To secure the jumpbox, add an NSG rule that allows RDP connections only from a safe set of public IP addresses. Configure os NSGs para as outras sub-redes para permitir o tráfego RDP da sub-rede de gestão.Configure the NSGs for the other subnets to allow RDP traffic from the management subnet.

Considerações de escalabilidadeScalability considerations

Conjuntos de dimensionamentoScale sets

Para os níveis web e de negócio, considere usar conjuntos de escala de máquina virtual em vez de implantar VMs separados.For the web and business tiers, consider using virtual machine scale sets instead of deploying separate VMs. Um conjunto de escala facilita a implantação e gestão de um conjunto de VMs idênticos e autoescala os VMs com base em métricas de desempenho.A scale set makes it easy to deploy and manage a set of identical VMs, and autoscale the VMs based on performance metrics. À medida que a carga nas VMs aumenta, são adicionadas automaticamente VMs adicionais ao balanceador de carga.As the load on the VMs increases, additional VMs are automatically added to the load balancer. Considere os conjuntos de dimensionamento caso precise de aumentar horizontalmente e de forma rápida as VMs ou realizar um dimensionamento automático.Consider scale sets if you need to quickly scale out VMs, or need to autoscale.

Existem duas formas básicas de configurar as VMs implementadas num conjunto de dimensionamento:There are two basic ways to configure VMs deployed in a scale set:

  • Utilize extensões para configurar o VM depois de ser implantado.Use extensions to configure the VM after it's deployed. Com esta abordagem, as novas instâncias de VM podem demorar mais tempo a iniciar em comparação com uma VM sem extensões.With this approach, new VM instances may take longer to start up than a VM with no extensions.

  • Implementar um disco gerido com uma imagem de disco personalizada.Deploy a managed disk with a custom disk image. Esta opção pode ser mais rápida de implementar.This option may be quicker to deploy. No entanto, requer que mantenha a imagem atualizada.However, it requires you to keep the image up-to-date.

Para obter mais informações, consulte considerações de Design para conjuntos de escalas.For more information, see Design considerations for scale sets.

Dica

Quando utilizar uma solução de dimensionamento automático, teste-a com cargas de trabalho ao nível de produção com alguma antecedência.When using any autoscale solution, test it with production-level workloads well in advance.

Limites da subscriçãoSubscription limits

Cada subscrição do Azure tem limites predefinidos implementados, incluindo um número máximo de VMs por região.Each Azure subscription has default limits in place, including a maximum number of VMs per region. Pode aumentar o limite através do preenchimento de um pedido de suporte.You can increase the limit by filing a support request. Para obter mais informações, veja Subscrição do Azure e limites de serviço, quotas e restrições.For more information, see Azure subscription and service limits, quotas, and constraints.

Gateway de AplicaçãoApplication Gateway

O Application Gateway suporta o modo de capacidade fixa ou o modo de autoscalagem.Application Gateway supports fixed capacity mode or autoscaling mode. O modo de capacidade fixa é útil para cenários com cargas de trabalho consistentes e previsíveis.Fixed capacity mode is useful for scenarios with consistent and predictable workloads. Considere utilizar o modo de autoescalagem para cargas de trabalho com tráfego variável.Consider using autoscaling mode for workloads with variable traffic. Para obter mais informações, consulte Autoscaling e Zone-redundante Application Gateway v2For more information, see Autoscaling and Zone-redundant Application Gateway v2

Considerações de disponibilidadeAvailability considerations

As zonas de disponibilidade proporcionam a melhor resiliência dentro de uma única região.Availability zones provide the best resiliency within a single region. Se precisar de uma disponibilidade ainda maior, considere replicar a aplicação em duas regiões, utilizando o Azure Traffic Manager para o failover.If you need even higher availability, consider replicating the application across two regions, using Azure Traffic Manager for failover. Para obter mais informações, consulte a aplicação de nível N multi-região para uma elevada disponibilidade.For more information, see Multi-region N-tier application for high availability.

Nem todas as regiões suportam zonas de disponibilidade, e nem todos os tamanhos de VM são suportados em todas as zonas.Not all regions support availability zones, and not all VM sizes are supported in all zones. Executar o seguinte comando Azure CLI para encontrar as zonas suportadas para cada tamanho VM dentro de uma região:Run the following Azure CLI command to find the supported zones for each VM size within a region:

az vm list-skus --resource-type virtualMachines --zone false --location <location> \
    --query "[].{Name:name, Zones:locationInfo[].zones[] | join(','@)}" -o table

Se colocar esta arquitetura numa região que não suporta zonas de disponibilidade, coloque os VMs para cada nível dentro de um conjunto de disponibilidade.If you deploy this architecture to a region that does not support availability zones, put the VMs for each tier inside an availability set. Os VMs dentro do mesmo conjunto de disponibilidade são implantados em vários servidores físicos, racks de computação, unidades de armazenamento e comutadores de rede para redundância.VMs within the same availability set are deployed across multiple physical servers, compute racks, storage units, and network switches for redundancy. Os conjuntos de escala utilizam automaticamente grupos de colocação, que funcionam como um conjunto de disponibilidade implícita.Scale sets automatically use placement groups, which act as an implicit availability set.

Ao implementar para zonas de disponibilidade, utilize o SKU Standard de Azure Load Balancer e o v2 SKU do Gateway de Aplicação.When deploying to availability zones, use the Standard SKU of Azure Load Balancer and the v2 SKU of Application Gateway. Estes SKUs apoiam a redundância de zonas cruzadas.These SKUs support cross-zone redundancy. Para obter mais informações, veja:For more information, see:

Uma única implementação do Gateway de Aplicação pode executar várias instâncias do gateway.A single Application Gateway deployment can run multiple instances of the gateway. Para cargas de trabalho de produção, executar pelo menos duas instâncias.For production workloads, run at least two instances.

Sondas do estado de funcionamentoHealth probes

O Application Gateway e o Load Balancer utilizam sondas sanitárias para monitorizar a disponibilidade de instâncias VM.Application Gateway and Load Balancer both use health probes to monitor the availability of VM instances.

  • O Application Gateway utiliza sempre uma sonda HTTP.Application Gateway always uses an HTTP probe.
  • O Balancer de Carga pode testar HTTP ou TCP.Load Balancer can test either HTTP or TCP. Geralmente, se um VM executa um servidor HTTP, utilize uma sonda HTTP.Generally, if a VM runs an HTTP server, use an HTTP probe. Caso contrário, utilize O TCP.Otherwise, use TCP.

Se uma sonda não conseguir chegar a um caso dentro de um período de tempo, o porta de entrada ou o equilibrador de carga para de enviar tráfego para esse VM.If a probe can't reach an instance within a timeout period, the gateway or load balancer stops sending traffic to that VM. A sonda continua a verificar e devolverá o VM à piscina traseira se o VM voltar a estar disponível.The probe continues to check and will return the VM to the back-end pool if the VM becomes available again.

As sondas HTTP ENVIAM um pedido HTTP GET para um caminho especificado e ouvem uma resposta HTTP 200.HTTP probes send an HTTP GET request to a specified path and listen for an HTTP 200 response. Este caminho pode ser o caminho da raiz ("/"), ou um ponto final de monitorização da saúde que implementa alguma lógica personalizada para verificar a saúde da aplicação.This path can be the root path ("/"), or a health-monitoring endpoint that implements some custom logic to check the health of the application. O ponto final tem de permitir pedidos HTTP anónimos.The endpoint must allow anonymous HTTP requests.

Para obter mais informações sobre as sondas de saúde, consulte:For more information about health probes, see:

Para obter considerações sobre a conceção de um ponto final da sonda de saúde, consulte o padrão de monitorização do ponto final da saúde.For considerations about designing a health probe endpoint, see Health Endpoint Monitoring pattern.

Considerações de custosCost considerations

Utilize a Calculadora de Preços Azure para estimar os custos.Use the Azure Pricing Calculator to estimates costs. Aqui estão outras considerações.Here are some other considerations.

Conjuntos de dimensionamento de máquinas virtuaisVirtual machine scale sets

Os conjuntos de escala de máquina virtual estão disponíveis em todos os tamanhos do Windows VM.Virtual machine scale sets are available on all Windows VM sizes. Você é cobrado apenas para os VMs Azure que você implanta e quaisquer recursos adicionais subjacentes de infraestrutura consumidos, tais como armazenamento e networking.You are only charged for the Azure VMs you deploy and any additional underlying infrastructure resources consumed such as storage and networking. Não existem custos incrementais para o serviço de conjuntos de escala de máquina virtual.There are no incremental charges for the virtual machine scale sets service.

Para opções de preços individuais VMs Consulte os preços do Windows VMsFor single VMs pricing options See Windows VMs pricing

Servidor SQLSQL server

Se escolher Azure SQL DBaas, pode economizar no custo porque não precisa de configurar um Grupo Sempre Disponível e máquinas de controlador de domínio.If you choose Azure SQL DBaas, you can save on cost because don't need to configure an Always On Availability Group and domain controller machines. Existem várias opções de implementação a partir de uma única base de dados até casos geridos, ou piscinas elásticas.There are several deployment options starting from single database up to managed instance, or elastic pools. Para mais informações consulte os preços do Azure SQL.For more information see Azure SQL pricing.

Para opções de preços de VMs de servidor SQL ver preços de VMs SQL.For SQL server VMs pricing options see SQL VMs pricing.

Balanceadores de cargaLoad balancers

É cobrado apenas pelo número de regras configuradas de equilíbrio de carga e saída.You are charged only for the number of configured load-balancing and outbound rules. As regras da NAT de entrada são gratuitas.Inbound NAT rules are free. Não existe uma cobrança horária para o Balanceador de Carga Padrão quando não há regras configuradas.There is no hourly charge for the Standard Load Balancer when no rules are configured.

Para obter mais informações, veja a secção de custos Well-Architected Framework do Microsoft Azure.For more information, see the cost section in Microsoft Azure Well-Architected Framework.

Considerações de segurançaSecurity considerations

As redes virtuais são um limite de isolamento de tráfego no Azure.Virtual networks are a traffic isolation boundary in Azure. Por padrão, os VMs numa rede virtual não podem comunicar diretamente com VMs numa rede virtual diferente.By default, VMs in one virtual network can't communicate directly with VMs in a different virtual network. No entanto, pode ligar explicitamente redes virtuais utilizando o espreitamento de rede virtual.However, you can explicitly connect virtual networks by using virtual network peering.

NSGs.NSGs. Utilize grupos de segurança de rede (NSGs) para restringir o tráfego de e para a internet.Use network security groups (NSGs) to restrict traffic to and from the internet. Para obter mais informações, veja Serviços cloud da Microsoft e segurança de rede.For more information, see Microsoft cloud services and network security.

DMZ.DMZ. Considere adicionar uma aplicação virtual de rede (NVA) para criar uma rede de Perímetro entre a Internet e a rede virtual do Azure.Consider adding a network virtual appliance (NVA) to create a DMZ between the Internet and the Azure virtual network. A NVA é um termo genérico para uma aplicação virtual que pode realizar tarefas relacionadas com a rede, tais como firewall, inspeção de pacotes, auditoria e encaminhamento personalizado.NVA is a generic term for a virtual appliance that can perform network-related tasks, such as firewall, packet inspection, auditing, and custom routing. Para obter mais informações, veja Implementar uma rede de perímetro entre o Azure e a Internet.For more information, see Implementing a DMZ between Azure and the Internet.

Encriptação.Encryption. Encripte os dados confidenciais inativos e utilize o Azure Key Vault para gerir as chaves de encriptação da base de dados.Encrypt sensitive data at rest and use Azure Key Vault to manage the database encryption keys. O Key Vault pode armazenar chaves de encriptação nos módulos de segurança de hardware (HSMs).Key Vault can store encryption keys in hardware security modules (HSMs). Para obter mais informações, consulte o artigo Configurar a Integração do Cofre de Chaves do Azure para o SQL Server em VMs do Azure.For more information, see Configure Azure Key Vault Integration for SQL Server on Azure VMs. Também é recomendado para armazenar segredos de aplicações, como cadeias de ligação de base de dados, em Key Vault.It's also recommended to store application secrets, such as database connection strings, in Key Vault.

Proteção DDoS.DDoS protection. A plataforma Azure fornece uma proteção DDoS básica por padrão.The Azure platform provides basic DDoS protection by default. Esta proteção básica destina-se a proteger a infraestrutura Azure no seu conjunto.This basic protection is targeted at protecting the Azure infrastructure as a whole. Embora a proteção básica do DDoS esteja ativada automaticamente, recomendamos a utilização da Norma de Proteção DDoS.Although basic DDoS protection is automatically enabled, we recommend using DDoS Protection Standard. A proteção padrão utiliza a sintonização adaptativa, com base nos padrões de tráfego de rede da sua aplicação, para detetar ameaças.Standard protection uses adaptive tuning, based on your application's network traffic patterns, to detect threats. Isto permite-lhe aplicar mitigações contra ataques DDoS que podem passar despercebidos pelas políticas de DDoS em toda a infraestrutura.This allows it to apply mitigations against DDoS attacks that might go unnoticed by the infrastructure-wide DDoS policies. A proteção padrão também fornece alerta, telemetria e análise através do Azure Monitor.Standard protection also provides alerting, telemetry, and analytics through Azure Monitor. Para mais informações, consulte Azure DDoS Protection: Melhores práticas e arquiteturas de referência.For more information, see Azure DDoS Protection: Best practices and reference architectures.

Considerações de DevOpsDevOps considerations

Nesta arquitetura você usa [modelos de Blocos de Construção Azure][modelo azbb]para o fornecimento dos recursos Azure e suas dependências.In this architecture you use [Azure Building Blocks templates][azbb-template] for provisioning the Azure resources and its dependencies. Uma vez que todos os recursos principais e as suas dependências estão na mesma rede virtual, estão isolados na mesma carga de trabalho básica, o que facilita a associar os recursos específicos da carga de trabalho a uma equipa, para que a equipa possa gerir de forma independente todos os aspetos desses recursos.Since all the main resources and their dependencies are in the same virtual network, they are isolated in the same basic workload, that makes it easier to associate the workload's specific resources to a team, so that the team can independently manage all aspects of those resources. Este isolamento permite que os DevOps realizem uma integração contínua e uma entrega contínua (CI/CD).This isolation enables DevOps to perform continuous integration and continuous delivery (CI/CD).

Além disso, pode utilizar diferentes modelos de implementação e integrá-los com os Serviços Azure DevOps para fornecer diferentes ambientes em minutos, por exemplo para replicar a produção como cenários ou ambientes de teste de carga apenas quando necessário, economizando custos.Also, you can use different deployment templates and integrate them with Azure DevOps Services to provision different environments in minutes, for example to replicate production like scenarios or load testing environments only when needed, saving cost.

Neste sceanario as máquinas virtuais são configuradas utilizando extensões de máquinas virtuais, uma vez que oferecem a possibilidade de instalar determinado software adicional, como anti malware e agentes de segurança.In this sceanario you virtual machines are configured by using Virtual Machine Extensions, since they offer the possibility of installing certain additional software, such as anti malware and security agents. As extensões VM são instaladas e executadas apenas no tempo de criação de VM.VM Extensions are installed and executed only at VM creation time. Isto significa que se o Sistema Operativo for configurado incorretamente numa fase posterior, será necessária uma intervenção manual para o deslocar de volta para o seu estado correto.That means if the Operating System gets configured incorrectly at a later stage, it will require a manual intervention to move it back to its correct state..

As Ferramentas de Gestão de Configuração, em particular a Configuração do Estado Desejada (DSC), são utilizadas nesta arquitetura para configurar o Ative Directory e um SqL Server Always On Availability Group.Configuration Management Tools, in particular Desired State Configuration (DSC), are used in this architecture to configure Active Directory and a SQL Server Always On Availability Group.

Considere utilizar o Azure Monitor para analisar e otimizar o desempenho da sua infraestrutura, monitorizar e diagnosticar problemas de rede sem iniciar sessão nas suas máquinas virtuais.Consider using the Azure Monitor to Analyze and optimize the performance of your infrastructure, Monitor and diagnose networking issues without logging into your virtual machines. Application Insights é na verdade um dos componentes do Azure Monitor, que lhe dá métricas e troncos ricos para verificar o estado da sua paisagem completa do Azure.Application Insights is actually one of the components of Azure Monitor, which gives you rich metrics and logs to verify the state of your complete Azure landscape. O Azure Monitor irá ajudá-lo a seguir o estado da sua infraestrutura.Azure Monitor will help you to follow the state of your infrastructure.

Certifique-se não só de monitorizar os elementos computativos que suportam o seu código de aplicação, mas também da sua plataforma de dados, em particular das suas bases de dados, uma vez que um baixo desempenho do nível de dados de uma aplicação pode ter consequências graves.Make sure not only to monitor your compute elements supporting your application code, but your data platform as well, in particular your databases, since a low performance of the data tier of an application could have serious consequences.

Para testar o ambiente Azure onde as aplicações estão em execução, deve ser controlado pela versão e implementado através dos mesmos mecanismos que o código de aplicação, então pode ser testado e validado usando paradigmas de teste de DevOps também.In order to test the Azure environment where the applications are running, it should be version-controlled and deployed through the same mechanisms as application code, then it can be tested and validated using DevOps testing paradigms too.

Para mais informações, consulte a secção de Excelência Operacional no Quadro Well-Architected Azure.For more information, see the Operational Excellence section in Azure Well-Architected Framework.

Implementar a soluçãoDeploy the solution

Está disponível uma implementação para esta arquitetura de referência no GitHub.A deployment for this reference architecture is available on GitHub. Toda a implementação pode demorar até uma hora, o que inclui executar os scripts para configurar AD DS, o cluster de failover do Windows Server e o grupo de disponibilidade do SQL Server.The entire deployment can take up to an hour, which includes running the scripts to configure AD DS, the Windows Server failover cluster, and the SQL Server availability group.

Se especificar uma região que suporta zonas de disponibilidade, os VMs são implantados em zonas de disponibilidade.If you specify a region that supports availability zones, the VMs are deployed into availability zones. Caso contrário, os VMs são implantados em conjuntos de disponibilidade.Otherwise, the VMs are deployed into availability sets. Para uma lista de regiões que suportam zonas de disponibilidade, consulte serviços de apoio por região.For a list of regions that support availability zones, see Services support by region.

Pré-requisitosPrerequisites

  1. Clone, copie ou transfira o ficheiro zip para o repositório do GitHub das arquiteturas de referência.Clone, fork, or download the zip file for the reference architectures GitHub repository.

  2. Instale a CLI 2.0 do Azure.Install Azure CLI 2.0.

  3. Instale o Node.js e o NPMInstall Node and NPM

  4. Instale o pacote npm dos blocos modulares do Azure.Install the Azure building blocks npm package.

    npm install -g @mspnp/azure-building-blocks
    
  5. Numa linha de comandos, linha de comandos do Bash ou linha de comandos do PowerShell, inicie sessão na sua conta do Azure da seguinte forma:From a command prompt, bash prompt, or PowerShell prompt, sign into your Azure account as follows:

    az login
    

Passos da implementaçãoDeployment steps

  1. Navegue para a virtual-machines\n-tier-windows pasta do repositório de referência GitHub.Navigate to the virtual-machines\n-tier-windows folder of the reference architectures GitHub repository.

  2. Abra o ficheiro n-tier-windows.json.Open the n-tier-windows.json file.

  3. No n-tier-windows.json ficheiro, procure todas as instâncias [replace-with-password] e [replace-with-safe-mode-password] substitua-as por uma palavra-passe forte.In the n-tier-windows.json file, search for all instances of [replace-with-password] and [replace-with-safe-mode-password] and replace them with a strong password. Guarde o ficheiro.Save the file.

    Nota

    Se alterar o nome de utilizador do administrador, também deve atualizar os extensions blocos no ficheiro JSON.If you change the administrator user name, you must also update the extensions blocks in the JSON file.

  4. Executar o seguinte comando para implantar a arquitetura.Run the following command to deploy the architecture.

    azbb -s <your subscription_id> -g <resource_group_name> -l <location> -p n-tier-windows.json --deploy
    
  5. Quando a implantação estiver concluída, abra o portal Azure e navegue para o grupo de recursos.When the deployment is complete, open the Azure portal and navigate to the resource group. Encontre a conta de armazenamento que começa com 'sqlcw'.Find the storage account that begins with 'sqlcw'. Esta é a conta de armazenamento que será usada para a testemunha em nuvem do cluster.This is the storage account that will be used for the cluster's cloud witness. Navegue na conta de armazenamento, selecione 'Teclas de acesso' e copie o valor de key1 .Navigate into the storage account, select Access Keys, and copy the value of key1. Também copie o nome da conta de armazenamento.Also copy the name of the storage account.

  6. Abra o ficheiro n-tier-windows-sqlao.json.Open the n-tier-windows-sqlao.json file.

  7. No n-tier-windows-sqlao.json ficheiro, procure todas as instâncias [replace-with-password] e [replace-with-sql-password] substitua-as por uma palavra-passe forte.In the n-tier-windows-sqlao.json file, search for all instances of [replace-with-password] and [replace-with-sql-password] and replace them with a strong password.

    Nota

    Se alterar o nome de utilizador do administrador, também deve atualizar os extensions blocos no ficheiro JSON.If you change the administrator user name, you must also update the extensions blocks in the JSON file.

  8. No n-tier-windows-sqlao.json ficheiro, procure todas as instâncias [replace-with-storageaccountname] e [replace-with-storagekey] substitua-as pelos valores do passo 5.In the n-tier-windows-sqlao.json file, search for all instances of [replace-with-storageaccountname] and [replace-with-storagekey] and replace them with the values from step 5. Guarde o ficheiro.Save the file.

  9. Executar o seguinte comando para configurar o SQL Server Always On.Run the following command to configure SQL Server Always On.

    azbb -s <your subscription_id> -g <resource_group_name> -l <location> -p n-tier-windows-sqlao.json --deploy
    

Passos seguintesNext steps