W tym artykule o wersji open source Firmy Jest to platforma handlu elektronicznego napisana w języku PHP. Ten artykuł nie dotyczy firmy Adobe Commerce. W tym przykładowym scenariuszu pokazano, jak Firma Została wdrożona w usłudze Azure Kubernetes Service (AKS) i opisano typowe najlepsze rozwiązania dotyczące hostowania Usługi Azure na platformie Azure.
Architektura
Pobierz plik programu Visio z tą architekturą.
Przepływ pracy
- Usługa Azure Kubernetes Service (AKS) wdraża klaster Kubernetes z warstwy Lakier, Logowanie, Redis i Elasticsearch w różnych zasobnikach.
- Usługa AKS tworzy sieć wirtualną w celu wdrożenia węzłów agenta. Utwórz sieć wirtualną z wyprzedzeniem, aby skonfigurować konfigurację podsieci, łącze prywatne i ograniczenie ruchu wychodzącego.
- Lakier instaluje przed serwerami HTTP, aby działać jako pełna pamięć podręczna.
- Usługa Azure Database for MySQL przechowuje dane transakcji, takie jak zamówienia i wykazy. Zalecana jest wersja 8.0.
- Usługa Azure Files Premium, Azure NetApp Files lub równoważny system magazynu dołączonego do sieci (NAS) przechowuje pliki multimedialne, takie jak obrazy produktów. System plików zgodny z platformą Kubernetes wymaga systemu plików, który może zainstalować wolumin w trybie ReadWriteMany , takim jak Azure Files Premium lub Azure NetApp Files. Opcje magazynu dla aplikacji w usłudze Azure Kubernetes Service (AKS). Zdecydowanie zaleca się przetestowanie przepływności operacji wejścia/wyjścia na sekundę i wybranie opcji, które działają.
- Sieć dostarczania zawartości (CDN) obsługuje zawartość statyczną, na przykład CSS, JavaScript i obrazy. Obsługa zawartości za pośrednictwem sieci CDN minimalizuje opóźnienie sieci między użytkownikami a centrum danych. Sieć CDN może usunąć znaczne obciążenie z serwera NAS, buforując i obsługując zawartość statyczną.
- Usługa Redis przechowuje dane sesji. Hostowanie usługi Redis w kontenerach jest zalecane ze względu na wydajność.
- Usługa AKS używa tożsamości identyfikatora entra firmy Microsoft do tworzenia innych zasobów platformy Azure, takich jak moduły równoważenia obciążenia platformy Azure, uwierzytelnianie użytkowników, kontrola dostępu oparta na rolach i tożsamość zarządzana.
- Usługa Azure Container Registry przechowuje prywatne obrazy platformy Docker wdrożone w klastrze usługi AKS. Możesz użyć innych rejestrów kontenerów, takich jak Docker Hub. Domyślna instalacja Firma zapisuje niektóre wpisy tajne na obrazie.
- Usługa Azure Monitor zbiera i przechowuje metryki i dzienniki, w tym metryki platformy usług platformy Azure i telemetrię aplikacji. Usługa Azure Monitor integruje się z usługą AKS w celu zbierania metryk kontrolera, węzła i kontenera oraz dzienników kontenera i węzła głównego.
Składniki
- Azure Kubernetes Service (AKS): skalowanie kontenerów w zarządzanej usłudze Kubernetes.
- Azure Virtual Network: sieci wirtualne w chmurze.
- Azure Database for MySQL: MySQL w chmurze, która jest ekonomiczna i łatwa w konfigurowaniu, obsłudze i skalowaniu.
- Azure Files: udziały plików w chmurze. To rozwiązanie korzysta z warstwy Premium.
- Azure NetApp Files: udziały plików klasy korporacyjnej platformy Azure obsługiwane przez usługę NetApp.
- Azure Content Delivery Network: szybka, niezawodna i globalna sieć dostarczania zawartości.
- Microsoft Entra ID: zarządzanie tożsamościami i dostępem w wielu chmurach.
- Azure Container Registry: rejestr obrazów Platformy Docker i Open Container Initiative (OCI) z obsługą wszystkich artefaktów OCI.
- Azure Monitor: kompleksowa możliwość obserwacji aplikacji, infrastruktury i sieci
Szczegóły scenariusza
Aby uzyskać więcej informacji na temat Pakietu, zobacz Omówienie instalacji lokalnej.
Potencjalne przypadki użycia
To rozwiązanie jest zoptymalizowane pod kątem branży handlu detalicznego.
Kwestie wymagające rozważenia
Te zagadnienia implementują filary struktury Azure Well-Architected Framework, która jest zestawem wytycznych, które mogą służyć do poprawy jakości obciążenia. Aby uzyskać więcej informacji, zobacz Microsoft Azure Well-Architected Framework.
Zabezpieczenia
Poniżej przedstawiono niektóre zagadnienia dotyczące zabezpieczeń dla tego scenariusza:
Skonfiguruj link prywatny dla programu MySQL, aby ruch między klientami i bazą danych MySQL nie był uwidaczniony w publicznym Internecie. Aby uzyskać więcej informacji, zobacz Co to jest usługa Azure Private Link.
Możesz dodać ruch przychodzący bramy aplikacja systemu Azure, aby obsługiwać kończenie żądań protokołu SECURE Socket Layer (SSL).
Możesz również włączyć usługę Azure Web Application Firewall razem z usługą Application Gateway, aby chronić ruch wchodzący w aplikację internetową hostowaną w klastrze usługi AKS.
Kontrola dostępu oparta na rolach (RBAC)
Platforma Kubernetes i platforma Azure mają mechanizmy kontroli dostępu opartej na rolach (RBAC).
Kontrola dostępu oparta na rolach platformy Azure kontroluje dostęp do zasobów platformy Azure, w tym możliwość tworzenia zasobów. Kontrola dostępu oparta na rolach platformy Azure może przypisywać uprawnienia do użytkowników, grup lub jednostek usługi, które są tożsamościami zabezpieczeń używanymi przez aplikacje.
Kontrola dostępu oparta na rolach platformy Kubernetes kontroluje uprawnienia do interfejsu API platformy Kubernetes. Na przykład tworzenie zasobników i wyświetlanie listy zasobników to akcje, które usługa Kubernetes RBAC może autoryzować do użytkowników.
Usługa AKS integruje mechanizmy kontroli dostępu opartej na rolach platformy Azure i platformy Kubernetes. Aby przypisać uprawnienia usługi AKS do użytkowników, utwórz role i powiązania ról:
Rola to zestaw uprawnień, które mają zastosowanie w przestrzeni nazw. Uprawnienia są definiowane jako czasowniki, takie jak pobieranie, aktualizowanie, tworzenie lub usuwanie zasobów, takich jak zasobniki lub wdrożenia.
Powiązanie roli przypisuje użytkowników lub grupy do ról.
Obiekt ClusterRole definiuje rolę, która ma zastosowanie do całego klastra usługi AKS we wszystkich przestrzeniach nazw. Aby przypisać użytkowników lub grupy do elementu ClusterRole, utwórz klasterRoleBinding.
Alternatywnie możesz użyć kontroli dostępu opartej na rolach platformy Azure dla autoryzacji kubernetes, która umożliwia ujednolicone zarządzanie i kontrolę dostępu między zasobami platformy Azure, usługami AKS i Kubernetes.
Podczas tworzenia klastra usługi AKS można skonfigurować go do używania identyfikatora Entra firmy Microsoft na potrzeby uwierzytelniania użytkownika.
Aby uzyskać szczegółowe informacje na temat sposobu konfigurowania integracji z firmą Microsoft Entra, zobacz Integracja usługi Microsoft Entra zarządzana przez usługę AKS.
Aby uzyskać więcej informacji na temat kontrolowania dostępu do zasobów klastra przy użyciu kontroli dostępu opartej na rolach platformy Kubernetes i tożsamości entra firmy Microsoft, zobacz Use Kubernetes RBAC with Microsoft Entra ID (Używanie kontroli dostępu opartej na rolach platformy Kubernetes z identyfikatorem Entra firmy Microsoft).
Skalowalność
Istnieje kilka sposobów optymalizacji skalowalności dla tego scenariusza:
Pliki multimedialne i statyczne
Odpowiednio aprowizacja usługi Azure Files, Usługi Azure NetApp Files lub innego systemu magazynu dołączonego do sieci (NAS). Firma Może przechowywać tysiące plików multimedialnych, takich jak obrazy produktów. Pamiętaj, aby aprowizować produkty NAS z wystarczającą ilością operacji wejścia/wyjścia na sekundę (IOPS), aby obsłużyć zapotrzebowanie.
Zminimalizuj rozmiar zawartości statycznej, takiej jak HTML, CSS i JavaScript. Minimalizowanie może zmniejszyć koszty przepustowości i zapewnić użytkownikom bardziej dynamiczne środowisko.
Połączenie z bazą danych
Włącz trwałe połączenie z bazą danych MySQL, aby Firma nadal ponownie korzysta z istniejącego połączenia zamiast tworzyć nowe dla każdego żądania. Aby włączyć trwałe połączenie, dodaj następujący wiersz do
db
sekcji pliku env.php w Witrynie Env.php:'persistent' => '1'
Jeśli program MySQL zużywa zbyt dużo procesora CPU, zmniejsz wykorzystanie, wyłączając liczbę produktów z nawigacji warstwowej w konfiguracji Firmy:
magento config:set -vvv catalog/layered_navigation/display_product_count 0
Buforowanie
Skonfiguruj usługę OPcache na potrzeby buforowania i optymalizacji kodu PHP.
Upewnij się, że w php.ini ustawiono następujące dyrektywy i usuń komentarz:
opcache.enable=1
opcache.save_comments=1
opcache.validate_timestamps=0
Równoważenie obciążenia pamięci podręcznej Lakier przez uruchomienie wielu wystąpień na zasobnikach w celu skalowania.
Rejestrowanie
Ogranicz rejestrowanie dostępu, aby uniknąć problemów z wydajnością i zapobiegać ujawnianiu poufnych danych, takich jak adresy IP klienta.
Użyj następującego polecenia lakieru, aby ograniczyć rejestrowanie do poziomu błędów:
varnishd -s malloc,1G -a :80 -f /etc/varnish/magento.vcl && varnishlog -q "RespStatus >= 400 or BerespStatus >= 400"
Jeśli używasz serwera internetowego Apache na potrzeby ruchu przychodzącego, ogranicz rejestrowanie serwera Apache do poziomu błędów, dodając następujący wiersz do wpisu Serwera Apache
VirtualHost
w konfiguracji serwera Apache:CustomLog /dev/null common
Wyłącz dzienniki dostępu PHP-FPM, komentując
access.log
ustawienie we wszystkich konfiguracjach PHP-FPM.
Dostępność
Rozważ następujące sposoby optymalizacji dostępności dla tego scenariusza:
Sondy kondycji
Platforma Kubernetes definiuje dwa typy sondy kondycji:
- Sonda gotowości informuje platformę Kubernetes, czy zasobnik jest gotowy do akceptowania żądań.
- Sonda liveness informuje platformę Kubernetes, czy zasobnik powinien zostać usunięty, a nowe wystąpienie zostało uruchomione.
Dostosuj sondy kondycji platformy Kubernetes i użyj ich, aby określić, czy zasobnik jest w dobrej kondycji.
Strefy dostępności
Strefy dostępności to unikatowe lokalizacje fizyczne w regionach świadczenia usługi Azure, które pomagają chronić aplikacje i dane przed awariami centrum danych. Każda strefa składa się z co najmniej jednego centrum danych. Aplikacje w strefach mogą pozostać dostępne, nawet jeśli w jednym centrum danych wystąpi awaria fizyczna.
Klastry usługi AKS można wdrożyć w wielu Strefy dostępności, aby zapewnić wyższy poziom dostępności i chronić przed awariami sprzętu lub zdarzeniami planowanej konserwacji. Definiowanie pul węzłów klastra w celu obsługi wielu stref umożliwia kontynuowanie działania węzłów, nawet jeśli jedna strefa ulegnie awarii. Aby uzyskać więcej informacji na temat wdrażania usługi AKS w Strefy dostępności, zobacz Tworzenie klastra usługi AKS korzystającego ze stref dostępności.
Ograniczenia zasobów
Rywalizacja o zasoby może mieć wpływ na dostępność usługi. Zdefiniuj ograniczenia zasobów kontenera, aby żaden pojedynczy kontener nie mógł przeciążyć pamięci klastra i zasobów procesora CPU. Diagnostyka usługi AKS umożliwia zidentyfikowanie wszelkich problemów w klastrze.
Użyj limitu zasobów, aby ograniczyć łączną liczbę zasobów dozwolonych dla kontenera, więc jeden konkretny kontener nie może głodować innych.
DevOps
Poniżej przedstawiono kilka zagadnień operacyjnych dotyczących tego scenariusza:
W tym scenariuszu program MySQL nie uwidacznia publicznego punktu końcowego. Jeśli serwer kompilacji przechowuje ustawienia konfiguracji w bazie danych MySQL zaplecza, pamiętaj, aby wdrożyć ten serwer w tej samej podsieci sieci wirtualnej, z którą program MySQL łączy się za pośrednictwem punktu końcowego usługi.
Użyj usługi Azure Container Registry lub innego rejestru kontenerów, takiego jak Docker Hub, do przechowywania prywatnych obrazów platformy Docker wdrożonych w klastrze. Usługa AKS może uwierzytelniać się w usłudze Azure Container Registry przy użyciu tożsamości firmy Microsoft Entra.
Monitorowanie
Usługa Azure Monitor udostępnia kluczowe metryki dla wszystkich usług platformy Azure, w tym metryki kontenera z usługi AKS. Utwórz pulpit nawigacyjny, aby wyświetlić wszystkie metryki w jednym miejscu.
Oprócz korzystania z usługi Azure Monitor dla kontenerów można teraz używać usługi zarządzanej dla rozwiązania Prometheus do zbierania i analizowania metryk na dużą skalę za pośrednictwem rozwiązania do monitorowania zgodnego z rozwiązaniem Prometheus.
Do wizualizacji metryk Prometheus można również użyć narzędzia Grafana zarządzanego przez platformę Azure (lub samodzielnego zarządzanego narzędzia Grafana). W przypadku korzystania z usługi Azure Managed Grafana łączenie obszaru roboczego usługi Azure Monitor z obszarem roboczym usługi Azure Managed Grafana umożliwia narzędziu Grafana używanie danych obszaru roboczego usługi Azure Monitor na pulpicie nawigacyjnym narzędzia Grafana. Następnie masz dostęp do wielu wstępnie utworzonych pulpitów nawigacyjnych korzystających z metryk rozwiązania Prometheus, a także możesz tworzyć niestandardowe pulpity nawigacyjne.
Testowanie wydajności
Korzystanie z zestawu narzędzi Do testowania wydajności w usłudze Zestaw narzędzi Do testowania wydajności. Zestaw narzędzi używa narzędzia Apache JMeter do symulowania zachowań klientów, takich jak logowanie, przeglądanie produktów i wyewidencjonowywanie.
Należy również rozważyć użycie usługi Azure Load Testing , w pełni zarządzanej usługi testowania obciążenia, która umożliwia generowanie obciążenia na dużą skalę. Testowanie obciążenia platformy Azure umożliwia szybkie utworzenie testu obciążeniowego dla aplikacji internetowej przy użyciu adresu URL. Alternatywnie w przypadku bardziej zaawansowanych scenariuszy testowania obciążenia można utworzyć test obciążeniowy, ponownie używając istniejącego skryptu testowego JMeter.
Optymalizacja kosztów
Optymalizacja kosztów dotyczy sposobów zmniejszenia niepotrzebnych wydatków i poprawy wydajności operacyjnej. Aby uzyskać więcej informacji, zobacz Omówienie filaru optymalizacji kosztów.
Planowanie pojemności jest oparte na testach wydajnościowych.
Koszty możesz szacować za pomocą kalkulatora cen platformy Azure.
Zapoznaj się z innymi zagadnieniami dotyczącymi kosztów w temacie Zasady optymalizacji kosztów w witrynie Microsoft Azure Well-Architected Framework.