Joomla na wielu serwerach skalowalnych co Ty na to ? da się czy się nie da ? Pewnie że się da, a jak Ci powiem że koszt takiego rozwiązania będzie tańsze* niż Twój serwer dedykowany i w tym momencie zacząłeś się zastanawiać, ale to dobrze bo trzeba mieć umysł otwarty na różne rozwiązania technologiczne. Jeśli nigdy nie miałeś do czynienia z Cloud Computingiem to odsyłam do Wikipedii po polsku do tego artykułu TUTAJ. Pewnie zadajesz sobie pytanie czy to jest dla mnie ? muszę odpowiedzieć niejednoznacznie to zależy na czym Ci zależy i co konkretnie próbujesz osiągnąć. Chmura to nie jedno rozwiązanie ale setki ich, ale dziś skupimy się na  polskiej chmurze e24cloud.

PRZYPADEK

Mamy stronę umownie będzie to "Tajna strona" która ma dość dużo plików .jpg w dodatku oglądalność tej strony nie jest równomiernie czasowo rozłożona, a szczyt odwiedzin przypada między godziną 17:00 a 23:30 w dni powszechne. W weekendy bywa różnie i niema szczególnego schematu który moglibyśmy zastosować. Ten przykład idealnie wpisuje się w e-commerce chodź w tym wypadku jest to strona z gazetkami ogłoszeniowymi. Cała strona zajmuje 15 GB i rośnie z czego 90% to wspomniane wyżej obrazy.

PROJEKTOWANIE

Wykorzystanie serwerów i rozwiań z e24cloud 

Konfiguracja następująca:

Jeden region - Poznań

Dwa serwery skalowane obciążeniem oraz harmonogramem, backupowane 

Jeden load balancer

Dodatkowo backup strony trzymany na S3 w AWS

 

Jak widzicie powyżej mamy ruch od strony internetu który przechodzi przez Load Balancer i to on rozdziela ruch między hosty WEB-1 oraz WEB-2. Na hostach jest najzwyklejszy LAMP obraz przygotowany przez specjalistów z e24cloud więc w zasadzie mamy serwery ready to go! 
Niema muszę wam pisać ile zajmuje instalacja i konfiguracja serwera web (apache,ftp,mysql,php). A tutaj dostajesz wszystko na tacy oczywiście nic nie stoi na przeszkodzie abyś sam dobrał sobie na czystym np centos swoje ulubione komponenty na których pracujesz ngnix czy mariadb ale wówczas zajmie Ci to czas na instalacja i konfiguracje.
 
Na serwerach WEB-1 oraz WEB-2 jest zastosowanie podwójne skalowanie pierwsze które mówi że od godziny 17:00 do 23:30 mają serwery działać na 2 CPU oraz 2 GB ram, bo w tym czasie jest największy generowany ruch. ALE! autoskalowanie jest o tyle fajnym narzędziem, że możemy je ustawić w sposób bardziej inteligentny i oszczędniejszy. Więc jeśli przez 5 min serwer będzie obciążony na CPU 90% to znaczy że jest duży ruch wówczas z wartości domyślnej 1 CPU oraz 0,5 GB RAM przejdzie do zdefiniowanej wartości w tym wypadku ja ograniczyłem się do 2 CPU i 2 GB ram działa to niezależnie od harmonogramu. Więc w środę okazuję się ruch na naszej stronie jednak nie jest zbyt wysoki w wyznaczonych godzinach to poco mamy płacić za niewykorzystane zasoby autoskaler zastosuje regułę serwer się nudzi to zmieniamy konfiguracje na bardziej opłacalną ;) Oszczędzamy nie tracąc na wydajności! 
Jedna uwaga! podczas autoskalowania serwery są restartowane! więc trzeba pamiętać aby nie robiły tych zadań o jednakowych czasach bo jeśli tak by się stało 404 murowane ponieważ Load Balancer straci połączenie z obiema maszynami. Pamiętaj aby zachować bezpieczny odstęp czasowy w moim wypadku 5 min spokojnie starcza więc, gdy WEB-1 jest skalowany to ruch przechodzi przez WEB-2 i odwrotnie. 
Polecam zastosować podobny schemat z backupem jeśli chcemy backupować oba serwery, aby nie tracić na wydajności.
 
Load Balancer na e24cloud to już skonfigurowana usługa więc nie trzeba mieć wiedzy specjalistycznej aby go wdrożyć do swojego rozwiązania. Klikasz i masz za kilka chwil działający serwer takie to proste. 

BACKUP

W każdym środowisku jest to ważny element w moim rozwiązaniu są zastosowane dwa backupu samych maszyn WEB-1 i WEB-2 to obrazy dysków przechowywane u e24cloud. Backup uruchamia się z harmonogramu trzymany jest 21 dni po tych dniach starsze są usuwane, aby ograniczyć koszty przechowywania danych. Na hostingach współdzielonych backup jest trzymany zazwyczaj 5 - 7 dni inne rozwiązania jak VPS czy dedykowany serwer to już różnie bywa. Tutaj ustalasz sam czas, jeśli chcesz trzymać kopie z 3 miesięcy owszem możesz tylko licz się z kosztami przechowywania danych.

Kopia zapasowa jest wyklikiwana wiec kiedy ma się robić i jaki dysk na być z backupowany, reszta zajmie się e24cloud, a Ty możesz spać spokojnie. 

Sam CMS Joomla wraz z plikami jest backupowana dodatkowo do bucketu na S3 czyli usługi do przechowywania plików w chmurze na Amazon Web Services. Ze względu że to strona testowa przetestowałem wysyłka mysqla ważącego prawie 300 MB 

Na diagramie w sekcji PROJEKTOWANIE macie odnogi prowadzące z bucketu S3 do AWS, AZURE, GOOGLE Cloud czy Regionu Warszawa na e24cloud koncept jest taki jeśli przestanie odpowiadać mi chmura e24cloud to mogę poprzez kopie plików, sql spokojnie migrować do innego dostawcy przygotowując infrastrukturę i zaciągając kopie na gotowych serwerach azure czy EC2. Mało tego mogę znaleźć dostawce który np nie będzie pobierał opłat za wyłączone środowisko pewnie gdzieś by się takiego znalazło i tym sposobem mamy Disaster Recovery za (0 zł) dla całej infrastruktury www naszego biznesu.  

SYNCHRONIZACJA

No tak dwa serwery nikt nie będzie robił roboty podwójnie i tutaj z pomocą przychodzą tryby synchronizacji, które już musisz sam skonfigurować w swojej aplikacji czy też strony. W mojej "Tajnej stronie" mysql działa w trybie MASTER <-> MASTER ten tryb oferuje taką korzyść że niezależnie czy Load Balancer skieruje ruch zmiany będą na obu serwerach jednocześnie. Przykład działania pokaże wam w najbliższym odcinku Joomla To Proste #14 , który będzie dostępny na kanale YT https://joomlaguru.pl/proste suby mile widziane motywują mnie do dalszej pracy.

Jeśli chodzi o pliki to można wykorzystać kilka rozwiązań jak:

Ponieważ nie jestem master of linux script guy wykorzystałem to co miałem pod ręką i było łatwiej skonfigurować. Przetestowałem Unison i działał jak złoto do czasu out of memory przy stronie 15 GB niestety zawieszał cała maszynę przy synchronizacji być może da się temu zaradzić jeśli wiesz jak zostaw info w komentarzu będę Ci niezmiernie wdzięczny. 

Drugi testowany skrypt to SynThing który działa sprawnie i ma dostęp webowy nawet ciekawe rozwiązanie dla osób które na bieżąco coś poprawiają można zdefiniować kilka lokalizacji i wówczas się synchronizują. Nie jest to idealne rozwiązanie które by mnie satysfakcjonowało, ponieważ wykorzystuje pery poza sieci chmurowej, póki co działa. Jednak to jest do zmiany i takiego rozwiązania na produkcji nie polecam ze względu bezpieczeństwa. 

PODSUMOWANIE

Jeśli zastanawiasz się ile czasu zajęło mi zbudowanie całego środowiska ? To już Ci odpowiadam ponieważ całość jest wyklikiwana to postawienia dwóch serwerów + VLAN pod Load Balancer max 10 min. kolejne około dwudziestu minut zajęło mi skalowanie, harmonogramy skalowania i backupu na obu serwerach. E24Cloud to fajna i nie skomplikowana chmura obliczeniowa, przy tym nawet przystępna cenowo moje środowisko w tym momencie kosztuje 0.34 grosze / 1h czy dużo czy mało to już zależy od Twojego punktu widzenia. Musisz pamiętać o kilku rzeczach płacisz tylko za wykorzystane zasoby, ale również za transfer wychodzący z usług 0.02 / 1h także zapoznanie się z cennikiem to rzecz święta znajdziesz go tutaj http://www.e24cloud.com/cennik/ 

Miej proszę na uwadze że trochę wiedzy musisz mieć ze sobą aby skonfigurować czy mysqla we wspomnianym trybie Master <-> Master lub Master -> Slave a i sama synchronizacja też się nie skonfiguruje. Przy odrobinie wysiłku jesteś wstanie to zrobić sam.

Przetestuj usługę z linków zamieszczonych dostaniesz 20 zł na testy zawsze to coś na dobry start.