Azure Kubernetes Service'te Magento e-ticaret platformu

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

Bu makale, PHP ile yazılmış bir e-ticaret platformu olan Magento'nun açık kaynak sürümü hakkındadır. Bu makale Adobe Commerce ile ilgili değildir. Bu örnek senaryo, Azure Kubernetes Service'e (AKS) dağıtılan Magento'yu gösterir ve Azure'da Magento barındırmaya yönelik yaygın en iyi yöntemleri açıklar.

Mimari

Azure Kubernetes Service'te diğer Azure bileşenleriyle dağıtılan Magento'yu gösteren diyagram.

Bu mimarinin bir Visio dosyasını indirin.

İş Akışı

  • Azure Kubernetes Service (AKS), Kubernetes Varnish, Magento, Redis ve Elasticsearch kümelerini farklı podlarda dağıtır.
  • AKS, aracı düğümlerini dağıtmak için bir sanal ağ oluşturur. Alt ağ yapılandırmasını, özel bağlantıyı ve çıkış kısıtlamasını ayarlamak için sanal ağı önceden oluşturun.
  • Vernik , tam sayfa önbellek işlevi görmek için HTTP sunucularının önüne yüklenir.
  • MySQL için Azure Veritabanı siparişler ve kataloglar gibi işlem verilerini depolar. Sürüm 8.0 önerilir.
  • Premium, Azure NetApp Files veya eşdeğer bir ağa bağlı depolama (NAS) sistemi Azure Dosyalar ürün görüntüleri gibi medya dosyalarını depolar. Magento'ya, Azure Dosyalar Premium veya Azure NetApp Files gibi ReadWriteMany modunda bir birim bağlayabilen Kubernetes uyumlu bir dosya sistemi gerekir. Azure Kubernetes Service'teki (AKS) uygulamalar için Depolama seçenekleri. Saniye başına giriş/çıkış işlemlerini (IOPS) test edip size uygun seçenekleri belirlemeniz kesinlikle önerilir.
  • İçerik teslim ağı (CDN), CSS, JavaScript ve görüntüler gibi statik içerik sağlar. CDN aracılığıyla içerik sunma, kullanıcılarla veri merkezi arasındaki ağ gecikme süresini en aza indirir. CDN, statik içeriği önbelleğe alarak ve sunarak NAS'tan önemli yükü kaldırabilir.
  • Redis oturum verilerini depolar. Performans nedenleriyle Redis'i kapsayıcılarda barındırmak önerilir.
  • AKS, Azure yük dengeleyiciler, kullanıcı kimlik doğrulaması, rol tabanlı erişim denetimi ve yönetilen kimlik gibi diğer Azure kaynaklarını oluşturmak ve yönetmek için bir Microsoft Entra ID kimliği kullanır.
  • Azure Container Registry , AKS kümesine dağıtılan özel Docker görüntülerini depolar. Docker Hub gibi diğer kapsayıcı kayıt defterlerini kullanabilirsiniz. Varsayılan Magento yüklemesi, görüntüye bazı gizli diziler yazar.
  • Azure İzleyici , Azure hizmet platformu ölçümleri ve uygulama telemetrisi dahil olmak üzere ölçümleri ve günlükleri toplar ve depolar. Azure İzleyici, denetleyici, düğüm ve kapsayıcı ölçümleri ile kapsayıcı ve ana düğüm günlüklerini toplamak için AKS ile tümleşir.

Bileşenler

  • Azure Kubernetes Service (AKS):Yönetilen kubernetes hizmetinde kapsayıcıları ölçeklendirin.
  • Azure Sanal Ağ: Buluttaki sanal ağlar.
  • MySQL için Azure Veritabanı: Buluttaki MySQL, uygun maliyetlidir ve kurulumu, çalıştırılması ve ölçeklendirilmesi kolaydır.
  • Azure Dosyalar: Bulutta dosya paylaşımları. Bu çözüm Premium katmanını kullanır.
  • Azure NetApp Files: NetApp tarafından desteklenen kurumsal düzeyde Azure dosya paylaşımları.
  • Azure Content Delivery Network:Hızlı, güvenilir ve küresel içerik teslim ağı.
  • Microsoft Entra Id: Çoklu bulut kimliği ve erişim yönetimi.
  • Azure Container Registry: Tüm OCI yapıtlarını destekleyen Docker ve Open Container Initiative (OCI) görüntülerinin kayıt defteri.
  • Azure İzleyici: Uygulamalarınız, altyapınız ve ağınız için uçtan uca gözlemlenebilirlik

Senaryo ayrıntıları

Magento hakkında daha fazla bilgi için bkz . Şirket içi yüklemeye genel bakış.

Olası kullanım örnekleri

Bu çözüm perakende sektörü için optimize edilmiştir.

Dikkat edilmesi gereken noktalar

Bu önemli noktalar, bir iş yükünün kalitesini artırmak için kullanılabilecek bir dizi yol gösteren ilke olan Azure İyi Tasarlanmış Çerçeve'nin yapı taşlarını uygular. Daha fazla bilgi için bkz . Microsoft Azure İyi Tasarlanmış Çerçeve.

Güvenlik

Bu senaryo için güvenlikle ilgili dikkat edilmesi gereken bazı noktalar şunlardır:

Rol tabanlı erişim denetimi (RBAC)

Kubernetes ve Azure rol tabanlı erişim denetimi (RBAC) için mekanizmalara sahiptir.

  • Azure RBAC, kaynak oluşturma özelliği de dahil olmak üzere Azure kaynaklarına erişimi denetler. Azure RBAC, uygulamalar tarafından kullanılan güvenlik kimlikleri olan kullanıcılara, gruplara veya hizmet sorumlularına izinler atayabilir.

  • Kubernetes RBAC, Kubernetes API'sine yönelik izinleri denetler. Örneğin, pod oluşturma ve podları listeleme, Kubernetes RBAC'nin kullanıcılara yetki verebileceği eylemlerdir.

AKS, Azure ve Kubernetes RBAC mekanizmalarını tümleştirir. Kullanıcılara AKS izinleri atamak için roller ve rol bağlamaları oluşturun:

  • Rol, bir ad alanı içinde geçerli olan bir izin kümesidir. İzinler, podlar veya dağıtımlar gibi kaynaklarda alma, güncelleştirme, oluşturma veya silme gibi fiiller olarak tanımlanır.

  • Rol bağlama, kullanıcılara veya gruplara roller atar.

  • ClusterRole nesnesi, tüm ad alanları genelinde AKS kümesinin tamamına uygulanan bir rol tanımlar. ClusterRole'a kullanıcı veya grup atamak için bir ClusterRoleBinding oluşturun.

  • Alternatif olarak, Azure kaynakları, AKS ve Kubernetes kaynakları arasında birleşik yönetim ve erişim denetimi sağlayan Kubernetes Yetkilendirmesi için Azure RBAC'yi kullanabilirsiniz.

AKS kümesini oluşturduğunuzda, bunu kullanıcı kimlik doğrulaması için Microsoft Entra Id kullanacak şekilde yapılandırabilirsiniz.

Ölçeklenebilirlik

Bu senaryo için ölçeklenebilirliği iyileştirmenin birkaç yolu vardır:

Medya ve statik dosyalar

  • Azure Dosyalar, Azure NetApp Files'ı veya ağa bağlı başka bir depolama (NAS) sistemini yeterli şekilde sağlayın. Magento, ürün görüntüleri gibi binlerce medya dosyasını depolayabilir. Nas ürünlerini talebi işlemek için saniyede yeterli giriş/çıkış işlemi (IOPS) ile sağladığından emin olun.

  • HTML, CSS ve JavaScript gibi statik içeriğin boyutunu en aza indirin. Küçültme, bant genişliği maliyetlerini azaltabilir ve kullanıcılar için daha hızlı yanıt veren bir deneyim sağlayabilir.

Veritabanı bağlantısı

  • MySQL veritabanına kalıcı bağlantıyı açın, böylece Magento her istek için yeni bir bağlantı oluşturmak yerine mevcut bağlantıyı yeniden kullanır. Kalıcı bağlantıyı açmak için Magento env.php dosyasının bölümüne aşağıdaki satırı db ekleyin:

    'persistent' => '1'

  • MySQL çok fazla CPU kullanıyorsa, Magento yapılandırmasında katmanlı gezintiden ürün sayısını kapatarak kullanımı azaltın:

    magento config:set -vvv catalog/layered_navigation/display_product_count 0

Önbelleğe Alma

Günlük Kaydı

Performans sorunlarını önlemek ve istemci IP adresleri gibi hassas verilerin açığa çıkmasını önlemek için erişim günlüğünü sınırlayın.

  • Günlüğe kaydetmeyi hata düzeyiyle sınırlamak için aşağıdaki Vernik komutunu kullanın:

    varnishd -s malloc,1G -a :80 -f /etc/varnish/magento.vcl && varnishlog -q "RespStatus >= 400 or BerespStatus >= 400"

  • Giriş için Apache web sunucusu kullanıyorsanız Apache sunucu yapılandırmasındaki Magento VirtualHost girdisine aşağıdaki satırı ekleyerek Apache günlüğünü hata düzeyiyle sınırlayın:

    CustomLog /dev/null common

  • Tüm PHP-FPM yapılandırmalarında ayarı açıklama satırı yaparak access.log PHP-FPM erişim günlüklerini kapatın.

Kullanılabilirlik

Bu senaryo için kullanılabilirliği iyileştirmenin şu yollarını göz önünde bulundurun:

Durum araştırmaları

Kubernetes iki tür sistem durumu araştırması tanımlar:

  • Hazır olma yoklaması Kubernetes'e podun istekleri kabul etmeye hazır olup olmadığını bildirir.
  • Canlılık yoklaması Kubernetes'e bir podun kaldırılıp kaldırılmayacağını ve yeni bir örneğin başlatılıp başlatılmayacağını bildirir.

Kubernetes sistem durumu yoklamalarını özelleştirin ve podun iyi durumda olup olmadığını söylemek için bunları kullanın.

Kullanılabilirlik Alanları

Kullanılabilirlik Alanları, Azure bölgelerindeki uygulamaları ve verileri veri merkezi hatalarından korumaya yardımcı olan benzersiz fiziksel konumlardır. Her bölge bir veya daha fazla veri merkezinden oluşur. Bölgelerdeki uygulamalar, tek bir veri merkezinde fiziksel bir hata olsa bile kullanılabilir durumda kalabilir.

AKS kümeleri, daha yüksek bir kullanılabilirlik düzeyi sağlamak ve donanım hatalarına veya planlı bakım olaylarına karşı koruma sağlamak için birden çok Kullanılabilirlik Alanları dağıtılabilir. Küme düğümü havuzlarını birden çok bölgeye yayılacak şekilde tanımlamak, tek bir bölge kapatılsa bile düğümlerin çalışmaya devam etmelerini sağlar. AKS'yi Kullanılabilirlik Alanları dağıtma hakkında daha fazla bilgi için bkz. Kullanılabilirlik alanlarını kullanan aks kümesi oluşturma.

Kaynak kısıtlamaları

  • Kaynak çekişmesi hizmet kullanılabilirliğini etkileyebilir. Tek bir kapsayıcının küme belleğini ve CPU kaynaklarını bunaltmaması için kapsayıcı kaynağı kısıtlamalarını tanımlayın. Kümedeki sorunları belirlemek için AKS tanılamasını kullanabilirsiniz.

  • Bir kapsayıcı için izin verilen toplam kaynakları kısıtlamak için kaynak sınırını kullanın, böylece belirli bir kapsayıcı diğer kapsayıcıları aç bırakamaz.

DevOps

Bu senaryo için işlemle ilgili dikkat edilmesi gereken bazı noktalar şunlardır:

  • Bu senaryoda, MySQL genel uç noktayı kullanıma sunmaz. Derleme sunucusu yapılandırma ayarlarını arka uç MySQL veritabanına depolarsa, bu sunucuyu MySQL'in hizmet uç noktası aracılığıyla bağlanacağı sanal ağ alt ağına dağıttığınıza emin olun.

  • Kümeye dağıtılan özel Docker görüntülerini depolamak için Azure Container Registry'yi veya Docker Hub gibi başka bir kapsayıcı kayıt defterini kullanın. AKS, Microsoft Entra kimliğini kullanarak Azure Container Registry ile kimlik doğrulaması yapabilir.

İzleme

Azure İzleyici, AKS'den gelen kapsayıcı ölçümleri de dahil olmak üzere tüm Azure hizmetleri için temel ölçümler sağlar. Tüm ölçümleri tek bir yerde göstermek için bir pano oluşturun.

Azure İzleyici izleme panosunun ekran görüntüsü.

Kapsayıcılar için Azure İzleyici'yi kullanmanın yanı sıra, prometheus uyumlu bir izleme çözümü aracılığıyla ölçümleri uygun ölçekte toplamak ve analiz etmek için Prometheus için yönetilen hizmeti kullanabilirsiniz.

Prometheus ölçümlerini görselleştirmek için Azure Yönetilen Grafana (veya kendi kendine yönetilen Grafana) da kullanabilirsiniz. Azure Yönetilen Grafana'yı kullandığınızda, Azure İzleyici çalışma alanınızı Azure Yönetilen Grafana çalışma alanına bağlamak Grafana'nın Grafana panosunda Azure İzleyici çalışma alanı verilerini kullanmasını sağlar. Ardından Prometheus ölçümlerini kullanan önceden oluşturulmuş birden çok panoya erişebilir ve özel panolar da oluşturabilirsiniz.

Grafana panosunun ekran görüntüsü.

Performans testi

Performans testi için Magento Performans Araç Seti'ni kullanın. Araç seti oturum açma, ürünlere göz atma ve kullanıma alma gibi müşteri davranışlarının benzetimini yapmak için Apache JMeter kullanır.

Ayrıca, yüksek ölçekli yük oluşturmanızı sağlayan tam olarak yönetilen bir yük testi hizmeti olan Azure Load Testing'i de kullanmayı göz önünde bulundurmalısınız. Azure Yük Testi ile, URL kullanarak web uygulamanız için hızlı bir şekilde yük testi oluşturabilirsiniz. Alternatif olarak, daha gelişmiş yük testi senaryoları için mevcut bir JMeter test betiğini yeniden kullanarak bir yük testi oluşturabilirsiniz.

Maliyet iyileştirme

Maliyet iyileştirmesi, gereksiz giderleri azaltmanın ve operasyonel verimlilikleri iyileştirmenin yollarını aramaktır. Daha fazla bilgi için bkz . Maliyet iyileştirme sütununa genel bakış.

Sonraki adımlar