WordPress em máquinas virtuais

Porta da frente do Azure
Cofre de Chave do Azure
Azure Load Balancer
Rede Virtual do Azure
Conjuntos de Dimensionamento de Máquinas Virtuais do Azure

Este artigo descreve uma solução para hospedar uma instalação grande e com uso intensivo de armazenamento do WordPress no Azure. A solução maximiza a escalabilidade e a segurança. Os principais componentes da solução incluem o Azure Front Door, as Máquinas Virtuais do Azure e os Arquivos do Azure NetApp.

Arquitetura

Diagrama de arquitetura de uma implantação do WordPress em Conjuntos de Dimensionamento de Máquinas Virtuais do Azure. O Azure NetApp Files armazena conteúdo estático.

Baixe um Arquivo Visio dessa arquitetura.

Observação

Você pode estender esta solução implementando dicas e recomendações que não são específicas para qualquer método de hospedagem WordPress em particular. Para obter dicas gerais para implantar uma instalação do WordPress, consulte WordPress no Azure.

Fluxo de dados

  • Os usuários acessam o site front-end por meio do Azure Front Door com o Azure Web Application Firewall habilitado.
  • O Azure Front Door usa uma instância interna do Azure Load Balancer como origem. O Azure Front Door recupera todos os dados que não estão armazenados em cache.
  • O load balancer interno distribui as solicitações para os Conjuntos de Dimensionamento de Máquinas Virtuais do Azure. Os conjuntos de escala consistem em servidores web Ubuntu.
  • Chaves e outros segredos são armazenados no Azure Key Vault.
  • O aplicativo WordPress usa um ponto de extremidade privado para acessar uma instância de servidor flexível do Banco de Dados do Azure para MySQL. O aplicativo WordPress recupera informações dinâmicas do banco de dados.
  • Todo o conteúdo estático é hospedado no Azure NetApp Files e montado nas máquinas virtuais (VMs) por meio do protocolo NFS.

Componentes

  • O Azure Front Door é uma rede moderna de entrega de conteúdo na nuvem. Como uma rede distribuída de servidores, o Azure Front Door fornece conteúdo da Web de forma eficiente aos usuários. As Redes de entrega de conteúdo minimizam a latência armazenando conteúdos em cache nos servidores de borda em localizações de ponto de presença próximas aos usuários finais.
  • A Rede Virtual do Azure permite que recursos do Azure se comuniquem entre si, com a Internet e com redes locais. As redes virtuais proporcionam isolamento e segmentação. Eles também filtram e roteiam o tráfego e possibilitam estabelecer conexões entre vários locais. Nesta solução, as duas redes são conectadas via emparelhamento de rede virtual.
  • A Proteção contra DDoS do Azure fornece recursos de mitigação de DDoS avançados. Quando você combina esses recursos com as práticas recomendadas de design de aplicativos, eles ajudam a se defender contra ataques DDoS. Você deve habilitar a Proteção contra DDOS em qualquer rede virtual do perímetro.
  • Os grupos de segurança de rede contêm uma lista de regras de segurança que permitem ou rejeitam o tráfego de rede de entrada ou de saída com base no endereço IP de origem ou destino, na porta e no protocolo. Nas sub-redes desse cenário, as regras do grupo de segurança de rede restringem o fluxo de tráfego entre os componentes do aplicativo.
  • O Load Balancer distribui o tráfego de entrada de acordo com regras e investigações de integridade. O load balancer oferece baixa latência e alta taxa de transferência. Ao espalhar o tráfego por vários servidores, um load balancer adiciona escalabilidade aos aplicativos TCP (Transmission Control Protocol) e UDP (User Datagram Protocol). Nesse cenário, um load balancer distribui o tráfego da rede de entrega de conteúdo para os servidores Web front-end.
  • Os Conjuntos de Dimensionamento de Máquinas Virtuais do Azure permitem criar e gerenciar um grupo de VMs idênticas e com balanceamento de carga. O número de instâncias de VM pode aumentar ou diminuir automaticamente em resposta à demanda ou a um agendamento definido. Dois conjuntos de escala separados são usados nesse cenário. Uma é para os servidores Web front-end que servem conteúdo e outra é para os servidores Web front-end que são usados para criar novo conteúdo.
  • O Azure NetApp Files fornece uma solução de armazenamento totalmente gerenciada, com uso intensivo de desempenho e sensível à latência. Nesta solução, o Azure NetApp Files hospeda todo o conteúdo do WordPress para que todos os pods tenham acesso aos dados.
  • Azure Cache for Redis é um armazém de dados na memória. Você pode usar o Cache do Azure para Redis para hospedar um cache de chave-valor nesta solução. Esse cache é compartilhado entre todos os pods e é usado para plug-ins de otimização de desempenho do WordPress.
  • O Key Vault armazena e controla rigidamente o acesso a senhas, certificados e chaves.
  • O Banco de Dados do Azure para MySQL um serviço de banco de dados relacional com base no mecanismo de banco de dados MySQL de software livre. A opção flexível de implantação de servidor é um serviço totalmente gerenciado que fornece controle e flexibilidade mais granulares nas funções de gerenciamento de banco de dados e definições de configuração. Nesse cenário, o Banco de Dados do Azure para MySQL armazena dados do WordPress.

Alternativas

Em vez de usar o serviço gerenciado do Cache do Azure para Redis, você pode usar um pod autohospedado dentro de uma VM como O cache.

Detalhes do cenário

Este cenário de exemplo é apropriado para instalações grandes e com uso intensivo de armazenamento do WordPress. Esse modelo de implantação pode ser dimensionado para atender a picos de tráfego para o site.

Possíveis casos de uso

  • Blogs de alto tráfego que usam o WordPress como sistema de gestão de conteúdo.
  • Sites de comércio eletrônico ou de negócios que usam o WordPress

Considerações

Estas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios de orientação que podem ser usados para aprimorar a qualidade de uma carga de trabalho. Para obter mais informações, confira Microsoft Azure Well-Architected Framework.

Confiabilidade

A confiabilidade garante que seu aplicativo possa cumprir os compromissos que você assume com seus clientes. Para obter mais informações, confira Visão geral do pilar de confiabilidade.

Considere as seguintes recomendações ao implantar esta solução:

  • A solução usa Conjuntos de Dimensionamento de Máquina Virtual e um load balancer para distribuir o tráfego de entrada. Essa abordagem fornece alta disponibilidade mesmo se uma VM falhar.
  • Essa solução oferece suporte a várias regiões, replicação de dados e dimensionamento automático. Os componentes de rede distribuem o tráfego para as VMs. As investigações de integridade são usadas para que o tráfego seja distribuído apenas para VMs saudáveis.
  • Todos os componentes de rede são liderados pelo Azure Front Door. Essa abordagem torna os recursos de rede e aplicativo resilientes a problemas que, de outra forma, interromperiam o tráfego e impactariam o acesso do usuário final.
  • O Azure Front Door é um serviço global que dá suporte a conjuntos de dimensionamento de máquina virtual implantados em outra região.
  • Ao usar o Azure Front Door para armazenar em cache todas as respostas, você obtém um pequeno benefício de disponibilidade. Especificamente, quando a origem não responde, você ainda pode acessar o conteúdo. Mas o cache não fornece uma solução de disponibilidade completa.
  • Para aumentar a disponibilidade, replique o armazenamento do Azure NetApp Files entre regiões emparelhadas. Para saber mais, confira Replicação entre regiões com Azure NetApp Files.
  • Para aumentar a disponibilidade do Banco de Dados do Azure para MySQL, siga as opções de alta disponibilidade que atendem às suas necessidades.

Segurança

A segurança fornece garantias contra ataques deliberados e o abuso de seus dados e sistemas valiosos. Para saber mais, confira Visão geral do pilar de segurança.

Considere as seguintes recomendações ao implantar esta solução:

  • Use o Firewall de Aplicativo Web do Azure no Azure Front Door para ajudar a proteger o tráfego de rede virtual que flui para a camada de aplicativo front-end. Para obter mais informações, confira Firewall de Aplicativo Web do Azure no Azure Front Door.
  • Não permita que o tráfego de saída da Internet flua da camada do banco de dados.
  • Não permita acesso público ao armazenamento privado.
  • Desative o acesso público aos recursos, quando aplicável. Use pontos de extremidade privados para o Banco de Dados do Azure para MySQL, o Cache do Azure para Redis e o Key Vault.

Para obter mais informações sobre a segurança do WordPress, consulte Dicas gerais de segurança e desempenho do WordPress e documentação de segurança do Azure.

Otimização de custo

A otimização de custos é a análise de maneiras de reduzir as despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, confira Visão geral do pilar de otimização de custo.

Analise as seguintes considerações de custo ao implantar esta solução:

  • Expectativas de tráfego (GB/mês) Seu volume de tráfego é o fator que tem o maior efeito sobre seu custo. A quantidade de tráfego que você recebe determina o número de nós VMs que você precisa e o preço para transferência de dados de saída. O volume de tráfego também se correlaciona diretamente com a quantidade de dados fornecidos pela sua rede de entrega de conteúdo, onde os custos de transferência de dados de saída são mais baratos.
  • Quantidade de dados hospedados. É importante considerar a quantidade de dados que você hospeda, porque o preço do Azure NetApp Files é baseado na capacidade reservada. Para otimizar custos, reserve a capacidade mínima necessária para seus dados.
  • Porcentagem de gravação. Considere a quantidade de novos dados que você grava em seu site e o custo para armazená-los. Para implantações de várias regiões, a quantidade de novos dados que você grava em seu site se correlaciona com a quantidade de dados espelhados em suas regiões.
  • Conteúdo estático versus dinâmico. Monitore o desempenho e a capacidade de armazenamento do banco de dados para determinar se um SKU mais barato pode oferecer suporte ao seu site. O banco de dados armazena conteúdo dinâmico e a rede de entrega de conteúdo armazena em cache o conteúdo estático.
  • Otimização de VM. Para otimizar os custos de VM, siga as dicas gerais para VMs. Para obter mais informações, confira Dicas de otimização de custos.

Eficiência de desempenho

A eficiência do desempenho é a capacidade de dimensionar sua carga de trabalho para atender às demandas colocadas por usuários de maneira eficiente. Para obter mais informações, consulte Visão geral do pilar de eficiência de desempenho.

Este cenário usa os Conjuntos de Dimensionamento de Máquinas Virtuais para os dois clusters de servidor Web front-end em cada região. Com conjuntos de dimensionamento, o número de instâncias VM que executam a camada de aplicativo front-end pode dimensionar automaticamente em resposta à demanda do cliente. As VMs também podem escalar com base em um agendamento definido. Para saber mais, veja Visão geral sobre dimensionamento automático com conjuntos de dimensionamento de máquinas virtuais.

Importante

Para obter o melhor desempenho, é essencial montar o armazenamento por meio do protocolo NFS versão 4.1. O exemplo bash a seguir para Ubuntu mostra como configurar a vers opção:

# Install an NFS driver and create a directory.
$ apt-get install -y nfs-common && mkdir -p /var/www/html
# Add auto-mount on startup. (Replace the following code with
# instructions from the Azure portal, but change the vers value to 4.1.)
$ echo '<netapp_private_ip>:/<volume_name> /var/www/html nfs rw,hard,rsize=262144,wsize=262144,sec=sys,vers=4.1,tcp 0 0' >> /etc/fstab
# Mount the storage.
$ mount -a

Colaboradores

Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.

Autor principal:

Outros colaboradores:

  • Adrian Calinescu | Arquiteto de Soluções Cloud Sênior

Para ver perfis não públicos no LinkedIn, entre no LinkedIn.

Próximas etapas

Documentação do produto:

Módulos de treinamento da Microsoft: