Jednym z głównych problemów
wszystkich serwisów internetowych są... użytkownicy ;) Jest to
naturalnie problem z kategorii tych, których wszystkim należałoby
życzyć, niemniej problem stawiający też niemałe wyzwania.
Wzrost oglądalności dobrychprogramów w ciągu ostatnich lat był dla
nas niezwykle miłym, jednak wymagającym doświadczeniem -
infrastruktura do hostingu, stworzona przed kilku laty w oparciu o
serwery "towerowe", wprawdzie ewoluowała wraz z serwisem, pojawiały
się nowe maszyny, zmieniali się dostawcy usług internetowych,
mieliśmy jednak świadomość, że osiąganie wyznaczonych sobie
standardów bez rewolucyjnych zmian będzie coraz trudniejsze.
Wprawdzie zbudowaliśmy niezawodny klaster maszyn działający nawet w
razie awarii kilku z nich, jednak na częste ostatnio awarie prądu
lub łącz poradzić nic nie mogliśmy.
Zdecydowaliśmy więc, że czas przestać jedynie nadążać za rosnącymi
potrzebami i podjąć działania, które zapewnią nie tylko odpowiedni
zapas wydajności infrastruktury pod dalszy rozwój, ale i
zdecydowanie podniosą poziom jej niezawodności. Efektem jest
zakończone w tym tygodniu przeniesienie serwisu oraz towarzyszących
mu usług na zupełnie nowe serwery umieszczone w profesjonalnym
centrum danych. Postanowiliśmy podzielić się informacjami od kuchni
o tym, co udało się nam zrobić i jak teraz wygląda nasza
infrastruktura...
Z wierzchu widać najpierw Windows Server...
Z serwisu korzysta obecnie przeszło 5
mln unikalnych użytkowników, którzy generują blisko 40 mln odsłon,
a jest to jedynie wierzchołek góry lodowej. Ruch ten generuje
olbrzymią liczbę wywołań do serwerów i niezwykle duże obciążenie
nieuwzględnianych przez te cyfry, towarzyszących serwisowi usług
dodatkowych - multimedia strumieniowe, magazyn z binariami
itp.
Aplikacje obsługujące serwis i forum napisane są obecnie w PHP i od
początku hostujemy je w oparciu o Windows Server i wbudowany w
niego serwer WWW, który Microsoft nazwał IIS. Dostajemy mnóstwo
pytań, skąd pomysł na taką kombinację i czy nie lepiej byłoby robić
to inaczej. Odpowiedź jest prosta - po pierwsze, Windows Server
jest jedyną platformą, która pozwala nam jednocześnie hostować
aplikacje napisane w PHP, jak i w Perlu, ASP.NET i innych językach.
Po drugie, na tym właśnie się znamy i wierzymy, że w oparciu o ten
tandem jesteśmy w stanie zapewnić serwisowi niezbędną wydajność i
niezawodność - co do tej pory udawało się z powodzeniem. Niemal
wszystkie problemy, jakich doświadczaliśmy w ostatnim czasie,
spowodowane były przez zewnętrznych dostawców prądu lub łącz i
leżały poza naszą kontrolą.
W przeciwieństwie do wielu innych serwisów, które wraz ze wzrostem
oglądalności dodają "do pieca" kolejne serwery, my od zawsze
staraliśmy się myśleć nieszablonowo i szukać rozwiązań przede
wszystkim w warstwie oprogramowania do hostingu. Kiedy kończyły się
zasoby, pracowaliśmy nad optymalizacją aplikacji i serwerów WWW -
największe efekty uzyskaliśmy dzięki zastosowaniu kompresji
wysyłanych do użytkowników treści (co ogranicza potrzebne pasmo i
powoduje, że strony ładują się szybciej) oraz zastosowaniu
prekompilacji i buforowania skryptów przy użyciu modułów typu
xcache.
Więcej o naszych doświadczeniach z hostingiem i optymalizacją
PHP znaleźć można na łamach innego naszego portalu -
TechIT.
Konsola Windows Server 2008
Migracja na nowe serwery umożliwiła
nam migrację na nowe wersje oprogramowania serwerowego. Obecnie
pracujemy w oparciu o Windows Server 2008. Serwery IIS 7 pracują w
klastrze NLB, a treści witryn replikowane są między węzłami przy
wykorzystaniu technologii DFSR. Wykorzystujemy zarówno bazy MySQL,
jak i Microsoft SQL Server 2008. IIS 7 pozwoli nam dodatkowo
podnieść wydajność dzięki zastosowaniu mechanizmu kernel mode
caching - to jednak dopiero plany, musimy to jeszcze dokładniej
przetestować.
...pod spodem warstwa wirtualizacji VMware
ESXi...
Największą nowością nie jest jednak
dla nas nowy Windows Server, a zastosowanie technologii
wirtualizacji. Wszystkie serwery poza tymi obsługującymi bazy
danych pracują jako maszyny wirtualne. Każdy z serwerów fizycznych
obsługuje równocześnie kilka systemów realizujących różne funkcje -
przykładowo, jedna z maszyn obsługuje Windows Server 2008 pracujący
jako kontroler domeny oraz linuksową dystrybucję Vyatta pracującą
jako router (tak, router też zwirtualizowaliśmy, ale o tym
później). Podejście to pozwala nam hostować serwis i usługi w
oparciu o mniejszą liczbę urządzeń oraz w razie awarii któregoś z
serwerów błyskawicznie przenieść maszyny wirtualne obsługujące np.
serwery poczty na inne urządzenie.
Konsola hypervisora VMware ESXi
Jakiego rozwiązania do witrualizacji
serwerów używamy? Pierwszym, naturalnym dla nas wyborem było
Hyper-V, które jest częścią Windows Server 2008. Zastosowaliśmy
bezpłatny Hyper-V Server i skonfigurowaliśmy kompletne środowisko,
napotkaliśmy jednak poważny problem. Maszyny wirtualne obsługujące
węzły klastra WWW po włączeniu na nich NLB (Network Load Balancing
- usługa do klastrowania i równoważenia obciążenia) i obarczeniu
ich testowym ruchem zaczęły się restartować... Próbowaliśmy
poradzić sobie z tym problemem szukając rozwiązań w warstwie
sterowników do kart sieciowych oraz konfiguracji parametrów IGMP
Snooping switcha - niestety bez rezultatu. Dodatkowo, pod Hyper-V
napotkaliśmy na spore problemy w wirtualizacji Linuksa. Microsoft
teoretycznie wspiera Linuksa pod Hyper-V, wydał nawet tzw.
komponenty integracyjne dla Linuksa pozwalające mu bezproblemowo i
wydajnie pracować pod Hyper-V, działają one jednak wyłącznie z SuSE
i to wyłącznie ze starszymi wersjami jądra. Pod Debianem na kernelu
2.6.26 (na tym opiera się Vyatta) nie udało nam się ich
uruchomić.
Ponieważ czas naglił, a pomysły na walkę z tymi problemami się
skończyły, sięgnęliśmy po rozwiązania ze stajni VMware, w
szczególności po także bezpłatny hypervisor ESXi. Ten pomyślnie
przeszedł testy obciążenia, idealnie radzi sobie także z
witrualizacją zarówno Windows Server, jak i systemów linuksowych -
zapewnia między innymi natywne sterowniki do kart sieciowych
pozwalające routerowi przerzucać setki megabitów ruchu przy
minimalnym obciążeniu procesora.
...pod nią fizyczne maszyny - serwery firmy
Triline...
Wszystko to wymaga odpowiedniej mocy
obliczeniowej. Zdecydowaliśmy się na serwery marki Triline. To stosunkowo nowa na
polskim rynku marka, za którą stoi wrocławska firma AB - jeden z czołowych polskich
dystrybutorów IT. Maszyny te oferowały najlepszą relację jakości do
ceny, a producent umożliwia stworzenie konfiguracji w 100%
dopasowanych do potrzeb.
Serwery Triline oparte są całkowicie o serwerowe platformy
produkcji Intela, z którymi już wcześniej mieliśmy bardzo pozytywne
doświadczenia. Zdecydowaliśmy się zarówno na serwery rakowe z serii
MERCURY
MX, jak i rozwiązanie modułowe z serii MERCURY
MQ, które stanowi bardzo atrakcyjną alternatywę np. dla, także
testowanych przez nas, serwerów blade marki HP z serii c3000.
Rozwiązanie pozwala w jednej obudowie zmieścić wiele modułów
serwerowych podpiętych do współdzielonej macierzy dysków. Intel
nazywa tą platformę Modular Server System - to w dużym skrócie
jedna obudowa przeznaczona do montażu w szafie stelażowej, która
integruje ze sobą maks. 6 dwuprocesorowych serwerów (maks. 48
rdzeni i 192 GB RAM), 14 dyskową macierz hot-swap (SAS), a także
moduł zarządzający, max. 2 moduły storage (RAID) oraz max. dwa 10
portowe switche 1Gb Ethernet.
W każdym z wykorzystanych przez nas serwerów znalazły się po dwa
procesory Intel Xeon Quad-Core z serii E54xx (pracujące na szynie
1333 MHz), gigabajty ramu, kontrolery RAID i inne rzeczy, które
każdy szanujący się serwer mieć powinien ;)
Docent w trakcie montażu pierwszej partii
...i na plątaninę kabli od tyłu
Serwery wyposażone są w technologię
pozwalającą na całkowite zdalne zarządzanie, co było jednym z
kluczowych czynników decydujących o wyborze - fizycznie urządzenia
podłączone są w Warszawie, podczas gdy siedziba redakcji mieści się
we Wrocławiu. Możemy zdalnie kontrolować zasilanie maszyn, z
dowolnego miejsca przekierować na notebooka konsolę (ekran, mysz i
klawiaturę) aby np. wejść do BIOSu lub zreinstalować system
znajdujący się na partycji fizycznej (instancjami wirtualnymi
zarządza się nieco inaczej). Dodatkowo, macierz dysków pozwala
elastycznie tworzyć i przypinać do poszczególnych urządzeń partycje
z danymi. W połączeniu z wirtualizacją pozwala to w razie np.
awarii serwera przepiąć dysk z obsługiwanymi przez niego maszynami
wirtualnymi do innego serwera i uruchomić je przy minimalnej
przerwie w dostępie do usług.
Konsola do zdalnego zarządzania modularem
Musimy przyznać, że konsola do
zdalnego zarządzania sprzętem sprawa dużo przyjemniejsze wrażenie
niż wiele z rozwiązań konkurencyjnych, które mieliśmy okazję
testować - między innymi dzięki wykorzystaniu AJAXa, który
likwiduje konieczność przeładowywania całych stron przy każdym
kliknięciu.
...a wszystko to w Centrum Danych firmy ATM w
Warszawie...
Do pracy całej infrastruktury
potrzebne są odpowiednie warunki - pomieszczenia ze ścisłą kontrolą
dostępu, monitoringiem, szafami rakowymi, klimatyzacją,
wielotorowym zasilaniem z podtrzymaniem na wypadek awarii prądu,
systemem gaśniczym wykorzystującym specjalny gaz, który w razie
pożaru nie zniszczy sprzętu jak zwykła woda itd... Wszystko to,
wraz z niezwykle przyjemną obsługą i pomocną dłonią znaleźliśmy w
warszawskim Centrum Danych
ATMAN należącym do firmy ATM. Partnera w tym zakresie
wybieraliśmy w procesie bardzo wnikliwej analizy - kontaktowaliśmy
się niemal ze wszystkimi kluczowymi firmami świadczącymi takie
usługi i prawdę mówiąc, po zestawieniu wszystkich opcji wybór
okazał się stosunkowo prosty.
Serwerownia, w której kolokujemy swoje serwery
TomekB przy szafach z zamontowanym już sprzętem
Budynek ATM w Warszawie przy ul. Grochowskiej
Wejście do budynku, bramki i kontrola dostępu
Śluzy prowadzące do pomieszczeń z serwerowniami
...wpięte do międzyoperatorskich węzłów wymiany
ruchu ACX oraz PLIX
Pomieszczenia z odpowiednimi
warunkami to jednak nie wszystko - równie ważne jest podpięcie
infrastruktury do Internetu. Łącza także zapewnia nam ATM, dzięki
któremu podłączeni jesteśmy do wielu różnych segmentów Internetu
oraz do dwóch międzyoperatorskich punktów wymiany ruchu - ACX oraz PLIX. Punkty wymiany ruchu to węzły,
w których niemal wszyscy ważni operatorzy telekomunikacyjni w kraju
(poza TP S.A.) oraz dostawcy treści tacy jak my łączą się
bezpośrednio i wymieniają ruch praktycznie bez żadnych limitów
(poza sprzętowymi) na zasadach peeringu.
Switch zapewniający nam łączność ze światem
Po co to wszystko?
Mamy nadzieję, że nowa
infrastruktura, łącza o znacznie większej przepustowości oraz nowe
warunki, w których ją kolokujemy zapewnią przede wszystkim dużo
większą niż dotychczas niezawodność serwisu oraz komfort
użytkowania - choć wiadomo, że w początkowym okresie, kiedy dla nas
też wszystko jest jeszcze nowe, mogą zdarzyć się drobne potknięcia
(chociaż do tej pory ich nie było i - odpukać - miejmy nadzieję, że
jednak nie będzie). Ponadto, nowa platforma to dla nas baza
pozwalająca nie martwić się o dalszy rozwój serwisu, o obsługę
nowych użytkowników i realizację nowych pomysłów. Pierwszy większy
test -
wywiad z siedziby AVG w HD przeszedł wyjątkowo pomyślnie - mamy
nadzieję, że to dobry znak na przyszłość :)