WordPress en máquinas virtuales

Azure Front Door
Azure Key Vault
Azure Load Balancer
Azure Virtual Network
Conjuntos de escalado de máquinas virtuales de Azure

En este artículo se describe una solución para hospedar una instalación grande y intensiva de almacenamiento de WordPress en Azure. La solución maximiza la escalabilidad y la seguridad. Los componentes clave de la solución incluyen Azure Front Door, Azure Virtual Machines y Azure NetApp Files.

Architecture

Diagrama de arquitectura de una implementación de WordPress en Azure Virtual Machine Scale Sets. Azure NetApp Files almacena contenido estático.

Descargue un archivo Visio de esta arquitectura.

Nota

Puede ampliar esta solución si implementa sugerencias y recomendaciones que no son específicas de ningún método de hospedaje de WordPress determinado. Para obtener sugerencias generales para implementar una instalación de WordPress, consulte WordPress en Azure.

Flujo de datos

  • Los usuarios acceden al sitio web del front-end a través de Azure Front Door con Azure Web Application Firewall habilitado.
  • Azure Front Door usa una instancia interna de Azure Load Balancer como origen. Azure Front Door recupera los datos que no están almacenados en caché.
  • El equilibrador de carga interno distribuye las solicitudes a Azure Virtual Machine Scale Sets. Los conjuntos de escalado constan de servidores web de Ubuntu.
  • Las claves y otros secretos se almacenan en Azure Key Vault.
  • La aplicación WordPress usa un punto de conexión privado para acceder a una instancia de servidor flexible de Azure Database for MySQL. La aplicación WordPress recupera información dinámica de la base de datos.
  • Todo el contenido estático se hospeda en Azure NetApp Files y se monta en las máquinas virtuales (VM) a través del protocolo NFS.

Componentes

  • Azure Front Door es una red moderna de entrega de contenido en la nube. Como red distribuida de servidores, Azure Front Door entrega eficazmente contenido web a los usuarios. Las redes CDN minimizan la latencia al guardar contenido almacenado en caché en servidores perimetrales en ubicaciones de punto de presencia cercanas a los usuarios finales.
  • Azure Virtual Network proporciona una vía para que los recursos implementados se comuniquen entre sí, con Internet y con las redes locales. Las redes virtuales proporcionan aislamiento y segmentación. También filtran y enrutan el tráfico y permiten establecer conexiones entre varias ubicaciones. En esta solución, las dos redes se conectan a través del emparejamiento de redes virtuales.
  • Azure DDoS Protection proporciona características mejoradas de mitigación de DDoS. Al combinar estas características con procedimientos recomendados de diseño de aplicaciones, ayudan a defenderse frente a ataques DDoS. Debería habilitar DDoS Protection en redes virtuales perimetrales.
  • Los grupos de seguridad de red usan una lista de reglas de seguridad para permitir o denegar el tráfico de red entrante o saliente en función de la dirección IP de origen o destino, el puerto y el protocolo. En las subredes de este escenario, las reglas del grupo de seguridad de red restringen el flujo de tráfico entre los componentes de la aplicación.
  • Load Balancer distribuye el tráfico entrante basado en las reglas y los resultados de sondeos de mantenimiento. Un equilibrador de carga proporciona baja latencia y alto rendimiento. Al distribuir el tráfico entre varios servidores, un equilibrador de carga agrega escalabilidad a las aplicaciones Protocolo de control de transmisión (TCP) y Protocolo de datagramas de usuario (UDP). En este escenario, un equilibrador de carga distribuye el tráfico de la red de entrega de contenido a los servidores front-end web.
  • Los Microsoft Azure Virtual Machine Scale Sets permiten crear y administrar un grupo de VM idénticas con equilibrio de carga. El número de instancias de máquina virtual puede aumentar o disminuir automáticamente según la demanda, o de acuerdo a una programación definida. En este escenario se usan dos conjuntos de escalado independientes. Uno es para los servidores web front-end que sirven contenido y otro para los servidores web front-end que se usan para crear contenido nuevo.
  • Azure NetApp Files proporciona una solución de almacenamiento totalmente administrada con un rendimiento intensivo y sensible a la latencia. En esta solución, Azure NetApp Files hospeda todo el contenido de WordPress para que todos los pods tengan acceso a los datos.
  • Azure Cache for Redis es un almacén de datos en memoria. Puede usar Azure Cache for Redis para hospedar una caché de clave-valor en esta solución. Esa memoria caché se comparte entre todos los pods y se usa para los complementos de optimización del rendimiento de WordPress.
  • Key Vault almacena y controla el acceso a contraseñas, certificados y claves.
  • Azure Database for MySQL: servidor flexible es un servicio de base de datos relacional que se basa en el motor de base de datos MySQL de código abierto. La opción de implementación de servidor flexible es un servicio totalmente administrado que proporciona control y flexibilidad granulares sobre las funciones de administración de bases de datos y las opciones de configuración. En este escenario, Azure Database for MySQL almacena datos de WordPress.

Alternativas

En lugar de usar el servicio administrado Azure Cache for Redis, puede usar un pod autohospedado dentro de una máquina virtual como caché.

Detalles del escenario

Este escenario de ejemplo es adecuado para instalaciones grandes e intensivas de almacenamiento de WordPress. Este modelo de implementación se puede escalar para atender los picos de tráfico del sitio.

Posibles casos de uso

  • Blogs de gran tráfico que usan WordPress como su sistema de administración de contenido
  • Sitios web de empresa o de comercio electrónico que usan WordPress

Consideraciones

Estas consideraciones implementan los pilares del marco de buena arquitectura de Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad de una carga de trabajo. Para más información, consulte Marco de buena arquitectura de Microsoft Azure.

Confiabilidad

La confiabilidad garantiza que la aplicación pueda cumplir los compromisos contraídos con los clientes. Para más información, consulte Resumen del pilar de fiabilidad.

Tenga en cuenta las siguientes recomendaciones al implementar esta solución:

  • La solución usa Virtual Machine Scale Sets y un equilibrador de carga para distribuir el tráfico de entrada. Este enfoque proporciona alta disponibilidad incluso si se produce un error en una máquina virtual.
  • Esta solución admite varias regiones, replicación de datos y escalado automático. Los componentes de red distribuyen el tráfico a las máquinas virtuales. Los sondeos de estado se usan para que el tráfico se distribuya solo a máquinas virtuales en buen estado.
  • Azure Front Door administra todos los componentes de red. Esto hace que los recursos y aplicaciones de red sean resistentes frente a problemas que, de lo contrario, interrumpirían el tráfico y afectarían el acceso de los usuarios finales.
  • Azure Front Door es un servicio global que admite conjuntos de escalado de máquinas virtuales que se implementan en otra región.
  • Usar Azure Front Door para almacenar en caché todas las respuestas mejorará levemente su disponibilidad. En concreto, podrá acceder al contenido incluso cuando el origen no responda. Pero el almacenamiento en caché no proporciona una solución de disponibilidad completa.
  • Para aumentar la disponibilidad, replique el almacenamiento de Azure NetApp Files entre regiones emparejadas. Para obtener más información, vea Replicación entre regiones con Azure NetApp Files.
  • Para aumentar la disponibilidad de Azure Database for MySQL, siga las opciones de alta disponibilidad que satisfagan sus necesidades.

Seguridad

La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.

Tenga en cuenta las siguientes recomendaciones al implementar esta solución:

  • Use Web Application Firewall en Azure Front Door para ayudar a proteger el tráfico de red virtual que fluye al nivel de aplicación de front-end. Para más información, consulte Azure Web Application Firewall en Azure Front Door.
  • No permita que el tráfico saliente de Internet fluya desde el nivel de base de datos.
  • No permita el acceso público al almacenamiento privado.
  • Deshabilite el acceso público a los recursos cuando corresponda. Use puntos de conexión privados para Azure Database for MySQL, Azure Cache for Redis y Key Vault.

Para más información sobre la seguridad de WordPress, consulte Sugerencias generales de seguridad y rendimiento de WordPress y Documentación de seguridad de Azure.

Optimización de costos

La optimización de costos trata de buscar formas de reducir los gastos innecesarios y mejorar las eficiencias operativas. Para más información, vea Información general del pilar de optimización de costos.

Revise las siguientes consideraciones sobre los costes al implementar esta solución:

  • Expectativas de tráfico (GB/mes). El volumen de tráfico es el factor que tiene el mayor efecto en el costo. La cantidad de tráfico que recibe determina el número de VM que necesita y el precio de la transferencia de datos de salida. El volumen de tráfico también se correlaciona directamente con la cantidad de datos proporcionados por la red de entrega de contenido, donde los costes de transferencia de datos salientes son más baratos.
  • Cantidad de datos hospedados. Debe tener en cuenta la cantidad de datos que hospeda, ya que los precios de Azure NetApp Files se basan en la capacidad reservada. Para optimizar los costes, reserve la capacidad mínima que necesita para los datos.
  • Porcentaje de escritura. Tenga en cuenta la cantidad de datos nuevos que escribe en el sitio web y el coste de almacenarlos. En el caso de las implementaciones de varias regiones, la cantidad de datos nuevos que escriba en el sitio web se correlaciona con la cantidad de datos reflejados en las regiones.
  • Contenido estático frente a contenido dinámico. Supervise el rendimiento y la capacidad del almacenamiento de la base de datos para determinar si una SKU más barata puede admitir el sitio. La base de datos almacena contenido dinámico y la red de entrega de contenido almacena en caché el contenido estático.
  • Optimización de VM. Para optimizar los costes de máquina virtual, siga las sugerencias generales para las máquinas virtuales. Para obtener más información, consulte Sugerencias de optimización de costos.

Eficiencia del rendimiento

La eficiencia del rendimiento es la capacidad de la carga de trabajo para escalar con el fin de satisfacer de manera eficiente las demandas que los usuarios hayan ejercido sobre ella. Para obtener más información, vea Resumen del pilar de eficiencia del rendimiento.

Este escenario utiliza conjuntos de escalado de máquinas virtuales para los dos clústeres de servidores web front-end en cada región. Con los conjuntos de escalado, el número de instancias de máquina virtual que se ejecutan en la capa de aplicación de front-end se puede escalar de forma automática en respuesta a la demanda del cliente. Las máquinas virtuales también se pueden escalar en función de una programación definida. Para más información, consulte Introducción al escalado automático con conjuntos de escalado de máquinas virtuales.

Importante

Para obtener el mejor rendimiento, es esencial montar el almacenamiento a través del protocolo NFS versión 4.1. En el ejemplo de Bash siguiente para Ubuntu se muestra cómo configurar la opción 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

Colaboradores

Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.

Autor principal:

Otros colaboradores:

  • Adrian Calinescu | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes

Documentación del producto:

Módulos de formación de Microsoft: