Tento článek se týká opensourcové verze Magento, platformy elektronického obchodování napsané v PHP. Tento článek se netýká obchodu Adobe Commerce. Tento ukázkový scénář ukazuje magento nasazený do služby Azure Kubernetes Service (AKS) a popisuje běžné osvědčené postupy pro hostování Magenta v Azure.
Architektura
Stáhněte si soubor aplikace Visio s touto architekturou.
Workflow
- Azure Kubernetes Service (AKS) nasadí cluster Kubernetes laku, magenta, Redis a Elasticsearch v různých podech.
- AKS vytvoří virtuální síť pro nasazení uzlů agenta. Vytvořte virtuální síť předem a nastavte konfiguraci podsítě, privátní propojení a omezení výchozího přenosu dat.
- Lak se instaluje před servery HTTP, aby fungovaly jako mezipaměť na celé stránce.
- Azure Database for MySQL ukládá data transakcí, jako jsou objednávky a katalogy. Doporučuje se verze 8.0.
- Azure Files Premium, Azure NetApp Files nebo ekvivalentní systém úložiště připojený k síti (NAS) ukládá mediální soubory, jako jsou image produktů. Magento potřebuje systém souborů kompatibilní s Kubernetes, který může připojit svazek v režimu ReadWriteMany , jako je Azure Files Premium nebo Azure NetApp Files. Možnosti úložiště pro aplikace ve službě Azure Kubernetes Service (AKS) Důrazně doporučujeme otestovat propustnost vstupně-výstupních operací za sekundu (IOPS) a zvolit možnosti, které vám pomůžou.
- Síť pro doručování obsahu (CDN) obsluhuje statický obsah, jako jsou CSS, JavaScript a obrázky. Poskytování obsahu prostřednictvím sítě CDN minimalizuje latenci sítě mezi uživateli a datacentrem. Síť CDN může ze služby NAS odebrat značné zatížení ukládáním do mezipaměti a obsluhou statického obsahu.
- Redis ukládá data relací. Hostování Redis na kontejnerech se doporučuje z důvodů výkonu.
- AKS používá identitu Microsoft Entra ID k vytváření a správě dalších prostředků Azure, jako jsou nástroje pro vyrovnávání zatížení Azure, ověřování uživatelů, řízení přístupu na základě role a spravovaná identita.
- Azure Container Registry ukládá privátní image Dockeru nasazené do clusteru AKS. Můžete použít další registry kontejnerů, jako je Docker Hub. Výchozí instalace Magento zapíše do image několik tajných kódů.
- Azure Monitor shromažďuje a ukládá metriky a protokoly, včetně metrik platformy služeb Azure a telemetrie aplikací. Azure Monitor se integruje s AKS a shromažďuje metriky kontroleru, uzlu a kontejneru a protokoly hlavních uzlů.
Komponenty
- Azure Kubernetes Service (AKS): Škálování kontejnerů ve spravované službě Kubernetes
- Azure Virtual Network: Virtuální sítě v cloudu.
- Azure Database for MySQL: MySQL v cloudu, který je nákladově efektivní a snadno se nastavuje, provozuje a škáluje.
- Soubory Azure: Sdílené složky v cloudu. Toto řešení používá úroveň Premium.
- Azure NetApp Files: Sdílené složky Azure na podnikové úrovni využívající NetApp.
- Azure Content Delivery Network: Rychlá, spolehlivá a globální síť pro doručování obsahu
- Microsoft Entra ID: Správa identit a přístupu ve více cloudech.
- Azure Container Registry: Registr imagí Dockeru a Open Container Initiative (OCI) s podporou všech artefaktů OCI.
- Azure Monitor: Komplexní pozorovatelnost pro vaše aplikace, infrastrukturu a síť
Podrobnosti scénáře
Další informace o funkci Magento najdete v tématu Přehled místní instalace.
Potenciální případy použití
Toto řešení je optimalizované pro maloobchod.
Důležité informace
Tyto aspekty implementují pilíře dobře architektuře Azure, což je sada hlavních principů, které je možné použít ke zlepšení kvality úlohy. Další informace naleznete v tématu Microsoft Azure Well-Architected Framework.
Zabezpečení
Tady je několik aspektů zabezpečení pro tento scénář:
Nakonfigurujte privátní propojení pro MySQL, aby se provoz mezi klienty a MySQL nezpřístupnil veřejnému internetu. Další informace najdete v tématu Co je Azure Private Link.
Pro podporu ukončení protokolu SSL (Secure Socket Layer) můžete přidat Aplikace Azure příchozí přenos dat brány.
Můžete také povolit Bránu firewall webových aplikací Azure společně se službou Application Gateway, která pomáhá chránit provoz při zadávání webové aplikace hostované v clusteru AKS.
Řízení přístupu na základě role (RBAC)
Kubernetes i Azure mají mechanismy pro řízení přístupu na základě role (RBAC).
Azure RBAC řídí přístup k prostředkům Azure, včetně možnosti vytvářet prostředky. Azure RBAC může přiřadit oprávnění uživatelům, skupinám nebo instančním objektům, což jsou identity zabezpečení používané aplikacemi.
Kubernetes RBAC řídí oprávnění k rozhraní Kubernetes API. Vytváření podů a výpis podů jsou například akce, které může RBAC Kubernetes autorizovat pro uživatele.
AKS integruje mechanismy RBAC Azure a Kubernetes. Pokud chcete uživatelům přiřadit oprávnění AKS, vytvořte role a vazby rolí:
Role je sada oprávnění, která se vztahují v rámci oboru názvů. Oprávnění se definují jako příkazy, jako je získání, aktualizace, vytvoření nebo odstranění, u prostředků, jako jsou pody nebo nasazení.
Vazba role přiřazuje uživatelům nebo skupinám role.
Objekt Role clusteru definuje roli, která se vztahuje na celý cluster AKS napříč všemi obory názvů. Pokud chcete přiřadit uživatele nebo skupiny k roli clusteru, vytvořte clusterRoleBinding.
Alternativně můžete použít Azure RBAC pro autorizaci Kubernetes, která umožňuje jednotnou správu a řízení přístupu napříč prostředky Azure, AKS a prostředky Kubernetes.
Když vytvoříte cluster AKS, můžete ho nakonfigurovat tak, aby pro ověřování uživatelů používalo ID Microsoft Entra.
Podrobnosti o tom, jak nastavit integraci Microsoft Entra, najdete v tématu Integrace Microsoft Entra spravované službou AKS.
Další informace o řízení přístupu k prostředkům clusteru pomocí RBAC Kubernetes a identit Microsoft Entra najdete v tématu Použití RBAC Kubernetes s Microsoft Entra ID.
Škálovatelnost
Existuje několik způsobů optimalizace škálovatelnosti pro tento scénář:
Multimédia a statické soubory
Adekvátně zřiďte službu Azure Files, Azure NetApp Files nebo jiný systém úložiště připojeného k síti (NAS). Magento může ukládat tisíce mediálních souborů, jako jsou obrázky produktů. Nezapomeňte zřídit produkty NAS s dostatečnými vstupně-výstupními operacemi za sekundu (IOPS) pro zpracování poptávky.
Minimalizujte velikost statického obsahu, jako je HTML, CSS a JavaScript. Minifikace může snížit náklady na šířku pásma a poskytnout uživatelům rychlejší prostředí.
Připojení k databázi
Zapněte trvalé připojení k databázi MySQL, takže Magento znovu používá stávající připojení místo vytvoření nového pro každou žádost. Pokud chcete zapnout trvalé připojení, přidejte do části souboru Magento env.php následující řádek
db
:'persistent' => '1'
Pokud MySQL spotřebovává příliš mnoho procesoru, snižte využití vypnutím počtu produktů z vrstvené navigace v konfiguraci Magento:
magento config:set -vvv catalog/layered_navigation/display_product_count 0
Ukládání do mezipaměti
Nakonfigurujte mezipaměť OPcache pro ukládání kódu PHP do mezipaměti a optimalizaci.
Ujistěte se, že jsou v php.ini nastaveny následující direktivy a nekommentovány:
opcache.enable=1
opcache.save_comments=1
opcache.validate_timestamps=0
Vyrovnávání zatížení mezipaměti laku spuštěním více instancí na podech, aby bylo možné škálovat.
Protokolování
Omezte protokolování přístupu, abyste se vyhnuli problémům s výkonem a zabránili zveřejnění citlivých dat, jako jsou IP adresy klientů.
Pomocí následujícího příkazu laku omezte protokolování na úroveň chyb:
varnishd -s malloc,1G -a :80 -f /etc/varnish/magento.vcl && varnishlog -q "RespStatus >= 400 or BerespStatus >= 400"
Pokud pro příchozí přenos dat používáte webový server Apache, omezte protokolování Apache na úroveň chyb přidáním následujícího řádku do položky Magento
VirtualHost
v konfiguraci serveru Apache:CustomLog /dev/null common
Vypněte protokoly přístupu PHP-FPM zakomentováním
access.log
nastavení ve všech konfiguracích PHP-FPM.
Dostupnost
Zvažte tyto způsoby optimalizace dostupnosti pro tento scénář:
Sondy stavu
Kubernetes definuje dva typy sondy stavu:
- Sonda připravenosti říká Kubernetes, jestli je pod připravený přijímat požadavky.
- Sonda aktivity říká Kubernetes, jestli se má pod odebrat a jestli se má spustit nová instance.
Přizpůsobte sondy stavu Kubernetes a použijte je k tomu, abyste mohli zjistit, jestli je pod v dobrém stavu.
Zóny dostupnosti
Zóny dostupnosti jsou jedinečná fyzická umístění v oblastech Azure, která pomáhají chránit aplikace a data před selháním datacentra. Každá zóna se skládá z jednoho nebo více datacenter. Aplikace v zónách můžou zůstat dostupné i v případě fyzického selhání v jednom datacentru.
Clustery AKS je možné nasadit napříč několika Zóny dostupnosti, aby poskytovaly vyšší úroveň dostupnosti a chránily před selháním hardwaru nebo událostmi plánované údržby. Definování fondů uzlů clusteru pro rozsah více zón umožňuje uzlům pokračovat v provozu i v případě, že jedna zóna přestane fungovat. Další informace o nasazení AKS do Zóny dostupnosti najdete v tématu Vytvoření clusteru AKS, který používá zóny dostupnosti.
Omezení prostředků
Kolize prostředků může mít vliv na dostupnost služby. Definujte omezení prostředků kontejneru, aby žádný jeden kontejner mohl zahltit prostředky paměti clusteru a procesoru. Pomocí diagnostiky AKS můžete identifikovat případné problémy v clusteru.
Limit prostředků použijte k omezení celkových prostředků povolených pro kontejner, takže jeden konkrétní kontejner nemůže hladovět ostatní.
DevOps
Tady je několik provozních aspektů pro tento scénář:
V tomto scénáři MySQL nezpřístupňuje veřejný koncový bod. Pokud buildový server ukládá nastavení konfigurace do back-endové databáze MySQL, nezapomeňte tento server nasadit do stejné podsítě virtuální sítě, ke které se MySQL připojuje přes koncový bod služby.
K ukládání privátních imagí Dockeru nasazených do clusteru použijte Azure Container Registry nebo jiný registr kontejnerů, jako je Docker Hub. AKS se může ověřit pomocí služby Azure Container Registry pomocí své identity Microsoft Entra.
Sledování
Azure Monitor poskytuje klíčové metriky pro všechny služby Azure, včetně metrik kontejnerů z AKS. Vytvořte řídicí panel, který zobrazí všechny metriky na jednom místě.
Kromě použití služby Azure Monitor pro kontejnery teď můžete pomocí spravované služby pro Prometheus shromažďovat a analyzovat metriky ve velkém prostřednictvím řešení pro monitorování kompatibilní s platformou Prometheus.
K vizualizaci metrik Prometheus můžete použít také Grafana spravovanou službou Azure (nebo grafana spravovanou vlastním systémem). Pokud používáte Azure Managed Grafana, připojení pracovního prostoru Azure Monitor k pracovnímu prostoru Azure Managed Grafana umožňuje Grafana používat data pracovního prostoru Služby Azure Monitor na řídicím panelu Grafana. Pak máte přístup k několika předem vytvořeným řídicím panelům, které používají metriky Prometheus, a můžete také vytvářet vlastní řídicí panely.
Testování výkonu
K testování výkonu použijte sadu nástrojů Magento Performance Toolkit . Sada nástrojů používá Apache JMeter k simulaci chování zákazníků, jako je přihlášení, procházení produktů a rezervace.
Měli byste také zvážit použití služby Azure Load Testing, která je plně spravovanou službou pro zátěžové testování, která umožňuje generovat zatížení ve velkém měřítku. Pomocí zátěžového testování Azure můžete rychle vytvořit zátěžový test pro vaši webovou aplikaci pomocí adresy URL. Pro pokročilejší scénáře zátěžového testování můžete také vytvořit zátěžový test opětovným použitím existujícího testovacího skriptu JMeter.
Optimalizace nákladů
Optimalizace nákladů se zabývá způsoby, jak snížit zbytečné výdaje a zlepšit efektivitu provozu. Další informace najdete v tématu Přehled pilíře optimalizace nákladů.
Plánování kapacity na základě testování výkonu
K odhadu nákladů použijte cenovou kalkulačku Azure.
Další aspekty nákladů najdete v tématu Principy optimalizace nákladů v architektuře Microsoft Azure Well-Architected Framework.