Aplicativo de N camadas do Windows no Hub de Azure Stack com SQL ServerWindows N-tier application on Azure Stack Hub with SQL Server

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.

ArquiteturaArchitecture

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

O diagrama mostra uma rede virtual composta por seis sub-redes: gateway de aplicativo, gerenciamento, camada da Web, camada de negócios, camada de dados e Active Directory.

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.

  • Conjunto de disponibilidade.Availability Set. O conjunto de disponibilidade é uma configuração de datacenter para fornecer redundância e disponibilidade de VM.Availability set is a datacenter configuration to provide VM redundancy and availability. Essa configuração dentro de um carimbo de Azure Stack Hub garante que, durante um evento de manutenção planejada ou não planejada, pelo menos uma máquina virtual esteja disponível.This configuration within an Azure Stack Hub stamp ensures that during either a planned or unplanned maintenance event, at least one virtual machine is available. As VMs são colocadas em um conjunto de disponibilidade que as espalha em vários domínios de falha (Azure Stack hosts de Hub)VMs are placed in an availability set that spreads them across multiple fault domains (Azure Stack Hub hosts)

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.

  • Camada 7 Load Balancer.Layer 7 Load Balancer. Como o gateway de aplicativo ainda não está disponível no Hub de Azure Stack, há alternativas disponíveis no mercado de Azure Stack local , como: Kemp loadmestre Load Balancer ADC Content switch / F5 Big-IP Virtual Edition ou a10 vThunder ADCAs Application Gateway is not yet available on Azure Stack Hub, there are alternatives available on Azure Stack Hub Market place such as: KEMP LoadMaster Load Balancer ADC Content Switch/ f5 Big-IP Virtual Edition or A10 vThunder ADC

  • Balanceadores de carga.Load balancers. Use Azure 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 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.

  • DNS.DNS. O Hub de Azure Stack não fornece seu próprio serviço de Hospedagem de DNS, portanto, use o servidor DNS em seu ADDS.Azure Stack Hub does not provide its own DNS hosting service, so please use the DNS server in your ADDS.

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). Configurar AD DS servidores em VMs na mesma rede virtual são o método preferencial para unir outras VMs a AD DS.Set up AD DS servers in VMs in the same virtual network are preferred method to join other VMs to AD DS. Você também pode unir as VMs à AD DS empresarial existentes conectando a rede virtual à rede corporativa com a conexão VPN.You can also join the VMs to existing Enterprise AD DS by connecting virtual network to Enterprise network with VPN connection. Com ambas as abordagens, você precisa alterar o DNS da rede virtual para seu servidor DNS AD DS (na rede virtual ou rede corporativa existente) para resolver o FQDN do domínio AD DS.With both approaches, you need to change the virtual network DNS to your AD DS DNS server (in virtual network or existing Enterprise network) to resolve the AD DS domain FQDN.

  • 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 tem apenas dois nós, uma partição de rede pode fazer com que cada nó pense que é o principal.If the cluster has just two nodes, a network partition could cause each node to think it's the master 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. No Hub Azure Stack, o ponto de extremidade de testemunha de nuvem é diferente do Azure global.In Azure Stack Hub, the Cloud Witness endpoint is different from global Azure.

Pode ser semelhante a:It may look like:

  • Para o Azure global:For global Azure:
    https://mywitness.blob.core.windows.net/

  • Para Azure Stack Hub:For Azure Stack Hub:
    https://mywitness.blob.<region>.<FQDN>

  • 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 Hub Azure Stack.For recommendations on configuring the VMs, see Run a Windows VM on Azure Stack Hub.

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.

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 à Load Balancer de camada 7.Clients connect using the public IP address associated with the Layer 7 Load Balancer.

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 de 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 2 – 4 com prioridade mais alta do que a primeira regra, portanto, elas substituem.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.

Para alta disponibilidade da camada de VM, todas as VMs do SQL devem estar em um conjunto de disponibilidade.For VM layer high availability, all SQL VMs should be in an Availability Set.

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 fizer mais leituras do que gravações, você poderá descarregar algumas das consultas somente leitura em uma réplica secundária.If your application makes 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.

Para a otimização de desempenho do SQL, você também pode consultar o artigo práticas recomendadas do SQL Server para otimizar o desempenho no Hub Azure Stack.For SQL performance optimization, you can also refer the article SQL server best practices to optimize performance in Azure Stack Hub.

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 o gerenciamento de um conjunto de VMs idênticas.A scale set makes it easy to deploy and manage a set of identical VMs. Considere os conjuntos de dimensionamento se você precisar expandir rapidamente as VMs.Consider scale sets if you need to quickly scale out VMs.

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. Essa consideração de design é principalmente verdadeira para o Hub de Azure Stack, mas há algumas limitações:This design consideration is mostly true for Azure Stack Hub, however there are some caveats:

  • Os conjuntos de dimensionamento de máquinas virtuais no Hub Azure Stack não dão suporte ao provisionamento em excesso ou atualizações sem interrupção.Virtual machine scale sets on Azure Stack Hub do not support overprovisioning or rolling upgrades.

  • Não é possível dimensionar automaticamente os conjuntos de dimensionamento de máquinas virtuais no Hub Azure Stack.You cannot autoscale virtual machine scale sets on Azure Stack Hub.

  • É altamente recomendável usar discos gerenciados no Hub Azure Stack em vez de discos não gerenciados para o conjunto de dimensionamento de máquinas virtuaisWe strongly recommend using Managed disks on Azure Stack Hub instead of unmanaged disks for virtual machine scale set

  • Atualmente, há um limite de VM de 700 no Hub Azure Stack, que conta para todas as VMs de infraestrutura de Hub Azure Stack, VMs individuais e instâncias de conjunto de dimensionamento.Currently, there is a 700 VM limit on Azure Stack Hub, which accounts for all Azure Stack Hub infrastructure VMs, individual VMs, and scale set instances.

Limites de assinaturaSubscription limits

Cada assinatura de locatário de Hub de Azure Stack tem limites padrão em vigor, incluindo um número máximo de VMs por região configuradas pelo operador de Hub de Azure Stack.Each Azure Stack Hub tenant subscription has default limits in place, including a maximum number of VMs per region configured by the Azure Stack Hub operator. Para obter mais informações, consulte visão geral dos serviços Azure Stack Hub, planos, ofertas, assinaturas.For more information, see Azure Stack Hub services, plans, offers, subscriptions overview. Consulte também os tipos de cota no Hub Azure Stack.Also refer to Quota types in Azure Stack Hub.

Considerações sobre 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.

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.

Criptografia.Encryption. Criptografe dados confidenciais em repouso e use Key Vault no Hub Azure Stack para gerenciar as chaves de criptografia do banco de dados.Encrypt sensitive data at rest and use Key Vault in Azure Stack Hub to manage the database encryption keys. 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.

Próximas etapasNext steps