Kompendium
Search…
Magento 2 - automatycznie skalowalny klaster z CDN
Magento 2 to bardzo popularny system e-commerce wybierany zwykle dla wymagających projektów. Magento jest projektem open-source, za którym stoi spory ekosystem twórców i dostawców. Dzięki temu, użytkując platformę możemy korzystać z szerokiej gamy wbudowanych funkcji, takich jak zarządzanie katalogiem danych, narzędzia marketingowe, analityka, optymalizacja SEO, raportowanie i wiele innych.
Magento w wersji 2 wymaga odpowiednio przygotowanej architektury, aby obsłużyć wielu jednoczesnych użytkowników i zapewnić wysoką dostępność sklepu. Bardzo ważne jest również automatyczne skalowanie pionowe i poziome, co przygotowuje e-commerce na obsłużenie pików ruchu. Ciągłość działania Magento 2 realizowana jest poprzez architekturę klastrową, gdzie kluczowe warstwy są zdublowane.
Poniżej znajduje się opis głównych składowych oraz warstw klastra Magento 2.
  • Premium CDN - integracja z siecią Edgecast CDN zapewnia błyskawiczne ładowanie sklepu bez względu na lokalizację geograficzną dzięki zaawansowanym mechanizmom buforowania i akceleracji, ogromnej przepustowości, obsłudze protokołu HTTP/3.
  • Let's Encrypt SSL dodatek zapewnia automatyzację operacji zarządzania certyfikatami SSL - wydawanie zaufanych certyfikatów, weryfikację niestandardowej domeny, automatyczne odnawianie certyfikatów.
  • LiteSpeed ​​Web ADC równoważy obciążenia dzięki elastycznym algorytmom dystrybucji ruchu (w celu optymalizacji wydajności), obsłudze nowoczesnego protokołu HTTP/3 i dynamicznej pamięci podręcznej ESI (do obsługi żądań dynamicznych bezpośrednio redukujących liczbę żądań do serwerów).
  • LiteSpeed ​​Web Server - wysokowydajny serwer WWW z szerokim zestawem funkcji, takich jak obsługa HTTP/3, pamięć podręczna ESI, optymalizacja CSS i JavaScript, optymalizacja obrazu, obsługa pamięci podręcznej przeglądarki i obiektów, obsługa CDN, wbudowany WAF, Geo-DNS, CAPTCHA, dławienie IP, ochrona anty-DDoS, itp.
  • Web Application Firewall (WAF) funkcja bezpieczeństwa dla stosu LiteSpeed ​​Web Server, która zawiera filtrowanie anty-DDoS w warstwie 7, przepustowość na poziomie IP i ograniczanie szybkości żądań.
  • LiteMage Cache to ulepszone rozwiązanie buforowania dla zasobów dynamicznych, które umożliwia przechowywanie ich jako statycznych, co znacznie przyspiesza obsługę żądań.
  • Klaster MariaDB - topologia replikacji podstawowa-podstawowa zapewnia lepszą wydajność przechowywania zawartości dynamicznej i prostszą procedurę przełączania awaryjnego.
  • Redis to wysokowydajne rozwiązanie buforujące działające w pamięci RAM, które działa w kontenerze LiteSpeed ​​Web Server, aby przechowywać już załadowane wyniki zapytań do bazy danych i wyświetlać je szybciej na żądanie.
  • OpenSearch - napędzana przez społeczność wyszukiwarka typu open-source, która zapewnia rozproszone wyszukiwanie pełnotekstowe z obsługą wielu użytkowników.
  • Shared storage - węzeł przechowywania danych dla plików multimedialnych.

Instalacja klastra Magento 2

Zaloguj się do Panelu Usług Cloudlets.Zone i wykonaj kolejne kroki.
1. Wybierz z menu Marketplace, wyszukaj pakiet Auto-Scalable Magento Cluster i naciśnij Instaluj. Pamiętaj, że rozwiązanie klastrowe jest dostępne tylko dla kont pełnych, a więc nie zainstaluje się na koncie próbnym.
2. Na podstawie oczekiwanego poziomu obciążenia klastra, wybierz strategię skalowania (Scaling Strategy), aby określić opcje automatycznego skalowania poziomego (można to później modyfikować z poziomu: Ustawienia / Automatyczne Skalowanie Poziome).
Low Load (Niskie obciążenie)
  • dodaje 1 węzeł serwera aplikacji, jeśli obciążenie jest wyższe niż 70%
  • usuwa 1 węzeł serwera aplikacji, jeżeli obciążenie spadnie poniżej 20%
Medium Load (Średnie obciążenie)
  • dodaje 1 węzeł serwera aplikacji, jeśli obciążenie jest większe niż 50%
  • usuwa 1 węzeł serwera aplikacji, jeżeli obciążenie spadnie poniżej 20%
High Load (Wysokie obciążenie)
  • dodaje 2 węzły serwera aplikacji, jeśli obciążenie jest wyższe niż 30%
  • usuwa 1 węzeł serwera aplikacji, jeżeli obciążenie spadnie poniżej 10%
3. Instalacja środowiska i konfiguracja klastra potrwają kilka minut, zanim zobaczysz okienko wyświetlające Twój bezpośredni link do panelu administracyjnego Magento z danymi uwierzytelniającymi, aby uzyskać do niego dostęp za pośrednictwem przeglądarki internetowej.
4. Naciśnij Otwórz w przeglądarce, aby przejść do strony docelowej wstępnie skonfigurowanego motywu Magento LUMA, który umożliwia korzystanie z systemu Magento e-commerce zaraz po instalacji.
Z tego samego okienka możesz uzyskać dostęp do panelu administracyjnego Magento 2.
5. Zweryfikuj przydzielone domyślnie limity skalowania pionowego (cloudlety) dla warstw z pojedynczym kontenerem (np.: Load, Balancer, NFS), tak aby upewnić się, że stworzona dla Magento 2 topologia, odpowiada prognozowanym obciążeniom.

Instalacja CDN Edgeport

Obecnie tylko LiteSpeed ​​Web Server obsługuje protokół HTTP/3. W przypadku serwera WWW NGINX ten nowoczesny protokół jest wciąż w fazie rozwoju . Aby więc zapewnić najwyższą możliwą wydajność dla CDN zintegrowanego ze środowiskiem, w tej instrukcji omówimy konfigurację Magento 2 opartego na LiteSpeed ​​Web Server.
Jeżeli w podczas instalacji klastra Magento 2 nie została zaznaczona opcja: Install Lightning-Fast Premium CDN należy zainstalować specjalny dodatek. Jeżeli opcja była zaznaczona, a więc masz już zainstalowany CDN, wówczas przejdź od razu do konfiguracji, a więc kroku 3.
  1. 1.
    Po zalogowaniu do Panelu Usług Cloudlets.Zone, otwórz Marketplace, znajdź dodatek HTTP/3 Premium CDN i kliknij Zainstaluj .
2. W otwartym oknie wybierz środowisko (w naszym przypadku: Auto-Scalable Magento Cluster v2), w którym ma być włączony CDN, preferowaną warstwę węzłów (Load Balancer) i naciśnij Zainstaluj.
Po zakończeniu instalacji pojawi się wyskakujące okienko z adresem URL CDN w następującym formacie:
nazwaśrodowiska-chmur.cdn.edgeport.net
w naszym przypadku: https://Magento2-chmur.cdn.jelastic.net CDN Endpoint URL zostanie także przesłany na skrzynkę e-mail konta.
W ciągu pierwszej godziny może wystąpić błąd 404, ponieważ rozpropagowanie nowego środowiska w sieci CDN zajmuje trochę czasu.
3. Jeżeli chcesz skonfigurować własną domenę dodaj odpowiedni rekord A. W naszym przykładzie będzie to:
1
A | magento2 | 212.127.94.81 | 1800
Copied!
Następnie sprawdź, czy nastąpiło rozpropagowanie nowego wpisu używając na przykład DNS Checker.
4. Jeśli rozwiązywanie nazw dla Twojej domeny jest prawidłowe możesz zmienić konfigurację dodatku Let's Encrypt, a więc nadpisać domenę domyślną i wygenerować certyfikat SSL dla domeny docelowej. Z poziomu warstwy Load Balancer wybierz ikonę Dodatki, a następnie Configure przy dodatku Let's Encrypt Free SSL.
Wpisz właściwą domenę i kliknij przycisk Zastosuj.
5. Pozostaje jeszcze zmiana bazowego adresu URL dla Magento. Robimy to z menu kontekstowego dla warstwy aplikacji klikając ikonę Dodatki.
A następnie wpisujemy naszą domenę wcześniej zdefiniowaną w DNS. W naszym przypadku będzie to: https://magento2.produkcjachmur.pl
Od teraz sklep będzie już pod naszą własną nazwą domeny. Uwzględnij to przy logowaniu do panelu administracyjnego.
6. Na koniec sprawimy, że statyczna zawartość strony będzie dostępna do pobrania z sieci CDN. W tym celu logujemy się do Magento 2 jako administrator. Wchodzimy do STORES / Configuration / Web / Base URLs (Secure). W pola:
  • Secure Base URL for Static View Files
  • Secure Base URL for User Media Files
wklejamy CDN Endpoint URL, w naszym przykładzie to: https://Magento2-chmur.cdn.jelastic.net/
Ustawiamy też protokół SSL jako obowiązujący dla sklepu i panelu administracyjnego modyfikując (wizualizacja na grafice):
--- Secure Base Link URL
--- Use Secure URLs on Storefront
--- Use Secure URLs in Admin
7. Robimy to też dla zakładki Base URLs i zapisujemy zmiany - Save Config.
Zrobione. Od tego momentu cała statyczna zawartość sklepu udostępniana będzie z sieci CDN Edgeport, z punktów geograficznie najbliższych dla odwiedzającego Twoją witrynę.

Zmiana ustawień CDN

Jak zastąpić "CDN Endpoint URL" własną domeną?

  1. 1.
    Możesz zamienić wygenerowany domyślnie URL dla CDN. W tym celu do DNS domeny należy najpierw dodać CNAME do serwera DNS domeny głównej. W naszym przykładzie wygląda to tak:
1
CNAME | cdn.magento2 | cdn.magento2.produkcjachmur.pl | 1800
Copied!
2. Wybierz rodzaj metodę równoważenia obciążenia, aby zapewnić tryb wysokiej dostępności.
  • Round Robin - równomierne rozłożenie żądań pomiędzy dostępne węzły.
  • Primary Failover - wszystkie żądania są wysyłane do pierwszego węzła, jeśli stanie się niedostępny, żądania są przekierowywane do następnego i tak dalej.
Zatwierdź przyciskiem Apply i poczekaj około godziny, aż zmiana zostanie wprowadzona do sieci CDN.
Podczas skalowania poziomego węzłów w warstwie serwera aplikacji, platforma automatycznie aktualizuje rekordy dostępnych węzłów wewnątrz usługi CDN. Eliminuje to konieczność wykonywania ręcznych modyfikacji podczas skalowania.

Czyszczenie pamięci podręcznej CDN

Do czyszczenia pamięci podręcznej zasobów statycznych w sieci CDN możemy użyć akcji Purge lub Purge All. Po usunięciu zasobów CDN zaczyna pobierać ich nowe kopie z serwera źródłowego. Obsługa funkcji odbywa się na poziomie dodatku HTTP/3 Premium CDN w warstwie Load Balancera.
A. Purge (Przeczyść) usuwa określone zasoby w określonej ścieżce.
B. Tymczasem Purge All (Przeczyść wszystko) usuwa wszelkie statyczne zasoby w sieci CDN, prosząc uprzednio użytkownika o potwierdzenie operacji. Proces odnawiania pamięci podręcznej jest znacznie szybszy w porównaniu z inicjalną (pierwszą) dystrybucją zasobów statycznych po instalacji dodatku.

Testy wydajności Magento 2 - JMeter

Dobrą praktyką przed dokonaniem wyboru hostingu pod Magento 2 jest sprawdzenie jak środowisko reaguje na określony ruch. Poniższa instrukcja przedstawia jak przygotować sklep oraz narzędzie testowe. JMeter możesz uruchomić na Cloudlets.Zone by przetestować hosting Magento 2 innego dostawcy. Zaczynamy!
Benchmark Magento 2 za pomocą JMeter realizowany może być wyłącznie na środowisku developerskim lub testowym, gdyż związany jest z generowaniem i nadpisaniem kategorii produktowych.

Przygotowanie Magento 2

  1. 1.
    Skorzystamy z tego, że Magento zapewnia wewnętrzną funkcjonalność do generowania danych testowych za pośrednictwem profili ładowania. Każdy profil generuje następujące kategorie:
Element
SMALL
MEDIUM
LARGE
EXTRA LARGE
websites
1
3
5
5
store_groups
1
3
5
5
store_views
1
3
5
5
simple_products
800
24 000
300 000
600 000
configurable_products
16 z 24 opcjami
640 z 24 opcjami
8 000 z 24 opcjami
16 000 z 24 opcjami
product_images
100 obrazów/3 na produkt
1 000 obrazów/3 na produkt
2 000 obrazów/3 na produkt
2 000 obrazów/3 na produkt
categories
300
3 000
3 000
6 000
categories_nesting_level
3
3
5
5
catalog_price_rules
20
20
20
20
catalog_target_rules
5
5
5
5
cart_price_rules
20
20
20
20
cart_price_rules_floor
2
2
2
2
customers
200
2 000
5 000
10 000
tax rates
130
40 000
40 000
40 000
orders
80
50 000
100 000
150 000
2. Jako, że pracujemy na świeżej instalacji Magento 2, dlatego trzeba wygenerować dane testowe. Zrobimy to z poziomu linii komend. Zaczynamy od ustawienia parametru globalnego w bazie danych. UWAGA, w tym celu otwórz dostęp Web SSH na warstwie BAZY DANYCH.
3. Wpisz poniższą komendę uzupełniając właściwe dane w miejscach {db_user} i {db_pass}. Zwróć uwagę na brak spacji między parametrem "-u" i "-p", a ciągiem znaków definiujących użytkownika i hasło.
1
mysql -u{db_user} -p{db_pass} -e "SET GLOBAL log_bin_trust_function_creators = 1;"
Copied!
4. Aby upewnić się, że wszystkie cytaty są puste, uruchom następujące zapytanie MySQL przed każdym uruchomieniem scenariusza, wstawiając w miejsce magento_dbnamen właściwą nazwę bazy danych Magento 2, którą znajdziesz w phpMyAdmin.
1
mysql -u{db_user} -p{db_pass} -e "USE magento_dbname; UPDATE quote SET is_active = 0 WHERE is_active = 1;"
Copied!
5. Teraz wygenerujemy dane produktów za pomocą poniższego polecenia, uwzględniając parametr "-s", aby pominąć początkowe indeksowanie. Polecenie wydajemy z linii komend otwierając Web SSH na poziomie WARSTWY APLIKACJI!
1
php /var/www/webroot/ROOT/bin/magento setup:performance:generate-fixtures -s /var/www/webroot/ROOT/setup/performance-toolkit/profiles/ce/small.xml
Copied!
6. Po wygenerowaniu danych należy ręcznie uruchomić indeksowanie.
1
php /var/www/webroot/ROOT/bin/magento indexer:reindex
Copied!
7. Na zakończenie, czyścimy pamięć podręczną następującą komendą:
1
php /var/www/webroot/ROOT/bin/magento cache:flush
Copied!
i sprawdzamy, czy są teraz ogólne kategorie z prostymi produktami zastępczymi na witrynie testowej, jak na obrazku poniżej.
8. Logujemy się do Magento 2 jako administrator, w tym naszym przykładzie będzie to adres: http://magento2.produkcjachmur.pl/admin/ i zmieniamy hasło dla konta admin, na: 123123q
9. Włącz przepisywanie serwera WWW. Otwórz stronę administratora swojej witryny i zaloguj się, a następnie przejdź do menu: Stores / Configuration / General / Web / Search Engine Optimization. Odznaczamy "Use system value" i wybieramy z menu "Use Web Server Rewrites - YES" i zapisujemy.
10. Wejdź do menu System / Index Management i ustaw wszystko w trybie „Update by Schedule”, zaznaczając z użyciem funkcji Mass Action i klikając przycisk Submit.
11. Sprawdź stronę zarządzania pamięcią podręczną witryny i zaktualizuj wszelkie nieprawidłowe dane --> System / Cache Management. Wybierz wszystkie typy skrzynek i odśwież je, klikając przycisk Submit.
Uff, faza przygotowania danych sklepu zakończona.

Instalacja i uruchomienie JMeter

Do wygenerowania obciążenia wykorzystamy pakiet JMeter-cluster. Topologia obejmuje następujące komponenty:
  • Web - do wizualizacji procesu generowania obciążeń i dostarczania wyników przez przeglądarkę,
  • Workers - rozproszone serwery JMeter do generowania obciążenia,
  • Master - używany do konfiguracji planu testów i zarządzania warstwą Workers.
  1. 1.
    Instalację JMeter cluster zrealizować można za pomocą manifestu JPS, który wklejamy w oknie importu w zakładce URL: https://raw.githubusercontent.com/sych74/jmeter/master/manifest.jps
2. Następnie, parametryzujemy test domyślnego scenariusza przeznaczonego dla Magento. Kluczowe parametry planu testów dostępne w oknie instalacji to:
  • Protocol and Domain. Lista obsługiwanych protokołów znajduje się w dokumentacji JMeter.
  • Virtual Users (VU). Jest to liczba współbieżnych wątków, których JMeter będzie używał do testowania.
  • Test Duration, min. Czas trwania testu obciążeniowego w minutach.
  • Ramp-up Period, min. Przedział czasu, w którym wszyscy użytkownicy wirtualni (VU) stają się aktywni. Na przykład, dla 120 VU i czasu aktywacji 1 minuta - co sekundę będą dodawane 2 nowe VU. Zakres wartości od 0 do 60 minut. Aby natychmiast uruchomić wszystkich wirtualnych użytkowników, ustaw okres rozruchu na 0.
Po zakończeniu instalacji okno dialogowe z linkami do panelu testów i Grafany.
3. Przed uruchomieniem testu sprawdź, czy konfiguracja testu odpowiada wcześniejszym ustawieniom. Z poziomu warstwy Master, należy uruchomić dodatek JMeter Cluster Settings - Configure.
Dla naszego przykładu, konfiguracja powinna wyglądać tak jak poniżej:
4. Aby uruchomić test wejdź wybierz dodatek JMeter Cluster Settings z warstwy Master i wciśnij przycisk Run test.
Test obciążeniowy się rozpoczął, co system potwierdzi oknem dialogowym zawierającym URL do panelu testu:
5. W panelu testu obserwować można postępy, wejść do statystyk testu zwizualizowanych w Grafanie oraz na koniec pobrać rezultaty - RESULTS DIR.
Panel testów obciążeniowych - JMeter
Podgląd testu obciążeniowego Magento 2 z Grafany

Scenariusz testowy

Magento udostępnia scenariusz do testowania wydajności, który imituje aktywność użytkowników. Magento udostępnia scenariusz testowy dla JMeter do sprawdzania wydajności, który imituje aktywność użytkowników. W rezultacie, otrzymujesz zestaw wskaźników, których możesz użyć do oceny, w jaki sposób zmiany parametrów i ustawień oraz przydzielonych zasobów dla Magento wpływają na wydajność, a więc szybkość ładowania sklepu.
Gotowy skrypt emuluje typowe scenariusze użycia witryny e-commerce, takie jak:
  • Przeglądanie katalogu, w tym odwiedzanie strony głównej, strony katalogu, strony produktu, konfigurowalną stronę produktu oraz prostą stronę produktu;
  • Dodanie do koszyka zarówno prostego, jak i konfigurowalnego produktu;
  • Dokończenie pełnego procesu płatności (wszystkie kroki) jako gość i zarejestrowany klient;
  • Czynności administracyjne.
Scenariusz wykorzystuje następujące wzorce ruchu w witrynie dla działań użytkowników:
90% użytkowników puli frontendu, gdzie:
--- 80% - czynności związane z przeglądaniem katalogu przez gości.
--- 20% - obsługa koszyka przez klienta.
10% użytkowników do puli administracyjnej, gdzie:
--- 10% - działania związane z przeglądaniem siatki produktów administratora.
--- 90% - administracja działań związanych z tworzeniem produktów.
Do testów obciążeniowych wykorzystano nasze rozwiązania Magento o profilu MEDIUM:
500, 1000, 1500 użytkowników dla Klastra Magento 2.
Last modified 5h ago