Hosting WordPress w chmurze AWS z pełną redundancją

13 lutego 2016
Hosting WordPress w chmurze AWS - schemat

Hosting WordPress w chmurze nie jest wielkim wyzwaniem, ale myślę, że zaskoczymy Cię faktem, jak łatwo i tanio można to zrobić, uzyskując niemal 100% SLA. W chmurze Amazona za relatywnie niewielkie pieniądze można utrzymać serwis oparty o popularnego WordPressa, uzyskując niewiarygodną dostępność. Umieszczając serwis na pojedynczym serwerze czy VPSie często nie myślimy o potencjalnej awarii serwisu, a tym bardziej o utracie danych. Gdyby nasz serwis odniósł sukces i nagle stał się bardzo popularny, to tradycyjny hosting na niewiele się nam zda.

Wysoka dostępność kojarzy nam się z wysokimi kosztami. W przypadku AWS dla niewielkiego serwisu jesteśmy w stanie przygotować infrastrukturę, której miesięczny koszt z niewielkim transferem nie przekroczy 80 USD (320zł) miesięcznie! Za tak niewielką kwotę będziemy mieli w pełni zdublowaną infrastrukturę, którą łatwo skalować i zmieniać w ciągu minut – a to może nam się bardzo przydać, gdy słupki odwiedzin będą rosnąć.

WordPress to bardzo popularny system bazujący na PHP i MySQLu. Umieszczenie go w chmurze nie wymaga żadnych specjalnych działań – wystarczy jeden serwer VPS. Robiąc to, tracimy jednak możliwość zbudowania środowiska skalowalnego i wysokiej dostępności.

Hosting WordPress w chmurze – jak to zrobić?

Aby uzyskać skalowalność i wysoką dostępność musimy mieć tzw. środowisko bezstanowe, czyli takie, w którym serwery nie trzymają żadnych potrzebnych danych lokalnie. WordPress w bazie danych MySQL przechowuje większość danych, ale pliki graficzne oraz pochodne przechowuje na dyskach. Jeśli więc dane, czy bazę danych umieścimy na serwerze, nie mamy już do czynienia z aplikacją bezstanową. Gdy taki serwer ulegnie awarii, nie będzie możliwości dostępu do danych i serwis przestanie działać. Aby zbudować wysoko dostępne środowisko (HA – high availability), musimy pozbyć się danych z serwerów i przenieść je do Amazonowych usług, które zapewniają wysokie HA. Z jakich więc usług AWSa należy skorzystać?

S3 jako repozytorium plików

Domyślnie WordPress zapisuje pliki na lokalnym serwerze, a to wyklucza nam bezstanową architekturę. Na szczęście dostępny jest plugin dla WordPressa, który pozwala zapisywać pliki w S3. S3 to usługa AWS’a, w której można przechowywać pliki, obiektowy storage o niesamowitej odporności na awarię i o dostępności gwarantowanej (SLA) na poziomie 99,99%. Rozproszenie zapisu gwarantuje w zasadzie ciągłą dostępność plików, jednocześnie możemy sobie zagwarantować, aby pliki na pewno były w danym regionie np. kiedy jest to niezbędne do spełnienia wymagań ustawy o ochronie danych osobowych.
Po instalacji pluginu WordPress będzie już zapisywał dane w S3 i nie musimy się martwić o ich dostępność, a każda nowa instancja serwerowa uruchomiona w ramach środowiska HA będzie miała do nich dostęp od razu po uruchomieniu.

ELB jako load balancing ruchu

Zadaniem load balancera jest rozdzielenie ruchu pomiędzy serwery serwujące stronę, także na te dostawione w ramach autoscalingu. Wyłączenie lub włączenie jakiegoś serwera spowoduje natychmiastową reakcję ELB. W takim wypadku przestaje on lub zaczyna kierować ruch na dany serwer, a całość jest niewidoczna dla użytkownika przeglądającego serwis.

RDS czyli MySQL as-a-service

Większość najważniejszych danych, takich jak teksty, komentarze, użytkownicy oraz konfigurację WordPress przechowuje w bazie danych. RDS jest usługą, która daje nam samą bazę danych MySQL (i nie tylko) bez konieczności zarządzania serwerem. Do wyboru mamy niezliczoną ilość wersji MySQLa. Dodatkowo, możemy skorzystać z opcji master-standby, która jest przez Amazona nazywana RDS Multi-AZ. Polega ona na tym, że w drugiej strefie dostępności (odrębne fizyczne data center) umieszczona jest replika bazy danych, która w razie awarii może przejąć funkcję głównej bazy danych (mastera) i sprawić, że nasz serwis będzie nadal funkcjonował poprawnie. Wszystko to bez skomplikowanych operacji zestawiania replikacji w sposób tradycyjny i mechanizmu HA, który przepinałby odpowiednio bazy w aplikacji, czy adresy IP (Failover). O redundancję dba już usługa AWSa.

Autoscaling a hosting WordPress

Aby nasza witryna zyskała możliwość dopasowania zasobów do obciążenia, musimy przygotować dla niej odpowiednie mechanizmy autoscalingu. Jest to mechanizm, który pozwala dodawać i usuwać zasoby na żądanie w sposób automatyczny, z góry określony. Oczywiście musi istnieć pewna minimalna ilość serwerów, aby zapewnić HA, ale w razie wzrostu ruchu możemy ustalić, że gdy np. obciążenie serwerów www przekroczy 70%, autoscaling dostawi kolejny serwer www, który automatycznie „wepnie się” do ELB. Ten sam mechanizm zadba o usunięcie serwera, kiedy ruch spadnie. Ten mechanizm przyda się w szczególności przy awarii całej strefy dostępności i dostawi w działającej strefie tyle serwerów, ile trzeba, aby serwis działał.
Mechanizm ten pozwala nam też używać małych i tanich instancji EC2. Otrzymujemy na nie kredyty pozwalające na obciążenie procesora. Kredyty te są zużywane, jeśli serwis wykorzystuje intensywnie procesor. Dzięki takim współdzielonym rdzeniom płacimy niewiele za instancję, a kontrolując ilość kredytów możemy w razie ich spadku dostawić z użyciem autoscalingu instancje, aby serwis działał sprawnie. Przypominam, że wszystko to definiuje się automatycznie i mechanizmy funkcjonują potem bez naszego udziału. Dzięki autoscalingowi, hosting WordPress w chmurze AWS nabiera nowego wymiaru.

Oszczędności dzięki instancjom EC2 Reserved

Kluczem do uzyskania niskiej ceny takiego środowiska jest skorzystanie z opcji zakupu instancji reserved. AWS umożliwia zakup instancji „na godziny” oraz w opcji reserved. Pierwszy wariant pozwala nam w każdej chwili załączyć/wyłączyć zasoby, ale jest najdroższy. Wariant reserved to deklaracja. Deklarujemy, że rok będziemy używać konkretnych zasobów i musimy przez rok lub 3 lata za nie płacić niezależnie czy ich używamy, czy nie. Zyskiem jest 30-50% zniżki na jeden z najdroższych elementów infrastruktury w AWS. Poza tym zasoby są wymienne – np. dwie instancje danego typu kupione w opcji reserved możemy wymienić na jedną nieco większą i płacić nadal tak samo, albo wymienić na 4 mniejsze. Opcji jest dużo. W ostateczności mamy AWS Marketplace, w którym możemy sprzedać takie zakupione instancje innym klientom AWS. Amazon wspiera ten mechanizm, pobierając niewielką prowizję, ale daje nam szanse pozbycia się po atrakcyjnej cenie zasobów, z których nie skorzystamy.

Podsumowanie

Jako Hostersi mamy przygotowany schemat konfiguracji, o której tu pisaliśmy. Pomożemy Ci ją wdrożyć, utrzymać i zapewnić hosting WordPress w chmurze AWS. Może się okazać, że zapłacisz tyle samo, co za wynajętego VPSa, albo mniej niż za serwer dedykowany, zyskując wysoką dostępność oraz możliwość ekspresowego skalowania infrastruktury. Dodatkowo, zlecając nam opiekę administracyjną nad swoimi zasobami, zyskujesz pewność i bezpieczeństwo – my będziemy czuwać za Ciebie.
Skontaktuj się z nami, a przedstawimy Ci szczegóły i odpowiemy na wszystkie pytania!



Zobacz również:

Chmura AWS na czas sprzedaży biletów na koncert Justina Biebera
Migracja do Amazon Web Services aplikacji Landingi.com
Hosting WordPress w chmurze AWS z pełną redundancją
Skąd się bierze wysoka dostępność (HA) w chmurze?
Amazon Web Services ma już 10 lat

Case Studies
Referencje

Z przyjemnością polecamy firmę Hostersi, z którą mieliśmy przyjemność współpracować przy okazji wdrożenia skalowalnej infrastruktury w Amazon Web Services, opartej o technologię Kubernetes i metodykę DevOps.  Hostersi okazali się niezwykle proaktywnym partnerem, który nie tylko wdrażał wskazane rozwiązania, ale proponował optymalne narzędzia i technologie, które sprawiły, że efekt wdrożenia jest dla nas w pełni satysfakcjonujący. Polecamy!

Grzegorz Lentzy
IT Director LINK Mobility
W skrócie o nas
Specjalizujemy się w dostarczaniu rozwiązań IT w obszarach projektowania infrastruktury serwerowej, wdrażania chmury obliczeniowej, opieki administracyjnej i bezpieczeństwa danych.