WordPress på Azure Kubernetes Service

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

Den här artikeln beskriver en containerlösning som är värd för en stor, lagringsintensiv installation av WordPress i Azure. Lösningen maximerar skalbarhet och säkerhet. Viktiga komponenter är Azure Front Door, Azure Kubernetes Service (AKS) och Azure NetApp Files.

Arkitektur

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

Ladda ned en Visio-fil med den här arkitekturen.

Kommentar

Du kan utöka den här lösningen genom att implementera tips och rekommendationer som inte är specifika för någon viss WordPress-värdmetod. Allmänna tips om hur du distribuerar en WordPress-installation finns i WordPress på Azure.

Dataflöde

  • Användare får åtkomst till klientsidans webbplats via Azure Front Door med Azure Web Application Firewall aktiverat.
  • Azure Front Door använder en intern instans av Azure Load Balancer som ursprung. Den interna lastbalanseraren är en dold komponent i AKS. Azure Front Door hämtar alla data som inte cachelagras.
  • Den interna lastbalanseraren distribuerar inkommande trafik till poddar i AKS.
  • Azure Key Vault lagrar hemligheter som den privata nyckeln, som är ett X.509-certifikat.
  • WordPress-programmet använder en privat slutpunkt för att få åtkomst till en flexibel serverinstans av Azure Database for MySQL. WordPress-programmet hämtar dynamisk information från den här hanterade databastjänsten.
  • Allt statiskt innehåll finns i Azure NetApp Files. Lösningen använder CSI-drivrutinen (Astra Trident Container Storage Interface) med NFS-protokollet.

Komponenter

  • Azure Front Door är ett modernt nätverk för innehållsleverans i molnet. Som ett distribuerat nätverk av servrar levererar Azure Front Door effektivt webbinnehåll till användare. Nätverk för innehållsleverans minimerar svarstiden genom att lagra cachelagrat innehåll på gränsservrar på plats nära slutanvändare.
  • Azure Virtual Network är ett sätt för distribuerade resurser att kommunicera med varandra, Internet och lokala nätverk. Virtuella nätverk ger isolering och segmentering. De filtrerar och dirigerar även trafik och gör det möjligt att upprätta anslutningar mellan olika platser. I den här lösningen är de två nätverken anslutna via peering för virtuella nätverk.
  • Azure DDoS Protection innehåller förbättrade DDoS-åtgärdsfunktioner. När du kombinerar dessa funktioner med metodtips för programdesign hjälper de till att skydda mot DDoS-attacker. Du bör aktivera DDoS Protection i virtuella perimeternätverk.
  • Nätverkssäkerhetsgrupper använder en lista över säkerhetsregler för att tillåta eller neka inkommande eller utgående nätverkstrafik baserat på källans eller målets IP-adress, port och protokoll. I det här scenariots undernät begränsar reglerna för nätverkssäkerhetsgrupp trafikflödet mellan programkomponenterna.
  • Load Balancer distribuerar inkommande trafik baserat på regler och hälsoavsökningsresultat. En lastbalanserare ger låg svarstid och högt dataflöde. Genom att sprida trafik över flera servrar ökar en lastbalanserare skalbarheten för TCP-program (Transmission Control Protocol) och UDP-program (User Datagram Protocol). I det här scenariot distribuerar en lastbalanserare trafik från nätverket för innehållsleverans till klientwebbservrarna.
  • AKS är en fullständigt hanterad Kubernetes-tjänst som du kan använda för att distribuera, hantera och skala containerbaserade program.
  • Azure NetApp Files tillhandahåller en fullständigt hanterad prestandaintensiv och svarstidskänslig lagringslösning. I den här lösningen är Azure NetApp Files värd för allt WordPress-innehåll så att alla poddar har åtkomst till data.
  • Azure Cache for Redis är ett minnesinternt datalager. Du kan använda Azure Cache for Redis som värd för en nyckel/värde-cache i den här lösningen. Cacheminnet delas mellan alla poddar och används för plugin-program för prestandaoptimering i WordPress.
  • Key Vault lagrar och styr åtkomsten till lösenord, certifikat och nycklar.
  • Azure Database for MySQL – flexibel server är en relationsdatabastjänst som baseras på MySQL-databasmotorn med öppen källkod. Alternativet för flexibel serverdistribution är en fullständigt hanterad tjänst som ger detaljerad kontroll och flexibilitet över databashanteringsfunktioner och konfigurationsinställningar. I det här scenariot lagrar Azure Database for MySQL WordPress-data.

Alternativ

  • I stället för att använda den hanterade Azure Cache for Redis-tjänsten kan du använda en lokalt installerad podd i AKS-klustret som cache.
  • I stället för att använda en hanterad lagringslösning som Azure NetApp Files kan du använda en lokalt installerad lösning som Rook-Ceph Storage. Mer information finns i Använda Rook Ceph i Azure Kubernetes Service.

Information om scenario

Det här exempelscenariot är lämpligt för stora, lagringsintensiva installationer av WordPress. Den här distributionsmodellen kan skalas för att möta toppar i trafiken till platsen.

Potentiella användningsfall

  • Bloggar med hög trafik som använder WordPress som innehållshanteringssystem
  • Företags- eller e-handelswebbplatser som använder WordPress

Att tänka på

Dessa överväganden implementerar grundpelarna i Azure Well-Architected Framework, som är en uppsättning vägledande grundsatser som kan användas för att förbättra kvaliteten på en arbetsbelastning. Mer information finns i Microsoft Azure Well-Architected Framework.

Tillförlitlighet

Tillförlitlighet säkerställer att ditt program kan uppfylla de åtaganden du gör gentemot dina kunder. Mer information finns i Översikt över tillförlitlighetspelare.

Tänk på följande rekommendationer när du distribuerar den här lösningen:

  • Lösningen använder poddar i AKS och en lastbalanserare för att distribuera inkommande trafik. Den här metoden ger hög tillgänglighet även om det uppstår ett poddfel.
  • Lösningen stöder flera regioner, datareplikering och automatisk skalning. Komponenterna distribuerar trafik till poddarna. Hälsoavsökningar används så att trafiken endast distribueras till felfria poddar.
  • Alla nätverkskomponenter frontas av Azure Front Door. Den här metoden gör nätverksresurserna och programmet motståndskraftiga mot problem som annars skulle störa trafiken och påverka slutanvändarens åtkomst.
  • Azure Front Door är en global tjänst som stöder vm-skalningsuppsättningar som distribueras i en annan region.
  • När du använder Azure Front Door för att cachelagrar alla svar får du en liten tillgänglighetsförmån. Mer specifikt, när ursprunget inte svarar, kan du fortfarande komma åt innehåll. Men cachelagring ger ingen fullständig tillgänglighetslösning.
  • Om du vill öka tillgängligheten replikerar du Azure NetApp Files-lagring mellan parkopplade regioner. Mer information finns i Replikering mellan regioner med Azure NetApp Files.
  • Om du vill öka Tillgängligheten för Azure Database for MySQL följer du de alternativ för hög tillgänglighet som uppfyller dina behov.

Säkerhet

Säkerhet ger garantier mot avsiktliga attacker och missbruk av dina värdefulla data och system. Mer information finns i Översikt över säkerhetspelare.

Överväg följande metodtips när du distribuerar den här lösningen:

  • Använd Brandvägg för webbprogram i Azure Front Door för att skydda den virtuella nätverkstrafik som flödar till klientdelsappnivån. Mer information finns i Azure Web Application Firewall på Azure Front Door.
  • Tillåt inte att utgående Internettrafik flödar från databasnivån.
  • Tillåt inte offentlig åtkomst till privat lagring och inaktivera offentlig åtkomst till resurser. Använd privata slutpunkter för Azure Database for MySQL, Azure Cache for Redis, Key Vault och Azure Container Registry. Mer information finns i Azure Private Link.

Mer information om WordPress-säkerhet finns i Allmänna säkerhets- och prestandatips för WordPress och Dokumentation om Azure-säkerhet.

Kostnadsoptimering

Kostnadsoptimering handlar om att titta på sätt att minska onödiga utgifter och förbättra drifteffektiviteten. Mer information finns i Översikt över kostnadsoptimeringspelare.

Granska följande kostnadsöverväganden när du distribuerar den här lösningen:

  • Trafikförväntningar (GB/månad). Din trafikvolym är den faktor som har störst effekt på din kostnad. Mängden trafik som du får avgör antalet AKS-noder som du behöver och priset för utgående dataöverföring. Trafikvolymen korrelerar också direkt med mängden data som tillhandahålls av ditt nätverk för innehållsleverans, där kostnaderna för utgående dataöverföring är billigare.
  • Mängden värdbaserade data. Det är viktigt att tänka på mängden data som du är värd för, eftersom prissättningen för Azure NetApp Files baseras på reserverad kapacitet. För att optimera kostnaderna reserverar du den minsta kapacitet som du behöver för dina data.
  • Skrivprocent. Tänk på hur mycket nya data du skriver till din webbplats och kostnaden för att lagra dem. För distributioner i flera regioner korrelerar mängden nya data som du skriver till din webbplats med mängden data som speglas i dina regioner.
  • Statiskt kontra dynamiskt innehåll. Övervaka databasens lagringsprestanda och kapacitet för att avgöra om en billigare SKU kan stödja din webbplats. Databasen lagrar dynamiskt innehåll och nätverket för innehållsleverans cachelagrar statiskt innehåll.
  • AKS-klusteroptimering. Om du vill optimera dina AKS-klusterkostnader följer du allmänna tips för AKS, till exempel vägledning om VM-storlek och Azure-reservationer. Mer information finns i AKS-kostnadsoptimering.

Prestandaeffektivitet

Prestandaeffektivitet handlar om att effektivt skala arbetsbelastningen baserat på användarnas behov. Mer information finns i Översikt över grundpelare för prestandaeffektivitet.

Det här scenariot använder poddar i AKS som värd för klientdelen. Med funktionen autoskalning kan antalet poddar som kör programnivån på klientsidan automatiskt skalas som svar på kundernas efterfrågan. De kan också skalas baserat på ett definierat schema. Mer information finns i Skalningsalternativ för program i Azure Kubernetes Service (AKS).

Viktigt!

För bästa prestanda är det viktigt att montera en beständig volym som använder NFS-protokoll version 4.1. I följande YAML-exempel visas hur du konfigurerar ett PersistentVolume objekt för detta ändamål. Observera värdet för fältet mountOptions .

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

Deltagare

Den här artikeln underhålls av Microsoft. Det har ursprungligen skrivits av följande medarbetare.

Huvudförfattare:

Övriga medarbetare:

  • Adrian Calinescu | Senior Cloud Solution Architect

Om du vill se linkedin-profiler som inte är offentliga loggar du in på LinkedIn.

Nästa steg

Produktdokumentation:

Microsofts utbildningsmoduler: