27. Podsumowanie
• Wyzwaniem jest wydajność (IOPS), a nie pojemność
• Macierze NAS są drogie i słabo się skalują
• Alternatywą jest storage rozproszony
• CEPH to przykład takiego systemu
• W Onet używamy go produkcyjnie
• I nadal rozwijamy nasze klastry
Porozmawiamy o najnowocześniejszych systemach storageowych w kontekście naszych rozwiązań chmurowychTytułowe pytanie będzie trudne
Zacznijmy od skali Onetu i naszych wyznwań – w tle widzimy tłum naszych użytkowników
Jak widać z powyższych statystyk wyzwaniem będzie nie zapewnienie pojemnościAle odpowiedniej ilości jednoczesnych operacji wejścia wyjścia, czyli IOPSówBędziemy rozmawiać nie o petabajtach danych, ale np. o tysiącach obrazków do podania na sekundę
Pojedyncze superserwery
Bardzo mocne maszynyBardzo drogieBardzo trudne do skalowania – wąskie gardła
Dane na wspólnym systemie storage’owymStorage realizowany przez macierze dyskowe
Im większe macierze tym droższe
Prawdziwa chmura Onetu, setki fizycznych, tysięce wirtualnych, ciągle rotujących się
Chmura z prawdziwego zdarzenia.Storage dla takiej ilości równolegle działających maszyn?
Klasyczne rozwiązanie z sektora enterprise – droga, wszystko mająca macierz NAS, czyli Network Attached Storage
Jedna to za mało do redundancji, więc kupujemy kolejną. potem kolejne do zapasowej serwerowni
Mamy półki / macierz RAID, z dyskami, Mamy kontrolery udostępniające usługi sieciowe oraz switche,
Wszystko razem połączone i udostępniające dane użytkownikomMożemy zabić się na wydajności sieci, kontrolerów, pojemności i wydajności półek i połączeń do nichRozwiązanie drogie i źle skalujące się - odpowiednik mainframe’ów
Rozwiązanie?
Zróbmy to samo co z mainframe’ami – rozproszmy storage między mniejsze urządzania
Wyrzucamy mega drogie kontroleryI zamiast nich dorzucamy mniejsze kontrolery, powiedzmy takie mikro, tansze, ale w wiekszej ilosciI przepinamy do nich nasze macierze
W ogóle wyrzucamy kontroleryZamiast tego dokładamy urządzeń z dyskamiTylko to już nie mogą być zwykłe RAIDy, bo muszą mieć rozproszoną logikę kontrolera
Bierzemy zwykły serwer PC, stosunkowo tani, z pewną liczbą dysków
Dorzucamy mu kolegów, dorzucamy switchejuż teraz widać, że będzie się to skalowało w pionie i poziomie
Teraz potrzebujemy oprogramowania, które musi spełniać nasze założenia
Pierwsze było GoogleFS
Jest wiele rozwiązań na rynku, my wybraliśmy open-sourceowego Cepha
Podobnie jak np. CERN i Deutsche Telekom, a ostatnio firmę produkującą CEPHa kupił RedHat
No dobrze, ale jak to działa?
W tle zdjęcie prawdziwej serwerowni OnetuJedna komora składa się z rzędów, rzędy z szaf
W szafach są zamontowane serwery, a w nich dziesiątki dyskówTaką mapę przekazujemy w konfiguracji CEPHowi
Powtórzmy – mapa przedstawia aktualną strukturę sprzętową serwerowni
Algorytm crush pozwala odnajdować dane (fragmenty plików) na dyskach na podstawie mapy
Dla każdego fragmentu pliku, pozwala na podstawie aktualnej mapy określić dyski na których jest przechowywany (tutaj trzy)Dzięki podziałowi na mniejsze fragmenty duże pliki są równomiernie rozłożone na wielu dyskach –> jednoczesny zapis i odczyt z wielu maszyn
W razie awarii otrzymujemy nową mapę i algorytm wyznacza nowy trzeci dysk, na który przepinani są klienci i jednocześnie na który automatycznie migrowane są dane
Mapa określa również ilość kopiiDomyślnie na każdym poziomie jest jedna kopiaAle możemy na przykład nakazać trzymać trzy niezależne kopie danych na poziomie szaf
Filesystem do zamontowaniaUrządzenie blokowe - wirtualny dysk, który możemy sformowatować dowolnym formatem, np. NTFSem z Windows
I na końcu najważniejsze – obiekty, do których możemy się dostać przez RESTful API S3 (Standard Amazon) i Swift (Standard Openstack)
Zaczęliśmy od PoCa, teraz mamy 2 x 2 klastry produkcyjne i dodatkową kopię danych w AMZ
OCDN – większość obrazków onetu oraz OnetDysk Ten pierwszy na dyskach SAS, bo baliśmy się troszkę wydajności, drugi z dużo tanszymi dyskami SATATo były pierwsze przymiarki do technologii, aby zdobyć doświadczenia