Platforma magento elektronického obchodování ve službě Azure Kubernetes Service

Microsoft Entra ID
Azure Container Registry
Azure Database for MySQL
Azure Files
Azure Kubernetes Service (AKS)
Azure Monitor

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

Diagram znázorňující magento nasazený ve službě Azure Kubernetes Service s dalšími komponentami Azure

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

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ář:

Ří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í řádekdb:

    '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ě.

Snímek obrazovky řídicího panelu monitorování služby Azure Monitor

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.

Snímek obrazovky s řídicím panelem Grafana

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ů.

Další kroky