Aplicativo de N camadas do Windows no Azure

Armazenamento de Blobs
DNS
Load Balancer
Rede Virtual
Máquinas Virtuais

Essa arquitetura de referência mostra como implantar máquinas virtuais (VMs) e uma rede virtual configurada para um aplicativo de N camadas , usando SQL Server no Windows para a camada 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. Implantar esta solução.Deploy this solution.

Arquitetura de N camadas usando o Microsoft AzureN-tier architecture using Microsoft Azure

Baixe um Arquivo Visio dessa arquitetura.Download a Visio file of this architecture.

ArquiteturaArchitecture

A arquitetura tem os seguintes componentes.The architecture has the following components.

GeralGeneral

  • Grupo de recursos.Resource group. Os grupos de recursos são usados para agrupar recursos do Azure para que possam ser gerenciados por tempo de vida, 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 do Azure.Availability zones are physical locations within an Azure region. Cada zona consiste em um ou mais data centers com energia, resfriamento e rede independentes.Each zone consists of one or more datacenters with independent power, cooling, and networking. Ao colocar VMs entre zonas, o aplicativo torna-se resiliente a falhas em uma zona.By placing VMs across zones, the application becomes resilient to failures within a zone.

Rede e balanceamento de cargaNetworking and load balancing

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

  • Gateway de aplicativo.Application gateway. O Gateway de aplicativo é um balanceador de carga de camada 7.Application Gateway is a layer 7 load balancer. Nessa arquitetura, ele roteia as solicitações HTTP para o front-end da web.In this architecture, it routes HTTP requests to the web front end. Gateway de Aplicativo também fornece um firewall do aplicativo Web (WAF) que protege o aplicativo contra vulnerabilidades e explorações comuns.Application Gateway also provides a web application firewall (WAF) that protects the application from common exploits and vulnerabilities.

  • Balanceadores de carga.Load balancers. Use o Azure Standard Load Balancer para distribuir o tráfego de rede da camada da Web para a camada de negócios e da camada de negócios para 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.

  • NSGs ( grupos de segurança de rede ).Network security groups (NSGs). Use NSGs para restringir o tráfego de rede na rede virtual.Use NSGs to restrict network traffic within the virtual network. Por exemplo, na arquitetura de três camadas mostrada aqui, a camada de banco de dados não aceita o tráfego de front-end da Web, somente da camada comercial e da sub-rede de gerenciamento.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.

  • Proteção contra DDoS.DDoS Protection. Embora a plataforma do Azure forneça proteção básica em relação a ataques de negação de serviço distribuído (DDoS), é recomendável usar Proteção contra DDoS Standard, que melhorou os recursos de mitigação de 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. Confira Considerações de segurança.See Security considerations.

  • DNS do Azure.Azure DNS. O DNS do Azure é um serviço de hospedagem para domínios DNS.Azure DNS is a hosting service for DNS domains. Ele fornece resolução de nomes usando a infraestrutura do Microsoft Azure.It provides name resolution using Microsoft Azure infrastructure. Ao hospedar seus domínios no Azure, você pode gerenciar seus registros DNS usando as mesmas credenciais, APIs, ferramentas e cobrança que 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

  • SQL Server Always on grupo de disponibilidade.SQL Server Always On Availability Group. Fornece alta disponibilidade na camada de dados, habilitando replicação e failover.Provides high availability at the data tier, by enabling replication and failover. Usa a tecnologia WSFC (Cluster de Failover do Windows Server) para o failover.It uses Windows Server Failover Cluster (WSFC) technology for failover.

  • Servidores AD DS (Active Directory Domain Services).Active Directory Domain Services (AD DS) Servers. Os objetos de computação do cluster de failover e suas funções em cluster associadas são criados no Active 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).

  • Testemunha de nuvem.Cloud Witness. Um cluster de failover requer mais da metade dos seus nós em execução, que é conhecido como ter quorum.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 partição de rede poderá fazer com que cada nó considere 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, é necessário uma testemunha para desempatar e estabelecer o quorum.In that case, you need a witness to break ties and establish quorum. Testemunha é um recurso, como um disco compartilhado, que pode agir como um desempate para estabelecer o quorum.A witness is a resource such as a shared disk that can act as a tie breaker to establish quorum. A Testemunha de Nuvem é um tipo que usa o Armazenamento de Blobs do Azure.Cloud Witness is a type of witness that uses Azure Blob Storage. Para saber mais sobre o conceito de quorum, consulte Entendendo o cluster e o quorum de pool.To learn more about the concept of quorum, see Understanding cluster and pool quorum. Para obter mais informações sobre a Testemunha de Nuvem, consulte Implantar uma Testemunha de Nuvem para um Cluster de Failover.For more information about Cloud Witness, see Deploy a Cloud Witness for a Failover Cluster.

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

RecomendaçõesRecommendations

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

Máquinas virtuaisVirtual machines

Para obter recomendações sobre como configurar as VMs, consulte executar uma VM do Windows no Azure.For recommendations on configuring the VMs, see Run a Windows VM on Azure.

Rede virtualVirtual network

Ao criar a rede virtual, determine quantos endereços IP seus recursos em cada sub-rede exigem.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 grande o suficiente para os endereços IP necessários, usando a notação CIDR .Specify a subnet mask and a network address range large enough for the required IP addresses, using CIDR notation. Use um espaço de endereço que esteja dentro dos blocos de endereço 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 local, caso você precise configurar um gateway entre a rede virtual e a rede 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. Depois de criar a rede virtual, você não pode alterar o intervalo de endereços.Once you create the virtual network, you can't change the address range.

Crie as sub-redes levando em conta os requisitos de funcionalidade e de segurança.Design subnets with functionality and security requirements in mind. Todas as VMs na mesma camada ou função devem ir para a mesma sub-rede, que 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 como criar redes virtuais e sub-redes, consulte planejar e projetar redes virtuais do Azure.For more information about designing virtual networks and subnets, see Plan and design Azure Virtual Networks.

Gateway de AplicativoApplication Gateway

Para obter informações sobre como configurar o gateway de aplicativo, consulte visão geral de configuração do gateway de aplicativo.For information about configuring Application Gateway, see Application Gateway configuration overview.

Balanceadores de cargaLoad balancers

Não exponha as VMs diretamente à Internet, concedendo, em vez disso, um endereço IP privado a cada VM.Don't expose the VMs directly to the Internet, but instead give each VM a private IP address. Os clientes se conectam usando o endereço IP público associado com o Gateway de Aplicativo.Clients connect using the public IP address associated with the Application Gateway.

Defina as regras do balanceador de carga para direcionar tráfego de rede para as VMs.Define load balancer rules to direct network traffic to the VMs. Por exemplo, para permitir tráfego HTTP, mapeie a porta 80 da configuração de front-end para a porta 80 no pool de endereços de back-end.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 uma solicitação HTTP para a porta 80, o balanceador de carga seleciona um endereço IP de back-end usando um algoritmo de 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. As solicitações de cliente são distribuídas por todas as VMs no pool de endereços de back-end.Client requests are distributed across all the VMs in the back-end address pool.

Grupos de segurança de redeNetwork security groups

Use as regras de NSG para restringir o tráfego entre as camadas.Use NSG rules to restrict traffic between tiers. Na arquitetura de três camadas mostrada acima, a camada da Web não se comunica diretamente com a camada de banco de dados.In the three-tier architecture shown above, the web tier does not communicate directly with the database tier. Para impor essa regra, a camada de banco de dados deve bloquear o tráfego de entrada da sub-rede da camada da 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. (Use a marca VIRTUAL_NETWORK na regra.)(Use the VIRTUAL_NETWORK tag in the rule.)
  2. Permita o tráfego de entrada da sub-rede de camada de negócios.Allow inbound traffic from the business tier subnet.
  3. Permita o tráfego de entrada da própria sub-rede de camada de dados.Allow inbound traffic from the database tier subnet itself. Essa regra permite a comunicação entre as VMs de banco de dados, que é necessária para failover e replicação de banco de dados.This rule allows communication between the database VMs, which is needed for database replication and failover.
  4. Permita o tráfego RDP (porta 3389) da sub-rede jumpbox.Allow RDP traffic (port 3389) from the jumpbox subnet. Essa regra permite que os administradores se conectem à camada de banco de dados do jumpbox.This rule lets administrators connect to the database tier from the jumpbox.

Criar regras de 2 – 4 com prioridade mais alta que a primeira regra, para que elas a substituam.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 usar os Grupos de Disponibilidade Always On para alta disponibilidade no SQL Server.We recommend Always On Availability Groups for SQL Server high availability. Antes do Windows Server 2016, os Grupos de Disponibilidade Always On exigiam um controlador de domínio e todos os nós no grupo de disponibilidade precisavam 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.

Outras camadas se conectam ao banco de dados por meio de um ouvinte do grupo de disponibilidade.Other tiers connect to the database through an availability group listener. O ouvinte permite que um cliente SQL se conecte 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. VMs que acessam o banco de dados precisam ser ingressadas no domínio.VMs that access the database must be joined to the domain. O cliente (neste caso, outra camada) usa o DNS para resolver o nome da rede virtual do ouvinte em endereços IP.The client (in this case, another tier) uses DNS to resolve the listener's virtual network name into IP addresses.

Configure um grupo de disponibilidade Always On do SQL Server da seguinte maneira:Configure the SQL Server Always On Availability Group as follows:

  1. Crie um cluster WSFC (Clustering de Failover do Windows Server), um Grupo de Disponibilidade Always On 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, consulte Introdução aos Grupos de disponibilidade Always On.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. Crie um ouvinte do grupo de disponibilidade e mapeie o nome DNS do ouvinte para o 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 do balanceador de carga para a porta de escuta do SQL Server (porta TCP 1433 por padrão).Create a load balancer rule for the SQL Server listening port (TCP port 1433 by default). A regra do balanceador de carga deve habilitar IP flutuante, também chamado de Retorno de Servidor Direto.The load balancer rule must enable floating IP, also called Direct Server Return. Isso faz com que a VM responda diretamente para o cliente, o que permite uma conexão direta com a réplica primária.This causes the VM to reply directly to the client, which enables a direct connection to the primary replica.

    Observação

    Quando o IP flutuante está habilitado, o número da porta de front-end deve ser igual ao número da porta de back-end na regra do 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 SQL tenta se conectar, o balanceador de carga roteia a solicitação de conexã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 um failover para outra réplica, o balanceador de carga encaminhará automaticamente as novas solicitações 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, consulte Configurar um ouvinte de ILB para Grupos de Disponibilidade Always On do SQL Server.For more information, see Configure an ILB listener for SQL Server Always On Availability Groups.

Durante um failover, as conexões de cliente existentes são fechadas.During a failover, existing client connections are closed. Após a conclusão do failover, novas conexões serão roteadas para a nova réplica primária.After the failover completes, new connections will be routed to the new primary replica.

Se seu aplicativo realiza muito mais leituras do que gravações, você pode descarregar algumas das consultas somente 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. Consulte Usar um ouvinte para se conectar a uma réplica secundária somente leitura (roteamento somente leitura).See Using a Listener to Connect to a Read-Only Secondary Replica (Read-Only Routing).

Teste a implantação por forçando um failover manual do grupo de disponibilidade.Test your deployment by forcing a manual failover of the availability group.

JumpboxJumpbox

Não permita o acesso RDP da Internet pública para as VMs que executam a carga de trabalho do aplicativo.Don't allow RDP access from the public Internet to the VMs that run the application workload. Em vez disso, todo acesso RDP a essas VMs deve passar pelo Jumpbox.Instead, all RDP access to these VMs should go through the jumpbox. Um administrador faz logon no jumpbox e, em seguida, faz logon na VM por meio do jumpbox.An administrator logs into the jumpbox, and then logs into the other VM from the jumpbox. O jumpbox permite que tráfego RDP da Internet, mas apenas de endereços IP conhecidos e seguros.The jumpbox allows RDP traffic from the Internet, but only from known, safe IP addresses.

O jumpbox tem requisitos de desempenho mínimo, por isso, selecione uma VM de tamanho pequeno.The jumpbox has minimal performance requirements, so select a small VM size. Crie um endereço IP público para o jumpbox.Create a public IP address for the jumpbox. Coloque o Jumpbox na mesma rede virtual que as outras VMs, mas em uma sub-rede de gerenciamento separada.Place the jumpbox in the same virtual network as the other VMs, but in a separate management subnet.

Para proteger o jumpbox, adicione uma regra NSG que permite conexões RDP somente 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 outras sub-redes para permitir o tráfego RDP da sub-rede de gerenciamento.Configure the NSGs for the other subnets to allow RDP traffic from the management subnet.

Considerações sobre escalabilidadeScalability considerations

Conjuntos de dimensionamentoScale sets

Para as camadas Web e Business, considere usar conjuntos de dimensionamento de máquinas virtuais em vez de implantar VMs separadas.For the web and business tiers, consider using virtual machine scale sets instead of deploying separate VMs. Um conjunto de dimensionamento facilita a implantação e gerenciamento de um conjunto de VMs idênticas e o dimensionamento automático de 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, VMs adicionais são acrescentadas automaticamente ao balanceador de carga.As the load on the VMs increases, additional VMs are automatically added to the load balancer. Considere usar os conjuntos de dimensionamento se você precisar aumentar as VMs rapidamente ou se precisar de dimensionamento automático.Consider scale sets if you need to quickly scale out VMs, or need to autoscale.

Há duas maneiras básicas de configurar as VMs implantadas em um conjunto de dimensionamento:There are two basic ways to configure VMs deployed in a scale set:

  • Use as extensões para configurar a VM depois que ela é implantada.Use extensions to configure the VM after it's deployed. Com essa abordagem, novas instâncias de VM podem levar mais tempo para ser iniciadas do que uma VM sem extensões.With this approach, new VM instances may take longer to start up than a VM with no extensions.

  • Implante um disco gerenciado com uma imagem de disco personalizada.Deploy a managed disk with a custom disk image. Essa opção pode ser mais rápida de implantar.This option may be quicker to deploy. Porém, isso requer que você mantenha a imagem atualizada.However, it requires you to keep the image up-to-date.

Para obter mais informações, confira Considerações de design para conjuntos de dimensionamento.For more information, see Design considerations for scale sets.

Dica

Ao usar qualquer solução de dimensionamento automático, teste-a com cargas de trabalho no nível de produção com bastante antecedência.When using any autoscale solution, test it with production-level workloads well in advance.

Limites de assinaturaSubscription limits

Cada assinatura do Azure tem limites padrão em vigor, 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. Você pode aumentar o limite enviando uma solicitação de suporte.You can increase the limit by filing a support request. Para saber mais, confira Assinatura e limites de serviço, cotas e restrições do Azure.For more information, see Azure subscription and service limits, quotas, and constraints.

Gateway de AplicativoApplication Gateway

O gateway de aplicativo dá suporte ao modo de capacidade fixa ou ao modo de dimensionamento automático.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 o uso do modo de dimensionamento automático para cargas de trabalho com tráfego variável.Consider using autoscaling mode for workloads with variable traffic. Para obter mais informações, consulte dimensionamento automático e gateway de aplicativo com redundância de zona v2For more information, see Autoscaling and Zone-redundant Application Gateway v2

Considerações sobre disponibilidadeAvailability considerations

As zonas de disponibilidade fornecem a melhor resiliência em uma única região.Availability zones provide the best resiliency within a single region. Se você precisar de uma disponibilidade ainda maior, considere replicar o aplicativo em duas regiões, usando o Gerenciador de tráfego do Azure para 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 Aplicativo de N camadas de várias regiões para alta disponibilidade.For more information, see Multi-region N-tier application for high availability.

Nem todas as regiões dão suporte a zonas de disponibilidade e nem todos os tamanhos de VM têm suporte em todas as zonas.Not all regions support availability zones, and not all VM sizes are supported in all zones. Execute o seguinte comando CLI do Azure para localizar as zonas com suporte para cada tamanho de 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 você implantar essa arquitetura em uma região que não oferece suporte a zonas de disponibilidade, coloque as VMs para cada camada 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. As VMs no mesmo conjunto de disponibilidade são implantadas 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 dimensionamento automaticamente usam grupos de posicionamento, que funcionam como um conjunto de disponibilidade implícito.Scale sets automatically use placement groups, which act as an implicit availability set.

Ao implantar em zonas de disponibilidade, use o SKU padrão de Azure Load Balancer e a SKU v2 do gateway de aplicativo.When deploying to availability zones, use the Standard SKU of Azure Load Balancer and the v2 SKU of Application Gateway. Essas SKUs dão suporte à redundância entre zonas.These SKUs support cross-zone redundancy. Para obter mais informações, consulte:For more information, see:

Uma única implantação de gateway de aplicativo 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, execute pelo menos duas instâncias.For production workloads, run at least two instances.

Investigações de integridadeHealth probes

O gateway de aplicativo e o Load Balancer usam investigações de integridade para monitorar a disponibilidade de instâncias de VM.Application Gateway and Load Balancer both use health probes to monitor the availability of VM instances.

  • O gateway de aplicativo sempre usa uma investigação HTTP.Application Gateway always uses an HTTP probe.
  • Load Balancer pode testar HTTP ou TCP.Load Balancer can test either HTTP or TCP. Em geral, se uma VM executar um servidor HTTP, use uma investigação HTTP.Generally, if a VM runs an HTTP server, use an HTTP probe. Caso contrário, use TCP.Otherwise, use TCP.

Se uma investigação não puder alcançar uma instância dentro de um período de tempo limite, o gateway ou o balanceador de carga interromperá o envio de tráfego para essa 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 investigação continua a verificar e retornará a VM para o pool de back-end se a VM ficar disponível novamente.The probe continues to check and will return the VM to the back-end pool if the VM becomes available again.

As investigações HTTP enviam uma solicitação HTTP GET para um caminho especificado e escutam uma resposta HTTP 200.HTTP probes send an HTTP GET request to a specified path and listen for an HTTP 200 response. Esse caminho pode ser o caminho raiz (“/”) ou um ponto de extremidade de monitoramento de integridade que implementa lógica personalizada para verificar a integridade do aplicativo.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 de extremidade deve permitir solicitações HTTP anônimas.The endpoint must allow anonymous HTTP requests.

Para obter mais informações sobre investigações de integridade, consulte:For more information about health probes, see:

Para obter considerações sobre a criação de um ponto de extremidade de investigação de integridade, consulte padrão de monitoramento do ponto de extremidadeFor considerations about designing a health probe endpoint, see Health Endpoint Monitoring pattern.

Considerações de custoCost considerations

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

conjuntos de escala de máquina virtualVirtual machine scale sets

Os conjuntos de dimensionamento de máquinas virtuais estão disponíveis em todos os tamanhos de VM do Windows.Virtual machine scale sets are available on all Windows VM sizes. Você é cobrado somente pelas VMs do Azure implantadas e quaisquer recursos adicionais de infraestrutura subjacente consumidos, como armazenamento e rede.You are only charged for the Azure VMs you deploy and any additional underlying infrastructure resources consumed such as storage and networking. Não há encargos incrementais para o serviço de conjuntos de dimensionamento de máquinas virtuais.There are no incremental charges for the virtual machine scale sets service.

Para opções de preços de VMs únicas, consulte preços de VMs do WindowsFor single VMs pricing options See Windows VMs pricing

SQL ServerSQL server

Se você escolher Azure SQL DBaas, poderá economizar em custo porque não precisa configurar um grupo de disponibilidade Always On e computadores do 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. Há várias opções de implantação a partir de um banco de dados individual até a instância gerenciada ou pools elásticos.There are several deployment options starting from single database up to managed instance, or elastic pools. Para obter mais informações, consulte preços do Azure SQL.For more information see Azure SQL pricing.

Para as opções de preços das VMs do SQL Server, consulte preços de VMs do SQL.For SQL server VMs pricing options see SQL VMs pricing.

Balanceadores de cargaLoad balancers

Você é cobrado apenas pelo número de regras de balanceamento de carga e de saída configuradas.You are charged only for the number of configured load-balancing and outbound rules. As regras de NAT de entrada são gratuitas.Inbound NAT rules are free. Não há cobrança por hora para o Standard Load Balancer quando nenhuma regra é configurada.There is no hourly charge for the Standard Load Balancer when no rules are configured.

Para obter mais informações, confira a seção de custo em Estrutura Bem Projetada do Microsoft Azure.For more information, see the cost section in Microsoft Azure Well-Architected Framework.

Considerações de segurançaSecurity considerations

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, as VMs em uma rede virtual não podem se comunicar diretamente com as VMs em uma rede virtual diferente.By default, VMs in one virtual network can't communicate directly with VMs in a different virtual network. No entanto, você pode conectar redes virtuais explicitamente usando o emparelhamento de rede virtual.However, you can explicitly connect virtual networks by using virtual network peering.

NSGs.NSGs. Use NSGs ( grupos de segurança de rede ) 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, consulte Serviços em nuvem da Microsoft e segurança de rede.For more information, see Microsoft cloud services and network security.

DMZ.DMZ. Considere adicionar uma NVA (solução de virtualização de rede) para criar uma DMZ 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. NVA é um termo genérico para uma solução de virtualização que pode executar tarefas relacionadas à rede, como firewall, inspeção de pacotes, auditoria e roteamento 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, consulte Implementação de uma DMZ entre o Azure e a Internet.For more information, see Implementing a DMZ between Azure and the Internet.

Criptografia.Encryption. Criptografe dados confidenciais em repouso e use o Azure Key Vault para gerenciar as chaves de criptografia de banco 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 criptografia em HSMs (módulos de segurança de hardware).Key Vault can store encryption keys in hardware security modules (HSMs). Para saber mais, consulte Configurar a Integração do Cofre de Chaves do Azure para o SQL nas VMs do Azure.For more information, see Configure Azure Key Vault Integration for SQL Server on Azure VMs. Também é recomendado para armazenar segredos do aplicativo, como cadeias de caracteres de conexão de banco de dados, no cofre de chaves.It's also recommended to store application secrets, such as database connection strings, in Key Vault.

Proteção contra DDoS.DDoS protection. A plataforma do Azure fornece a proteção contra DDoS básica por padrão.The Azure platform provides basic DDoS protection by default. Essa proteção básica se destina a proteger a infraestrutura do Azure como um todo.This basic protection is targeted at protecting the Azure infrastructure as a whole. Embora a proteção contra DDoS básica esteja habilitada automaticamente, é recomendável usar a Proteção contra DDoS Standard.Although basic DDoS protection is automatically enabled, we recommend using DDoS Protection Standard. A proteção Standard utiliza ajuste adaptável, com base nos padrões de tráfego de rede do seu aplicativo, para detectar ameaças.Standard protection uses adaptive tuning, based on your application's network traffic patterns, to detect threats. Isso permite aplicar mitigações de risco contra ataques de DDoS que podem não ser detectadas pelas políticas de DDoS de 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 Standard também fornece alertas, telemetria e análise por meio do Azure Monitor.Standard protection also provides alerting, telemetry, and analytics through Azure Monitor. Para obter mais informações, confira Proteção contra DDoS do Azure: práticas recomendadas 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 do Azure] [AZbb-Template] para provisionar os recursos do Azure e suas dependências.In this architecture you use [Azure Building Blocks templates][azbb-template] for provisioning the Azure resources and its dependencies. Como todos os principais recursos e suas dependências estão na mesma rede virtual, eles são isolados na mesma carga de trabalho básica, o que torna mais fácil associar os recursos específicos da carga de trabalho a uma equipe, para que a equipe possa gerenciar de forma independente todos os aspectos 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. Esse isolamento permite que o DevOps execute a integração contínua e a entrega contínua (CI/CD).This isolation enables DevOps to perform continuous integration and continuous delivery (CI/CD).

Além disso, você pode usar modelos de implantação diferentes e integrá-los com Azure DevOps Services para provisionar ambientes diferentes em minutos, por exemplo, para replicar produção, como cenários ou ambientes de teste de carga, somente quando necessário, economizando custo.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 usando extensões de máquina virtual, pois oferecem a possibilidade de instalar determinados softwares adicionais, como agentes antimalware e 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 de VM são instaladas e executadas somente no momento da criação da VM.VM Extensions are installed and executed only at VM creation time. Isso significa que se o sistema operacional for configurado incorretamente em um estágio posterior, ele exigirá uma intervenção manual para movê-lo de volta para 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 gerenciamento de configuração, em particular de configuração de estado desejado (DSC), são usadas nesta arquitetura para configurar Active Directory e um SQL Server Always On grupo de disponibilidade.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 usar o Azure Monitor para analisar e otimizar o desempenho de sua infraestrutura e monitorar e diagnosticar problemas de rede sem fazer logon em 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. A Application Insights é, na verdade, um dos componentes do Azure Monitor, que fornece métricas e logs avançados para verificar o estado do seu cenário completo 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. Azure Monitor ajudará a seguir o estado da sua infraestrutura.Azure Monitor will help you to follow the state of your infrastructure.

Certifique-se de não apenas monitorar seus elementos de computação que dão suporte ao código do aplicativo, mas também à plataforma de dados, em particular seus bancos de dados, uma vez que um baixo desempenho da camada do aplicativo pode ter conseqüências sérias.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 do Azure onde os aplicativos estão em execução, ele deve ser controlado por versão e implantado por meio dos mesmos mecanismos que o código do aplicativo, então ele também pode ser testado e validado usando paradigmas de teste DevOps.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 obter mais informações, consulte a seção excelência operacional no Azure Well-Architected Framework.For more information, see the Operational Excellence section in Azure Well-Architected Framework.

Implantar a soluçãoDeploy the solution

Uma implantação para essa arquitetura de referência está disponível no GitHub.A deployment for this reference architecture is available on GitHub. Toda a implantação pode levar até uma hora, o que inclui a execução dos scripts para configurar AD DS, o cluster de failover do Windows Server e o grupo de disponibilidade 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 você especificar uma região que ofereça suporte a zonas de disponibilidade, as VMs serão implantadas em zonas de disponibilidade.If you specify a region that supports availability zones, the VMs are deployed into availability zones. Caso contrário, as VMs são implantadas em conjuntos de disponibilidade.Otherwise, the VMs are deployed into availability sets. Para obter uma lista de regiões que dão suporte a zonas de disponibilidade, consulte suporte a serviços por região.For a list of regions that support availability zones, see Services support by region.

Pré-requisitosPrerequisites

  1. Clone, crie um fork ou baixe o arquivo zip das arquiteturas de referência no repositório GitHub.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. Instalar o Node e o NPMInstall Node and NPM

  4. Instale o pacote npm dos Blocos de construção do Azure.Install the Azure building blocks npm package.

    npm install -g @mspnp/azure-building-blocks
    
  5. Em um prompt de comando, prompt do bash ou prompt do PowerShell, entre na sua conta do Azure da seguinte maneira:From a command prompt, bash prompt, or PowerShell prompt, sign into your Azure account as follows:

    az login
    

Etapas de implantação.Deployment steps

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

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

  3. No n-tier-windows.json arquivo, pesquise todas as instâncias do [replace-with-password] e [replace-with-safe-mode-password] substitua-as por uma senha 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. Salve o arquivo.Save the file.

    Observação

    Se você alterar o nome de usuário do administrador, também terá que atualizar os blocos extensions no arquivo JSON.If you change the administrator user name, you must also update the extensions blocks in the JSON file.

  4. Execute 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 for concluída, abra o portal do Azure e navegue até o grupo de recursos.When the deployment is complete, open the Azure portal and navigate to the resource group. Localize a conta de armazenamento que começa com ' sqlcw '.Find the storage account that begins with 'sqlcw'. Essa é a conta de armazenamento que será usada para a testemunha de nuvem do cluster.This is the storage account that will be used for the cluster's cloud witness. Navegue até a conta de armazenamento, selecione chaves de acesso e copie o valor de key1 .Navigate into the storage account, select Access Keys, and copy the value of key1. Copie também o nome da conta de armazenamento.Also copy the name of the storage account.

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

  7. No n-tier-windows-sqlao.json arquivo, pesquise todas as instâncias do [replace-with-password] e [replace-with-sql-password] substitua-as por uma senha 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.

    Observação

    Se você alterar o nome de usuário do administrador, também terá que atualizar os blocos extensions no arquivo 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 arquivo, procure todas as instâncias de [replace-with-storageaccountname] e [replace-with-storagekey] e as substitua pelos valores da etapa 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. Salve o arquivo.Save the file.

  9. Execute o comando a seguir para configurar 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
    

Próximas etapasNext steps