WordPress en Azure Kubernetes Service

Azure Cache for Redis
Azure Front Door
Azure Kubernetes Service (AKS)
Azure Load Balancer
Azure NetApp Files

En este artículo se describe una solución de contenedor 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 incluyen Azure Front Door, Azure Kubernetes Service (AKS) y Azure NetApp Files.

Architecture

Architecture diagram of an AKS WordPress deployment. Azure NetApp Files stores static content. Private endpoints provide access to other services.

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. El equilibrador de carga interno es un componente oculto de AKS. Azure Front Door recupera los datos que no están almacenados en caché.
  • El equilibrador de carga interno distribuye el tráfico de entrada a los pods dentro de AKS.
  • Azure Key Vault almacena secretos, como la clave privada, que es un certificado X.509.
  • 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 este servicio de base de datos administrado.
  • Todo el contenido estático se hospeda en Azure NetApp Files. La solución usa el controlador de Container Storage Interface (CSI) de Astra Trident con el 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.
  • AKS es un servicio de Kubernetes totalmente administrado que puede usar para implementar, administrar y escalar aplicaciones contenedorizadas.
  • 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 del clúster de AKS como caché.
  • En lugar de usar una solución de almacenamiento administrada como Azure NetApp Files, puede usar una solución autohospedada como el almacenamiento Rook-Ceph. Para obtener más información, consulte Uso de Rook Ceph en Azure Kubernetes Service.

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 pods en AKS y un equilibrador de carga para distribuir el tráfico de entrada. Este enfoque proporciona alta disponibilidad incluso si se produce un error en el pod.
  • La solución admite varias regiones, replicación de datos y escalado automático. Los componentes distribuyen el tráfico a los pods. Los sondeos de estado se usan para que el tráfico se distribuya solo a los pods correctos.
  • 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 los siguientes procedimientos recomendados 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 y deshabilite el acceso público a los recursos. Use puntos de conexión privados para Azure Database for MySQL, Azure Cache for Redis, Key Vault y Azure Container Registry. Para obtener más información, consulte Azure Private Link.

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 nodos de AKS 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 del clúster de AKS. Para optimizar los costos del clúster de AKS, siga las sugerencias generales para AKS, como las instrucciones sobre el tamaño de la máquina virtual y las reservas de Azure. Para obtener más información, consulte Optimización de costos de AKS.

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.

En este escenario se usan pods en AKS para hospedar el front-end. Con la característica de escalado automático, el número de pods que ejecutan el nivel de aplicación de front-end puede escalar automáticamente en respuesta a la demanda del cliente. También se pueden escalar en función de una programación definida. Para obtener más información, consulte Opciones de escalado de aplicaciones en Azure Kubernetes Service (AKS).

Importante

Para obtener el mejor rendimiento, es esencial montar un volumen persistente que use el protocolo NFS versión 4.1. En el siguiente ejemplo de YAML se muestra cómo configurar un objeto PersistentVolume para este fin. Anote el valor del campo mountOptions.

kind: PersistentVolume
...
    accessModes:
    - ReadWriteMany
    mountOptions:
    - vers=4.1
    nfs:
      server: xx.xx.xx.xx

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: