We are in the process of migrating this forum. A new space will be available soon. We are sorry for the inconvenience.

Zmiany w infrastrukturze hostingu


kamil
22-04-2013, 13:24
Witam,

W ciągu ostatnich 2 miesięcy przeprowadziliśmy kilka
zmian w usłudze hostingu. Prace dotyczyły 2 z 7
produkcyjnych klastrów: cluster002 i cluster007.
Każdy z nich składa się z infrastruktury LB, 1000
serwerów HG, 20-50 serwerów plików i serwerów SQL.

Dzięki opcji loadbalancingu ruch przychodzący dla
każdej strony jest automatycznie przekierowywany
pomiędzy kilka fizycznych maszyn. Co tydzień
dodajemy również kilkadziesiąt nowych maszyn do
każdego klastra, tak żeby całkowite obciążenie usługi
nie przekroczyło 50%.

Po udostępnienie nowych skryptów PHP dla najbardziej
popularnych cms'ów (w tym wordpress, prestashop), ich
wydajność nie jest wystarczająca. Przede wszystkim
właśnie dlatego, że cały ruch jest przekierowywany
do kilku serwerów, a nie jednej maszyny. W rezultacie
każdy internauta ładuje stronę za każdym razem, zamiast
korzystać z pamieci cache.

Rozwiązanie: przekierowanie wszystkich internautów dla
wybranej strony wyłącznie na 1 serwer. Dodatkowo skrócenie
czasu ładowania strony z wykorzystaniem pamięci cache
wygenerowanej przez poprzedniego odwiedzającego stronę.
Dlatego stworzyliśmy nowy system rozdzielenia ruchu,
który uwzględniał te zmiany.

Natomiast w wyniku tych zmian pojawił się nowy kłopot.
W przypadku kilku dużych portali, ruch przychodzący
był tak duży, że nawet serwer HG nie wystarczył do ich
obsługi! Przerwa w dostępie dotyczyła całego serwera
w klastrze, w tym mniejszych serwisów które były na nim
umieszczone.

Dlatego zmieniliśmy sposób działania oprogramowania,
które sprawdza w czasie rzeczywistym podstawowe
parametry serwisu: ilość odwiedzin, zużycie procesora
oraz pamięci RAM (dziękujemy BigData). Dodatkowo
sprawdzamy parametr burst, czyli gwałtownie zwiększającą
się liczbe odwiedzin. W takim przypadku wybrany serwis
jest automatycznie przenoszony na serwer zapasowy,
dedykowany do tego celu.

Wynik: wszystkie mniejsze, standardowo działające serwisy
działają ciągle na serwerze głównym bez wpływu na obciążenie
komponentów sprzętowych. Na tej podstawie możemy również
ustalić, ile statystyczna strona pobiera zasobów i następnie
przewidzieć zapotrzebowania na kolejne serwery w klastrze.

Pozostałe duże serwery są przenoszone automatycznie na
klaster zapasowy. Jest to również sygnał, że wybrany serwis
przestaje mieścić się w ramach przewidzianych dla usługi
hostingu i wymaga migracji do usługi dedykowanej: VPS,
clouda czy na serwer dedykowany. Oczywiście może on również
pozostać na klastrze, bez limitów dla transferu i liczby
odwiedzin, ale bez gwarancji szybkości usługi.

Pozostały nam do wprowadzenia nastepujące opcje:
- informowanie użytkowników przenoszonych na klaster
zapasowy, wraz z możliwymi rozwiązaniami.

- dla mniejszych serwisów ulepszamy działanie pamięci cache
na każdym serwerze. Zmienimy również sposób wykonywania
skryptów z wykorzystaniem cache, co powinno przyspieszyć
ich działania.

- rozpoczniemy testy usługi hostingu prywatnego czyli
zapasowego klastra dedykowanego, rozbudowywanego w zależności
od wymagań użytkowników. Technicznie będzie on działać
na bazie usługi VPS, clouda lub serwerów dedykowanych, ale
z wykorzystaniem wszystkich zasobów serwer. Możliwe, że w
kolejnym etapie uruchomimy takie klastry do obsługi RoR,
Javy lub Pythona...

Pozdrawiam, Octave