WordPress su servizio Azure Kubernetes

Redis Gestito di Azure
Frontdoor di Azure
Servizio Azure Kubernetes (AKS)
Azure Load Balancer
Azure NetApp Files

Questo articolo descrive un'architettura basata su contenitori per l'hosting di un'installazione wordPress di grandi dimensioni e a elevato utilizzo di archiviazione in Azure. I componenti principali includono Frontdoor di Azure, Servizio Azure Kubernetes (AKS) e Azure NetApp Files.

Architettura

 Diagramma dell'architettura di una distribuzione di WordPress su AKS. Azure NetApp Files archivia il contenuto statico. Gli endpoint privati forniscono l'accesso ad altri servizi.

Scaricare un file Visio di questa architettura.

Nota

È possibile estendere questa soluzione implementando raccomandazioni applicabili a qualsiasi metodo di hosting WordPress. Per indicazioni generali sulla distribuzione di WordPress, vedere WordPress su Azure.

Flusso di dati

Il flusso di dati seguente corrisponde al diagramma precedente:

  1. Gli utenti accedono al sito Web front-end tramite Frontdoor di Azure con Web application firewall di Azure abilitato.

  2. Frontdoor di Azure Premium si connette all'origine del bilanciamento del carico interno di Azure Kubernetes Service tramite un servizio collegamento privato di Azure che rende disponibile il bilanciamento del carico interno. Il bilanciatore del carico interno è un componente di AKS. Frontdoor di Azure recupera i dati non memorizzati nella cache.

  3. Il bilanciatore di carico interno distribuisce il traffico in ingresso a un controller dei servizi di ingresso all'interno di AKS. È possibile usare il managed NGINX Ingress Controller con il componente aggiuntivo di routing dell'applicazione o l'Application Gateway per contenitori come Ingress Controller.

  4. Azure Key Vault archivia segreti, ad esempio password di database e certificati TLS (Transport Layer Security), incluse le chiavi private.

  5. L'applicazione WordPress usa un endpoint privato per accedere a un'istanza del server flessibile Database di Azure per MySQL. L'applicazione WordPress recupera informazioni dinamiche da questo servizio di database gestito.

  6. Tutto il contenuto statico è ospitato in Azure NetApp Files. La soluzione usa il driver Trident Container Storage Interface (CSI) con il protocollo NFS (Network File System).

Componenti

  • AKS è un servizio Kubernetes gestito per la distribuzione, la gestione e il ridimensionamento delle applicazioni containerizzate. In questa architettura, AKS ospita i contenitori WordPress e fornisce la piattaforma di orchestrazione per l'alta disponibilità e la scalabilità.

  • Azure Managed Redis è un archivio dati in memoria gestito e un servizio di memorizzazione nella cache. In questa architettura tutti i pod condividono un Azure cache Redis gestita. I plug-in di ottimizzazione delle prestazioni di WordPress usano questa cache per ridurre i tempi di risposta.

  • Database di Azure per MySQL Flexible Server è un servizio di database relazionale gestito basato sul motore di database MySQL open source. In questa architettura questo database archivia i dati di WordPress.

  • Azure Protezione DDoS è un servizio di sicurezza di rete che fornisce funzionalità avanzate di mitigazione DDoS distribuite. Protezione DDoS ha due livelli: Protezione di rete DDoS e Protezione IP DDoS. In questa architettura, Protezione DDoS protegge dagli attacchi DDoS quando si combina con le procedure consigliate per la progettazione delle applicazioni e la si abilita nella rete perimetrale.

  • Frontdoor di Azure è una rete per la distribuzione di contenuti cloud e un servizio di bilanciamento del carico globale. Questa architettura richiede il Frontdoor di Azure livello Premium perché usa collegamento privato di Azure per connettersi all'origine tramite un servizio collegamento privato che espone il servizio di bilanciamento del carico interno. In questa architettura, Frontdoor di Azure è il punto di ingresso pubblico nella distribuzione di WordPress.

  • Azure NetApp Files è una soluzione di archiviazione gestita, a elevato utilizzo di prestazioni e di latenza. In questa architettura, Azure NetApp Files ospita il contenuto di WordPress in modo che tutti i pod possano accedere ai dati condivisi tramite l'archiviazione file ad alte prestazioni.

  • Rete virtuale di Azure è un servizio di rete che connette le risorse distribuite tra loro, Internet e reti locali. In questa architettura le reti virtuali forniscono isolamento e segmentazione.

  • Key Vault è un servizio cloud che archivia e controlla l'accesso a segreti, certificati, chiavi e password. In questa architettura, Key Vault archivia segreti come le credenziali del database e i certificati TLS recuperati dai pod in fase di esecuzione.

  • Azure Load Balancer è un servizio di bilanciamento del carico di livello 4 che distribuisce il traffico in ingresso in base alle regole e ai risultati dei controlli di integrità. In questa architettura, un servizio di bilanciamento del carico interno si trova dietro un servizio collegamento privato, che consente a Frontdoor di Azure Premium di raggiungere privatamente l'origine. Il bilanciatore del carico interno distribuisce quindi il traffico ai pod dell'ingress controller.

  • Registro Azure Container è un servizio del Registro immagini del contenitore gestito. In questa architettura, il Registro Container archivia le immagini del contenitore WordPress e le rende disponibili al cluster AKS tramite un endpoint privato.

  • I gruppi di sicurezza di rete sono funzionalità di sicurezza che usano regole di sicurezza per consentire o negare il traffico di rete in ingresso o in uscita in base all'indirizzo IP di origine o di destinazione, alla porta e al protocollo. In questa architettura le regole del gruppo di sicurezza di rete limitano il flusso di traffico tra i componenti dell'applicazione nelle subnet.

Alternative

  • Usare un pod Redis ospitato autonomamente all'interno del cluster di AKS come cache invece del servizio Redis gestito da Azure.

  • Usare una soluzione auto-ospitata come archiviazione Rook-Ceph anziché una soluzione di archiviazione gestita come Azure NetApp Files. Una soluzione di archiviazione self-hosted aumenta la complessità operativa e richiede al team di gestire direttamente il livello di archiviazione. Valutare se il sovraccarico operativo è accettabile per l'organizzazione prima di scegliere questo approccio.

  • Usare App contenitore di Azure per ospitare carichi di lavoro WordPress in contenitori anziché AKS. Le Container Apps è un servizio di contenitori serverless gestito, adatto per scenari più semplici o di dimensioni ridotte. Per distribuzioni di grandi dimensioni, a elevato utilizzo di risorse di archiviazione e altamente personalizzabili, utilizzare AKS.

Dettagli dello scenario

Questo scenario di esempio funziona meglio per installazioni di WordPress a elevato utilizzo di archiviazione. Questo modello di distribuzione viene ridimensionato per soddisfare i picchi di traffico verso il sito.

Potenziali casi d'uso

  • Blog ad alto traffico che usano WordPress come sistema di gestione dei contenuti
  • Siti Web aziendali o di e-commerce che usano WordPress

Considerazioni

Queste considerazioni implementano i pilastri di Azure Well-Architected Framework, che è un set di set di principi guida che è possibile usare per migliorare la qualità di un carico di lavoro. Per altre informazioni, vedere Well-Architected Framework.

Affidabilità

L'affidabilità garantisce che l'applicazione possa soddisfare gli impegni assunti dai clienti. Per maggiori informazioni, consultare la sezione Elenco di controllo per la revisione della progettazione per l'affidabilità.

Quando si distribuisce questa soluzione, prendere in considerazione i consigli seguenti:

  • Usare i pod nel servizio Azure Kubernetes e un servizio di bilanciamento del carico per distribuire il traffico in ingresso. Questo approccio offre disponibilità elevata anche se si verifica un guasto del pod.

  • Posizionare tutti i componenti di rete dietro Frontdoor di Azure. Questo approccio offre resilienza contro i problemi che possono compromettere il traffico e influire sull'accesso degli utenti.

  • Abilitare la memorizzazione nella cache in Frontdoor di Azure. Quando l'origine non è disponibile, Frontdoor di Azure può continuare a gestire il contenuto memorizzato nella cache. La memorizzazione nella cache da sola non offre una soluzione di disponibilità completa.

  • Replicare l'archiviazione di Azure NetApp Files tra regioni accoppiate per aumentare la disponibilità. Per altre informazioni, vedere Azure NetApp Files replication.

  • Implementare opzioni di alta disponibilità che soddisfino le vostre esigenze per aumentare la disponibilità di Database di Azure per MySQL.

  • L'architettura supporta la distribuzione di più aree, la replica dei dati e la scalabilità automatica. I controlli di integrità assicurano che solo i pod sani ricevano traffico.

  • Frontdoor di Azure è un servizio globale in grado di instradare il traffico alle origini in più aree.

Sicurezza

La sicurezza offre garanzie contro attacchi intenzionali e l'uso improprio dei dati e dei sistemi preziosi. Per maggiori informazioni, consultare la sezione Elenco di controllo per la revisione della progettazione per la sicurezza.

Quando si distribuisce questa soluzione, prendere in considerazione le procedure consigliate seguenti:

  • Usare Web application firewall di Azure su Frontdoor di Azure per proteggere il traffico di rete virtuale che passa al livello applicazione front-end. Per altre informazioni, vedere Web application firewall di Azure su Frontdoor di Azure.

  • Bloccare il traffico Internet in uscita dal livello di database.

  • Bloccare l'accesso pubblico all'archiviazione privata e disattivare l'accesso pubblico alle risorse. Usare endpoint privati per Azure Database per MySQL, Azure Cache per Redis, Key Vault e Registro dei Container. Per altre informazioni, vedere collegamento privato.

Per altre informazioni, vedere General WordPress security and performance tips and Azure security documentation.

Ottimizzazione dei costi

L'ottimizzazione dei costi è incentrata sui modi per ridurre le spese non necessarie e migliorare l'efficienza operativa. Per altre informazioni, vedere Elenco di controllo per la revisione della progettazione per l'ottimizzazione dei costi.

Quando si distribuisce questa soluzione, esaminare le considerazioni sui costi seguenti:

  • Aspettative del traffico in GB al mese: Il volume di traffico ha il massimo effetto sui costi. Il traffico ricevuto determina il numero di nodi del servizio Azure Kubernetes necessari e il prezzo per il trasferimento dei dati in uscita. Il volume di traffico è correlato direttamente anche ai dati forniti dalla rete per la distribuzione di contenuti, in cui i costi di trasferimento dei dati in uscita sono inferiori.

  • Hosted data: Prendere in considerazione i dati ospitati, perché i prezzi Azure NetApp Files dipendono dalla capacità riservata. Per ottimizzare i costi, riservare la capacità minima necessaria per i dati.

  • Percentuale scrittura: Valutare la quantità di nuovi dati scritti nel sito Web e il costo per archiviarlo. Per le distribuzioni con più aree, i nuovi dati che scrivi sul sito web sono correlati ai dati replicati nelle diverse regioni.

  • Contenuto statico e dinamico: Monitorare le prestazioni e la capacità di archiviazione del database per determinare se uno SKU con costi inferiori supporta il sito. Il database archivia il contenuto dinamico e la rete per la distribuzione di contenuti memorizza nella cache il contenuto statico.

  • Ottimizzazione del cluster AKS: Segui indicazioni generali per AKS, ad esempio indicazioni sulle dimensioni della macchina virtuale e sulle prenotazioni di Azure, per ottimizzare i costi del tuo cluster AKS. Per altre informazioni, vedere Ottimizzazione dei costi AKS.

Eccellenza operativa

L'eccellenza operativa copre i processi operativi che distribuiscono un'applicazione e la mantengono in esecuzione nell'ambiente di produzione. Per ulteriori informazioni, vedere Lista di controllo per la revisione del design per l'Eccellenza Operativa.

Quando si distribuisce questa soluzione, prendere in considerazione i consigli seguenti:

  • Abilitare il monitoraggio di Kubernetes in Monitoraggio di Azure per il cluster AKS, incluse le metriche gestite di Prometheus e il log dei contenitori. Configurare gli avvisi per l'utilizzo delle risorse nodo e pod in modo da poter rispondere ai problemi prima che influiscano sugli utenti.

  • Archiviare i manifesti kubernetes, i grafici Helm e i modelli di infrastruttura come codice (IaC) in un sistema di controllo della versione. Usare una pipeline di integrazione continua e distribuzione continua (CI/CD) per distribuire le modifiche al cluster del servizio Azure Kubernetes per ridurre gli errori manuali e garantire distribuzioni ripetibili.

  • Usare gli aggiornamenti delle immagini del nodo AKS e gli aggiornamenti regolari della versione di Kubernetes per rimanere aggiornati con le patch di sicurezza e le correzioni di bug.

  • Usare Criteri di Azure per AKS per applicare gli standard aziendali nei cluster, ad esempio richiedere registri privati o limitare i contenitori con privilegi.

Efficienza delle prestazioni

L'efficienza delle prestazioni si riferisce alla capacità del carico di lavoro di ridimensionarsi per soddisfare in modo efficiente le esigenze degli utenti. Per maggiori informazioni, consultare la sezione Elenco di controllo per la revisione della progettazione per l'efficienza delle prestazioni.

Questo scenario usa i pod in AKS (Azure Kubernetes Service) per ospitare il front-end. La funzionalità di scalabilità automatica consente di ridimensionare automaticamente il numero di pod che eseguono il livello applicazione front-end in base alla richiesta del cliente. I pod possono anche essere ridimensionati in base a una programmazione. Per altre informazioni, vedere Opzioni di ridimensionamento per le applicazioni nel servizio Azure Kubernetes.

Importante

Per ottenere prestazioni ottimali, montare un volume permanente che usa il protocollo NFS versione 4.1. Nell'esempio YAML seguente viene illustrato come configurare un PersistentVolume oggetto a questo scopo. Il mountOptions campo specifica NFS versione 4.1.

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

Collaboratori

Microsoft gestisce questo articolo. I collaboratori seguenti hanno scritto questo articolo.

Autore principale:

Altri contributori:

  • Adrian Calinescu - Italia | Architetto senior di soluzioni cloud
  • Andrew Cardy | Senior Software Engineer

Per visualizzare i profili di LinkedIn non pubblici, accedere a LinkedIn.

Passaggi successivi

Documentazione sui prodotti:

Moduli di formazione Microsoft: