Ez a cikk a Magento nyílt forráskódú verziójáról szól, amely egy PHP-ben írt e-kereskedelmi platform. Ez a cikk nem az Adobe Commerce szolgáltatásról szól. Ez a példaforgatókönyv az Azure Kubernetes Service-ben (AKS) üzembe helyezett Magento-t mutatja be, és ismerteti a Magento Azure-ban való üzemeltetésének gyakori ajánlott eljárásait.
Architektúra
Töltse le az architektúra Visio-fájlját.
Munkafolyamat
- Az Azure Kubernetes Service (AKS) különböző podokban helyezi üzembe a Varnish, a Magento, a Redis és az Elasticsearch Kubernetes-fürtöt.
- Az AKS létrehoz egy virtuális hálózatot az ügynökcsomópontok üzembe helyezéséhez. Hozza létre előre a virtuális hálózatot az alhálózat konfigurációjának, a privát kapcsolatnak és a kimenő forgalom korlátozásának beállításához.
- A lakk a HTTP-kiszolgálók elé telepít, hogy teljes oldalas gyorsítótárként működjön.
- Az Azure Database for MySQL tranzakciós adatokat, például megrendeléseket és katalógusokat tárol. A 8.0-s verzió használata ajánlott.
- Az Azure Files Premium, az Azure NetApp Files vagy az azzal egyenértékű , hálózathoz csatlakoztatott tárolórendszer (NAS) médiafájlokat, például termékképeket tárol. A Magento-nak olyan Kubernetes-kompatibilis fájlrendszerre van szüksége, amely képes köteteket csatlakoztatni ReadWriteMany módban, például Azure Files Premium vagy Azure NetApp Files módban. Az Azure Kubernetes Service (AKS) alkalmazásainak tárolási lehetőségei. Javasoljuk, hogy másodpercenként tesztelje a bemeneti/kimeneti műveleteket (IOPS), és válassza ki az Önnek megfelelő beállításokat.
- A tartalomkézbesítési hálózat (CDN) olyan statikus tartalmakat szolgál ki, mint a CSS, a JavaScript és a képek. A tartalom CDN-en keresztüli kiszolgálása minimálisra csökkenti a felhasználók és az adatközpont közötti hálózati késést. A CDN a statikus tartalom gyorsítótárazásával és kiszolgálásával jelentős terhelést távolíthat el a NAS-ból.
- A Redis tárolja a munkamenet-adatokat. A Redis tárolókon való üzemeltetése teljesítménybeli okokból ajánlott.
- Az AKS Microsoft Entra-azonosítójú identitással hoz létre és kezel más Azure-erőforrásokat, például azure-terheléselosztókat, felhasználói hitelesítést, szerepköralapú hozzáférés-vezérlést és felügyelt identitást.
- Az Azure Container Registry tárolja az AKS-fürtben üzembe helyezett privát Docker-rendszerképeket . Más tárolóregisztrációs adatbázisokat is használhat, például a Docker Hubot. Az alapértelmezett Magento-telepítés titkos kódokat ír a képre.
- Az Azure Monitor metrikákat és naplókat gyűjt és tárol, beleértve az Azure szolgáltatásplatform metrikáit és az alkalmazás telemetriáját. Az Azure Monitor integrálható az AKS-sel a vezérlők, csomópontok és tárolómetrikák, valamint a tároló- és főcsomópontnaplók gyűjtéséhez.
Összetevők
- Azure Kubernetes Service (AKS): Tárolók méretezése felügyelt Kubernetes-szolgáltatáson.
- Azure Virtual Network: Virtuális hálózatok a felhőben.
- Azure Database for MySQL: MySQL a felhőben, amely költséghatékony és könnyen beállítható, üzemeltethető és méretezhető.
- Azure Files: Fájlmegosztások a felhőben. Ez a megoldás a Prémium szintet használja.
- Azure NetApp Files: Nagyvállalati szintű Azure-fájlmegosztások, a NetApp segítségével.
- Azure Content Delivery Network:Gyors, megbízható és globális tartalomkézbesítési hálózat.
- Microsoft Entra ID: Többfelhős identitás- és hozzáférés-kezelés.
- Azure Container Registry: A Docker és az Open Container Initiative (OCI) rendszerképeinek adatbázisa, az összes OCI-összetevő támogatásával.
- Azure Monitor: Az alkalmazások, az infrastruktúra és a hálózat teljes körű megfigyelhetősége
Forgatókönyv részletei
A Magento-ról további információt a helyszíni telepítés áttekintésében talál.
Lehetséges használati esetek
Ez a megoldás a kiskereskedelmi iparág számára van optimalizálva.
Megfontolások
Ezek a szempontok implementálják az Azure Well-Architected Framework alappilléreit, amely a számítási feladatok minőségének javítására használható vezérelvek halmaza. További információ: Microsoft Azure Well-Architected Framework.
Biztonság
Az alábbi biztonsági szempontokat érdemes figyelembe venni ehhez a forgatókönyvhöz:
Konfiguráljon egy privát kapcsolatot a MySQL-hez, hogy az ügyfelek és a MySQL közötti forgalom ne legyen elérhető a nyilvános interneten. További információ: Mi az Azure Private Link?
Hozzáadhat Azure-alkalmazás átjáró bejövő forgalmát a biztonságos szoftvercsatornaréteg (SSL) leállításának támogatásához.
Az Azure Web Application Firewall és az Application Gateway együttes engedélyezésével megvédheti az AKS-fürtben üzemeltetett webalkalmazásba érkező forgalmat.
Szerepköralapú hozzáférés-vezérlés (RBAC)
A Kubernetes és az Azure egyaránt rendelkezik szerepköralapú hozzáférés-vezérlési (RBAC) mechanizmusokkal.
Az Azure RBAC szabályozza az Azure-erőforrásokhoz való hozzáférést, beleértve az erőforrások létrehozásának lehetőségét is. Az Azure RBAC engedélyeket rendelhet a felhasználókhoz, csoportokhoz vagy szolgáltatásnevekhez, amelyek az alkalmazások által használt biztonsági identitások.
A Kubernetes RBAC szabályozza a Kubernetes API engedélyeit. A podok létrehozása és a podok listázása például olyan műveletek, amelyeket a Kubernetes RBAC engedélyezhet a felhasználóknak.
Az AKS integrálja az Azure és a Kubernetes RBAC mechanizmusait. Ha AKS-engedélyeket szeretne hozzárendelni a felhasználókhoz, hozzon létre szerepköröket és szerepkör-kötéseket:
A szerepkör olyan engedélyek készlete, amelyek egy névtéren belül érvényesek. Az engedélyek olyan igékként vannak definiálva, mint például a lekérés, frissítés, létrehozás vagy törlés az erőforrásokon, például podokon vagy üzemelő példányokon.
A szerepkörkötés felhasználókat vagy csoportokat rendel a szerepkörökhöz.
A ClusterRole objektum egy olyan szerepkört határoz meg, amely a teljes AKS-fürtre vonatkozik az összes névtérben. Ha felhasználókat vagy csoportokat szeretne hozzárendelni egy ClusterRole-hoz, hozzon létre egy ClusterRoleBindinget.
Másik lehetőségként használhatja az Azure RBAC-t a Kubernetes-engedélyezéshez, amely egységes felügyeletet és hozzáférés-vezérlést tesz lehetővé az Azure-erőforrások, az AKS és a Kubernetes-erőforrások között.
Az AKS-fürt létrehozásakor konfigurálhatja úgy, hogy a Microsoft Entra ID-t használja a felhasználói hitelesítéshez.
A Microsoft Entra-integráció beállításának részleteiért lásd az AKS által felügyelt Microsoft Entra-integrációt.
A fürterőforrások Kubernetes RBAC- és Microsoft Entra-identitásokkal való hozzáférésének szabályozásáról további információt a Kubernetes RBAC használata a Microsoft Entra-azonosítóval című témakörben talál.
Méretezhetőség
A skálázhatóságot többféleképpen optimalizálhatja ehhez a forgatókönyvhöz:
Média- és statikus fájlok
Az Azure Files, az Azure NetApp Files vagy egy másik, hálózathoz csatlakoztatott tárolórendszer (NAS) megfelelő kiépítése. A Magento több ezer médiafájlt, például termékképet tárolhat. Ügyeljen arra, hogy a NAS-termékeket másodpercenként elegendő bemeneti/kimeneti művelettel (IOPS) építse ki a kereslet kezeléséhez.
Csökkentse a statikus tartalom( például HTML, CSS és JavaScript) méretét. A minification csökkentheti a sávszélesség költségeit, és rugalmasabb felhasználói élményt nyújt.
Adatbázis-kapcsolat
Kapcsolja be az állandó kapcsolatot a MySQL-adatbázissal, így a Magento ahelyett, hogy minden kéréshez újat hoz létre, használja újra a meglévő kapcsolatot. Az állandó kapcsolat bekapcsolásához adja hozzá a következő sort a
db
Magento env.php fájl szakaszához:'persistent' => '1'
Ha a MySQL túl sok processzort használ fel, csökkentse a kihasználtságot azáltal, hogy kikapcsolja a termékszámot a Magento-konfiguráció rétegzett navigációjából:
magento config:set -vvv catalog/layered_navigation/display_product_count 0
Gyorsítótárazás
Az OPcache konfigurálása PHP-kód gyorsítótárazásához és optimalizálásához.
Győződjön meg arról, hogy a következő irányelvek vannak beállítva és nem vannak megadva a php.ini:
opcache.enable=1
opcache.save_comments=1
opcache.validate_timestamps=0
A Varnish-gyorsítótár terheléselosztásához futtasson több példányt a podokon, hogy skálázható legyen.
Naplózás
Korlátozza a hozzáférés naplózását, hogy elkerülje a teljesítményproblémákat, és megakadályozza a bizalmas adatok, például az ügyfél IP-címeinek felfedését.
A következő Lakk paranccsal hibaszintre korlátozhatja a naplózást:
varnishd -s malloc,1G -a :80 -f /etc/varnish/magento.vcl && varnishlog -q "RespStatus >= 400 or BerespStatus >= 400"
Ha Apache webkiszolgálót használ a bejövő forgalomhoz, az Apache-naplózás hibaszintre való korlátozásához adja hozzá a következő sort a Magento-bejegyzéshez
VirtualHost
az Apache-kiszolgáló konfigurációjában:CustomLog /dev/null common
Kapcsolja ki a PHP-FPM hozzáférési naplóit úgy, hogy megjegyzést fűz a beállításhoz az
access.log
összes PHP-FPM-konfigurációban.
Elérhetőség
Fontolja meg az alábbi módszereket a rendelkezésre állás optimalizálásához ehhez a forgatókönyvhöz:
Állapotminták
A Kubernetes kétféle állapotadat-mintavételt határoz meg:
- A készültségi mintavétel jelzi a Kubernetesnek, hogy a pod készen áll-e a kérések elfogadására.
- Az élőség-mintavétel jelzi a Kubernetesnek, hogy el kell-e távolítani egy podot, és új példányt kell-e elindítani.
Testre szabhatja a Kubernetes állapotmintáit, és ezek használatával megállapíthatja, hogy egy pod állapota megfelelő-e.
Rendelkezésre állási zónák
A rendelkezésre állási zónák az Azure-régiók egyedi fizikai helyei, amelyek segítenek megvédeni az alkalmazásokat és az adatokat az adatközpontok hibáitól. Minden zóna egy vagy több adatközpontból áll. A zónákban lévő alkalmazások akkor is elérhetők maradhatnak, ha egyetlen adatközpontban fizikai hiba történik.
Az AKS-fürtök több rendelkezésre állási zónában is üzembe helyezhetők, így magasabb rendelkezésre állási szintet biztosítanak, és védelmet nyújtanak a hardverhibák és a tervezett karbantartási események ellen. A fürtcsomópont-készletek több zónára való definiálása lehetővé teszi, hogy a csomópontok akkor is működjenek, ha egyetlen zóna leáll. Az AKS rendelkezésre állási zónákban való üzembe helyezéséről további információt a rendelkezésre állási zónákat használó AKS-fürt létrehozása című témakörben talál.
Erőforrás-korlátozások
Az erőforrás-versengés befolyásolhatja a szolgáltatás rendelkezésre állását. Definiáljon tárolóerőforrás-korlátozásokat, hogy egyetlen tároló se terhelhesse túl a fürt memóriáját és CPU-erőforrásait. Az AKS-diagnosztikával azonosíthatja a fürtben előforduló problémákat.
Az erőforráskorlát használatával korlátozhatja a tárolók számára engedélyezett összes erőforrást, így egy adott tároló nem tud éhen hagyni másokat.
DevOps
Az alábbi üzemeltetési szempontokat érdemes figyelembe venni ehhez a forgatókönyvhöz:
Ebben a forgatókönyvben a MySQL nem tesz közzé nyilvános végpontot. Ha a buildkiszolgáló a konfigurációs beállításokat a háttérbeli MySQL-adatbázisban tárolja, mindenképpen telepítse a kiszolgálót ugyanabba a virtuális hálózati alhálózatba, amelyhez a MySQL szolgáltatásvégponton keresztül csatlakozik.
Az Azure Container Registry vagy más tárolóregisztrációs adatbázis, például a Docker Hub használatával tárolja a fürtben üzembe helyezett privát Docker-lemezképeket. Az AKS a Microsoft Entra-identitásával hitelesítheti az Azure Container Registryt.
Figyelés
Az Azure Monitor kulcsfontosságú metrikákat biztosít az összes Azure-szolgáltatáshoz, beleértve az AKS-ből származó tárolómetrikákat is. Hozzon létre egy irányítópultot, amely az összes metrikát egy helyen jeleníti meg.
Az Azure Monitor tárolókhoz való használata mellett mostantól a Prometheus felügyelt szolgáltatásával is gyűjthet és elemezhet metrikákat nagy méretekben egy Prometheus-kompatibilis monitorozási megoldáson keresztül.
Az Azure Managed Grafana (vagy ön által felügyelt Grafana) használatával Prometheus-metrikákat is megjeleníthet. Az Azure Managed Grafana használata esetén az Azure Monitor-munkaterület és az Azure Managed Grafana munkaterület összekapcsolásával a Grafana egy Grafana-irányítópulton használhatja az Azure Monitor-munkaterület adatait. Ezután több előre összeállított, Prometheus-metrikákat használó irányítópulthoz is hozzáférhet, és egyéni irányítópultokat is létrehozhat.
Teljesítménytesztelés
A Magento Performance Toolkit használata teljesítményteszteléshez. Az eszközkészlet Apache JMeter használatával szimulálja az ügyfelek viselkedését, például a bejelentkezést, a termékek böngészését és a kijelentkezést.
Érdemes megfontolnia az Azure Load Testing használatát is, amely egy teljes körűen felügyelt terheléstesztelési szolgáltatás, amely lehetővé teszi a nagy léptékű terhelést. Az Azure Load Testing segítségével url-cím használatával gyorsan létrehozhat terheléstesztet a webalkalmazáshoz. A speciálisabb terheléstesztelési forgatókönyvek esetében egy meglévő JMeter-tesztszkript újbóli használatával is létrehozhat terheléstesztet.
Költségoptimalizálás
A költségoptimalizálás a szükségtelen kiadások csökkentésének és a működési hatékonyság javításának módjairól szól. További információ: A költségoptimalizálási pillér áttekintése.
Kapacitástervezés a teljesítménytesztelés alapján.
Az Azure díjkalkulátorával megbecsülheti költségeit.
A Költségoptimalizálás alapelvei a Microsoft Azure Well-Architected Frameworkben című témakörben további költségelemzési szempontokat talál.