Platforma handlu elektronicznego w usłudze Azure Kubernetes Service

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

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

Diagram przedstawiający Rozwiązanie wdrożone w usłudze Azure Kubernetes Service z innymi składnikami platformy Azure.

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

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:

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.

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.

Zrzut ekranu przedstawiający pulpit nawigacyjny monitorowania usługi Azure Monitor.

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.

Zrzut ekranu przedstawiający pulpit nawigacyjny narzędzia Grafana.

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.

Następne kroki