Editar

WordPress em máquinas virtuais

Azure Front Door
Azure Key Vault
Azure Load Balancer
Azure Virtual Network
Azure Virtual Machine Scale Sets

Este artigo descreve uma solução para alojar uma instalação grande e intensiva 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, o Azure Máquinas Virtuais e Azure NetApp Files.

Arquitetura

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

Transfira um ficheiro do Visio desta arquitetura.

Nota

Pode expandir esta solução ao implementar sugestões e recomendações que não sejam específicas de nenhum método de alojamento do WordPress específico. Para obter sugestões gerais para implementar uma instalação do WordPress, veja WordPress no Azure.

Fluxo de dados

  • Os utilizadores acedem ao site de front-end através do Azure Front Door com o Azure Firewall de Aplicações Web ativado.
  • O Azure Front Door utiliza uma instância interna de Balanceador de Carga do Azure como origem. O Azure Front Door obtém quaisquer dados que não estejam em cache.
  • O balanceador de carga interno distribui pedidos para o Azure Conjuntos de Dimensionamento de Máquinas Virtuais. Os conjuntos de dimensionamento consistem em servidores Web Ubuntu.
  • As chaves e outros segredos são armazenados no Azure Key Vault.
  • A aplicação WordPress utiliza um ponto final privado para aceder a uma instância de servidor flexível de Base de Dados do Azure para MySQL. A aplicação WordPress obtém informações dinâmicas da base de dados.
  • Todos os conteúdos estáticos são alojados em Azure NetApp Files e montados nas máquinas virtuais (VMs) através do protocolo NFS.

Componentes

  • O Azure Front Door é uma rede de entrega de conteúdos na cloud moderna. Como uma rede distribuída de servidores, o Azure Front Door fornece conteúdos Web de forma eficiente aos utilizadores. As redes de entrega de conteúdos minimizam a latência ao armazenar conteúdo em cache em servidores edge em localizações de ponto de presença perto dos utilizadores finais.
  • O Azure Rede Virtual fornece uma forma de os recursos implementados comunicarem entre si, a Internet e as redes no local. As redes virtuais fornecem isolamento e segmentação. Também filtram e encaminham o tráfego e permitem estabelecer ligações entre várias localizações. Nesta solução, as duas redes estão ligadas através do peering de rede virtual.
  • O Azure DDoS Protection fornece funcionalidades de mitigação de DDoS melhoradas. Quando combina estas funcionalidades com as melhores práticas de conceção de aplicações, estas ajudam a defender-se contra ataques DDoS. Deve ativar a Proteção de DDoS em redes virtuais de perímetro.
  • Os grupos de segurança de rede utilizam uma lista de regras de segurança para permitir ou negar tráfego de rede de entrada ou saída com base no endereço IP de origem ou de destino, porta e protocolo. Nas sub-redes deste cenário, as regras do grupo de segurança de rede restringem o fluxo de tráfego entre os componentes da aplicação.
  • Balanceador de Carga distribui o tráfego de entrada com base nas regras e nos resultados da pesquisa de estado de funcionamento. Um balanceador de carga fornece baixa latência e débito elevado. Ao espalhar o tráfego por vários servidores, um balanceador de carga adiciona escalabilidade às aplicações TCP (Transmission Control Protocol) e User Datagram Protocol (UDP). Neste cenário, um balanceador de carga distribui o tráfego da rede de entrega de conteúdos para os servidores Web front-end.
  • Conjuntos de Dimensionamento de Máquinas Virtuais fornece uma forma de criar e gerir um grupo de VMs idênticas com balanceamento de carga. O número de instâncias de VM pode aumentar ou diminuir automaticamente como resposta à procura ou horário definido. Neste cenário, são utilizados dois conjuntos de dimensionamento separados. Uma é para os servidores Web de front-end que servem conteúdos e um é para os servidores Web front-end que são utilizados para criar novos conteúdos.
  • Azure NetApp Files fornece uma solução de armazenamento sensível ao desempenho e latência totalmente gerida. Nesta solução, Azure NetApp Files aloja todos os conteúdos do WordPress para que todos os pods tenham acesso aos dados.
  • Cache do Azure para Redis é um arquivo de dados dentro da memória. Pode utilizar Cache do Azure para Redis para alojar uma cache chave-valor nesta solução. Essa cache é partilhada entre todos os pods e é utilizada para plug-ins de otimização de desempenho do WordPress.
  • Key Vault armazena e controla o acesso a palavras-passe, certificados e chaves.
  • Base de Dados do Azure para MySQL – o servidor flexível é um serviço de base de dados relacional baseado no motor de base de dados MySQL de código aberto. A opção de implementação flexível do servidor é um serviço totalmente gerido que fornece controlo granular e flexibilidade sobre as funções de gestão de bases de dados e as definições de configuração. Neste cenário, Base de Dados do Azure para MySQL armazena dados do WordPress.

Alternativas

Em vez de utilizar o serviço gerido Cache do Azure para Redis, pode utilizar um pod autoalojado numa VM como cache.

Detalhes do cenário

Este cenário de exemplo é adequado para instalações grandes e intensivas de armazenamento do WordPress. Este modelo de implementação pode ser dimensionado para corresponder a picos de tráfego para o site.

Potenciais casos de utilização

  • Blogues de tráfego elevado que utilizam o WordPress como o respetivo sistema de gestão de conteúdos
  • Sites empresariais ou de comércio eletrónico que utilizam o WordPress

Considerações

Estas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios orientadores que podem ser utilizados para melhorar a qualidade de uma carga de trabalho. Para obter mais informações, veja Microsoft Azure Well-Architected Framework.

Fiabilidade

A fiabilidade garante que a sua aplicação pode cumprir os compromissos que assumiu com os seus clientes. Para obter mais informações, veja Descrição geral do pilar de fiabilidade.

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

  • A solução utiliza Conjuntos de Dimensionamento de Máquinas Virtuais e um balanceador de carga para distribuir o tráfego de entrada. Esta abordagem fornece elevada disponibilidade mesmo que uma VM falhe.
  • Esta solução suporta várias regiões, replicação de dados e dimensionamento automático. Os componentes de rede distribuem o tráfego para as VMs. As sondas de estado de funcionamento são utilizadas para que o tráfego seja distribuído apenas para VMs em bom estado de funcionamento.
  • Todos os componentes de rede são apresentados pelo Azure Front Door. Esta abordagem torna os recursos de rede e a aplicação resilientes a problemas que, de outra forma, iriam interromper o tráfego e afetar o acesso do utilizador final.
  • O Azure Front Door é um serviço global que suporta conjuntos de dimensionamento de máquinas virtuais implementados noutra região.
  • Quando utiliza o Azure Front Door para colocar em cache todas as respostas, ganha um pequeno benefício de disponibilidade. Especificamente, quando a origem não responde, ainda pode aceder ao conteúdo. No entanto, a colocação em cache não fornece uma solução de disponibilidade completa.
  • Para aumentar a disponibilidade, replice Azure NetApp Files armazenamento entre regiões emparelhadas. Para obter mais informações, veja Replicação entre regiões com Azure NetApp Files.
  • Para aumentar Base de Dados do Azure para MySQL disponibilidade, siga as opções de elevada disponibilidade que satisfazem as suas necessidades.

Segurança

A segurança fornece garantias contra ataques deliberados e abuso dos seus valiosos dados e sistemas. Para obter mais informações, veja Descrição geral do pilar de segurança.

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

  • Utilize Firewall de Aplicações Web no Azure Front Door para ajudar a proteger o tráfego de rede virtual que flui para o escalão de aplicação de front-end. Para obter mais informações, veja Azure Firewall de Aplicações Web no Azure Front Door.
  • Não permita que o tráfego de saída da Internet flua a partir da camada da base de dados.
  • Não permita o acesso público ao armazenamento privado.
  • Desative o acesso público aos recursos sempre que aplicável. Utilize pontos finais privados para Base de Dados do Azure para MySQL, Cache do Azure para Redis e Key Vault.

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

Otimização de custos

A otimização de custos consiste em analisar formas de reduzir as despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, veja Descrição geral do pilar de otimização de custos.

Reveja as seguintes considerações de custos ao implementar esta solução:

  • Expectativas de tráfego (GB/mês). O volume de tráfego é o fator que tem o maior efeito no seu custo. A quantidade de tráfego que recebe determina o número de VMs de que precisa e o preço da transferência de dados de saída. O volume de tráfego também está diretamente correlacionado com a quantidade de dados fornecidos pela sua rede de entrega de conteúdos, onde os custos de transferência de dados de saída são mais baratos.
  • Quantidade de dados alojados. É importante considerar a quantidade de dados que aloja, uma vez que Azure NetApp Files preços se baseia na capacidade reservada. Para otimizar os custos, reserve a capacidade mínima de que precisa para os seus dados.
  • Percentagem de escrita. Considere a quantidade de dados novos que escreve no seu site e o custo para armazená-lo. Para implementações de várias regiões, a quantidade de novos dados que escreve no seu site está correlacionada com a quantidade de dados espelhados nas suas regiões.
  • Conteúdo estático versus dinâmico. Monitorize o desempenho e a capacidade do armazenamento da base de dados para determinar se um SKU mais barato pode suportar o seu site. A base de dados armazena conteúdo dinâmico e a rede de entrega de conteúdos coloca em cache o conteúdo estático.
  • Otimização da VM. Para otimizar os custos da VM, siga as sugestões gerais das VMs. Para obter mais informações, veja Sugestões de otimização de custos.

Eficiência de desempenho

Eficiência de desempenho é a capacidade da sua carga de trabalho para dimensionar para satisfazer as exigências que os utilizadores lhe colocam de forma eficiente. Para obter mais informações, veja Descrição geral do pilar Eficiência do desempenho.

Este cenário utiliza Conjuntos de Dimensionamento de Máquinas Virtuais para os dois clusters de servidorEs Web front-end em cada região. Com os conjuntos de dimensionamento, o número de instâncias de VM que executam o escalão de aplicação de front-end pode ser dimensionado automaticamente em resposta à procura do cliente. As VMs também podem ser dimensionadas com base numa agenda definida. Para obter mais informações, veja Descrição geral do dimensionamento automático com Conjuntos de Dimensionamento de Máquinas Virtuais.

Importante

Para um melhor desempenho, é essencial montar o armazenamento através da versão 4.1 do protocolo NFS. O exemplo de bash seguinte para o Ubuntu mostra-lhe como configurar a opção vers :

# 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

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuintes.

Autor principal:

Outros contribuidores:

  • Adrian Calinescu | Arquiteto Sénior de Soluções cloud

Para ver perfis do LinkedIn não públicos, inicie sessão no LinkedIn.

Passos seguintes

Documentação do produto:

Módulos de formação da Microsoft: