Z klawiaturą wśród VPS’ów, w krainie usług hostingowych. „Ale, o co chodzi?”
Witaj Czytelniku. Skoro trafiłeś na nasz artykuł, jest szansa, że:
- dopiero zaczynasz przygodę w świecie hostingu / IT / VPS, ale lubisz wiedzieć co w trawie piszczy,
- lub jesteś już na pewnym etapie poznawczym, ale szukasz wiedzy uzupełniającej.
W obu przypadkach dobrze trafiłeś, zachęcam do dalszej lektury.
Seria, którą rozpoczynam niniejszym artykułem, będzie poświęcona usłudze serwerów VPS (Virtual Private Server), od pierwszych kroków przy zakupach, po zaawansowane analizy wydajnościowe różnych trybów ich pracy. Mam nadzieję, że po lekturze wszyscy będziemy bogatsi o nowe doświadczenia i liczę na interakcję w komentarzach :).
No właśnie…
Komu potrzeby VPS? Dlaczego dzisiaj każdy sądzi, że musi mieć VPS’a?
Skąd to lawinowe zainteresowanie? Czy nagle wszyscy potrzebują izolowanego środowiska, na którym mogą instalować co chcą, a każdy stał się fanem spędzania wolnego czasu na administracji swoim prywatnym mini serwerem?
Marketing zrobił świetną robotę, tworząc z VPS jakoby projekt premium, który stał się panaceum na wszystkie bolączki hostingu współdzielonego, czy nawet hostingu dedykowanego. „Kup swojego VPS’a, a będziesz miał swoje wirtualne miejsce w Sieci. Nikt Ci do niego nie zaglądnie, a wydajność będzie niesamowita.”
Niestety, pomimo wielu zalet VPS współdzielonych, czy nawet gwarantowanych, marketingowa papka nie ma nic wspólnego z rzeczywistością. Oto garść przydatnych informacji, porad i mitów na temat VPS:
Jak najprościej opisać pojęcie wirtualizacji ?
W normalnym modelu, Twój serwer fizyczny ma zainstalowany system operacyjny, na którym instaluje się dodatkowo aplikacje, które wykonują powierzone im zadania. W związku z różnymi czynnikami (np. izolacja środowisk, bezpieczeństwo, różne zależności bibliotek itd.), zaistniała potrzeba utworzenia możliwości dzielenia serwera fizycznego na mniejsze jednostki. W tym celu opracowano oprogramowanie, które symuluje fizyczny serwer, umożliwiając instalację kilku odrębnych systemów operacyjnych/środowisk.
Technik wirtualizacji jest kilka, ale najbardziej znane to: izolacja, kontenery, parawirtualizacja, hvm (pełna wirtualizacja z symulacją urządzeń sprzętowych).
Przykładowe porównanie pełnej wirtualizacji vs docker(kontenery) zaprezentowano na rysunku:
Na rynku hostingu najczęściej znajdziemy: KVM, openvz i coraz śmielej pojawiające się: docker, lxc, joyent(zony). Każda z ofert ma swoje plusy i minusy, ale o tym za chwilę.
Co lepsze? Parawirtualizacja, kontenery, czy pełna wirtualizacja?
Parawirtualizacja obecnie powoli odchodzi do lamusa. W momencie powstania wsparcia sprzętowego dla pełnej wirtualizacji, czy przy stosowaniu mapowania urządzeń pci/storage 1do1 (pass-through), różnice zanikają. Kiedyś Xen para vs KVM to było nawet 15% na korzyść Xen. W dzisiejszych czasach KVM potrafi zejść z tzw. karą za wirtualizację do 3%.
Hej STOP, ale o co chodzi z tą karą ?
Jak wspomniałem wcześniej, wirtualizacja to tak naprawdę kolejny program (hypervisor – hipernadzorca), który działa na głównym systemie operacyjnym (tzw. host OS). W związku z tym, iż tak naprawdę VPS emuluje urządzenia, program musi skonsumować czas procesora i inne zasoby na swoje potrzeby. Jak już widzisz, nie ma szans na taką samą wydajność, jak na systemie hosta, ponieważ część zasobów musi obsłużyć inne zadania.
Tak, dobrze podejrzewasz – w kontenerach i izolacji nie ma hipernadzorcy!
Narzut-kara w izolacji/kontenerach praktycznie nie występują, ale wszystko ma swoją cenę. Mniejsze bezpieczeństwo w stosunku do pełnej wirtualizacji, jak również mniejsza elastyczność. O ile w przypadku hvm możemy instalować praktycznie każdy system operacyjny (który daje się wirtualizować), o tyle w przypadku izolacji/kontenera jesteśmy zlimitowani do architektury/systemu operacyjnego/jądra i tych jego ustawień, które oferuje nam system operacyjny hosta.
KVM vs openvz vs cloudlinux
W przypadku KVM, największym minusem jest kara wydajności, natomiast w zamian mamy pełny dostęp root, pełną kontrolę nad jądrem systemu gościa (nasz VPS), możemy sterować ruchem sieciowym i zaporami, możemy zainstalować, co tylko chcemy. Z tym narzutem też można powalczyć (np. w ofercie servizza.com -> Super VPS, stosujemy techniki akceleracji sprzętowej i odciążania systemów przez przekazywanie funkcji karty sieciowej bezpośrednio do gościa, jak również nie obciążamy podwójnym bufforowaniem w operacjach dyskowych).
OpenVZ to taki trochę twór – ani kontener, ani parawirtualizacja, jednak często jeszcze spotykany w sprzedaży model VPS. Jego plusem jest niewątpliwie mała strata na wydajności. Minusów niestety jest sporo (o szczegółach w następnych odcinkach), np. brak możliwości instalacji innego systemu operacyjnego, ociężały system rozliczania zasobów procesora (szczególnie w architekturze NUMA). Należy również wspomnieć, iż wraz z rozwojem technologii przestrzeni nazw (na której bazuje większość rozwiązań kontenerowych), przyszłość OpenVZ stoi pod znakiem zapytania.
Cloudlinux to jeszcze dość świeży gracz na rynku, ale nie należy go wiązać stricte z techniką wirtualizacji. Jest to raczej zestaw narzędzi, łatek pozwalających na kontrolę zasobów i prywatności z dedykacją dla środowiska hostingowego. Produkt świetnie się skaluje i zapewnia dodatkową warstwę bezpieczeństwa dla użytkowników serwerów współdzielonych i byłoby dobrze, żeby Twój dostawca go używał (no chyba, że ma swój system izolacji, wtedy też ok).
Jak to jest z mityczną szybkością i tzw. „oversellingiem”?
Być może właśnie przeżyjesz szok, ale to, że masz VPS nie oznacza, że Twoje zasoby są gwarantowane i dedykowane. W sieci można spotkać się z opinią, iż nie da się sprzedać więcej, niż daje sam KVM. Otóż, można i jest to częsta praktyka, a ja osobiście nie widzę nic w tym złego. O ile klient jest świadomy tego faktu, dostawca nie unika opisywania tego faktu w ofercie (w myśl zasady, że „gdy nie napiszemy, a klient nie zapyta, to nie kłamiemy, prawda?”).
W oversellingu prym wiodą Openvz. Przeglądając oferty, można stwierdzić, że większość, poza dostępem root i separacją systemu plików nie oferuje nic więcej, a swoim kontenerem nadal musisz zarządzać sam (choć niektórzy za opłatą zrobią to za Ciebie).
Parametry, oj te parametry!
Tutaj to dopiero mamy do czynienia z prawdziwym losowaniem lotto! „2GHz, 4GHz, damy ci 8 wątków vcpu i tonę ramu, a to wszystko w cenie 1/4 serwera dedykowanego (o podobnych parametrach)!”. I tutaj, każdemu powinna zapalić się czerwona lampka: „no, ale jak to jest możliwe?”. Otóż jest. Wystarczy sprzedać więcej, niż ma się fizycznie do dyspozycji. Co z tego, że będziesz mieć 4 vcpu po 2GHz, jak w tym samym czasie na komputerze hosta, na tych samych rdzeniach będą wykonywać się operacje z innych VPS. „Ha! Ale pamięci RAM już nie mogą sprzedać więcej, niż mają, a pasma sieciowego nie podzielą”. Otóż, mogą i robią to. Pamięć można wygenerować z zasobów dyskowych, a do sieci można stosować techniki kolejkowania ruchu.
Czy to oznacza, że VPSy współdzielone nie mają sensu i właściwie przepłacamy? Absolutnie nie, to wszystko jest kwestią Twoich potrzeb i budżetu. Jeśli chcesz mieć np. wysoko zindywidualizowane środowisko pod JAVE, ale tylko do testów, to nie będzie Ci absolutnie przeszkadzać fakt, iż de facto współdzielisz te zasoby i tak naprawdę masz przy pełnym obciążeniu często 10% deklarowanej mocy. W servizza.com oferujemy dwa rodzaje serwerów: niskobudżetowe współdzielone (KVM) oraz gwarantowane i dedykowane Super VPS (w których masz na sztywno przypisane vCPU, pamięć RAM, fizyczną część karty sieciowej oraz natywne operacje IO z pełną akceleracją sprzętową (zalety tego rozwiązania opiszę w kolejnych odcinkach)).
VPS jest najlepszy, nie to co ten dziadowski hosting.
Powiedzenie mówi: „Wolność Tomku w swoim domku”. Tylko, że większość użytkowników zapomina o dwóch istotnych faktach:
- Musisz zarządzać swoim VPS, a to wymaga wiedzy.
Jeśli wiesz co robisz i lubisz to, wtedy nie ma problemu. Dokonałeś świadomego wyboru i nie trzeba tu nic więcej pisać. W innym wypadku, uległeś właśnie czarowi marketingu i teraz, albo dopłacisz do usługi administracji, albo Twój operator dostarczy gotowe rozwiązania (np. webmin/plesk/cpanel) z zarządzaniem (ale tu również czeka Cię dodatkowa opłata), a i to ostatecznie wcale nie oznacza, że serwer będzie zarządzany prawidłowo.
- Część zasobów zostanie skonsumowana przez operacje systemowe i Twoje demony.
Twój hosting miał limit 756MB, ale teraz masz VPS z 1GB RAMu. I… czar pryska po instalacji systemu i konfiguracji choćby podstawowego LAMP. Nagle masz mniej pamięci na PHP, niż miałeś. U nas w servizza.com, np. w usłudze Solidny Hosting, czy Turbo Hosting, zasoby klienta pod PHP i procesy jego hostingu nie są mieszane np. z serwerem MySQL, WWW, pocztą od strony systemowej. Pamiętaj więc, że często po przesiadce na współdzielony VPS może okazać się, że 4 x vCPU będzie wolniejsze, niż kontener z dostępem do jednego rdzenia.
Chmura, czy zwykły VPS ?
Najlepszą odpowiedzią będzie tutaj trójpodział: koszt/zysk/potrzeba. Niewątpliwą przewagą chmur, z założenia jest ich mniejsza awaryjność (przynajmniej w teorii, bo szereg awarii w 2017 niestety nie rzuca dobrego światła na istniejące systemy). Na przykład, gdy padnie serwer host, to nadzorca chmury jest w stanie automatycznie zmigrować nasz VPS na inny serwer host, a często nawet nie zauważymy braku dostępu do usługi. Możliwe są tzw. żywe migracje, jeśli serwer matka jest przeciążony albo automatycznie skalujemy naszą usługę w górę.
Środowiska takie można budować samodzielnie np. z pomocą openstack, jak również można wykorzystać gotowe infrastruktury, jak AWS czy Azure. Niemniej, niestety nie są to z założenia tanie rozwiązania i trzeba dobrze zaplanować swoje zużycie. Inna sprawa to, jak w rzeczywistości wyglądają te chmury (ale na tym skupimy się w następnych częściach serii, abyś poznał argumenty za i przeciw).
Na koniec kącik porad Stefana Servińskiego!
- Sprawdź swój typ virtualizacji komendami: lshw, dmidecode,
- Zacznij monitorować wydajność VPS, aby wiedzieć jak duży w przybliżeniu jest overselling (np. w com na Super VPS 0, korzystając z najprostszego skryptu (https://github.com/odan/benchmark-php) otrzymujemy średnią Total -> 0.573 w ciągu całego dnia). Możesz również wykorzystać oprogramowanie monit dla ładnych wykresów.
- Sprawdź, czy Twój hosting wspiera szybką emulację: lspci |grep -i virtio.
- Wykonaj testy io np. programem fio, ale zanim to zrobisz upewnij się, że nie jest podwójnie bufforowany po stronie host (zapytaj usługodawcę jaki masz limit danych odczytanych/zapisanych na dzień/godzinę (aby Cię nie zablokowali!)).
- Zapytaj swojego usługodawcę, czy jest możliwość uzyskania informacji na temat virtio, pass-thru, cpu-pass, czy Twój RAM nie jest emulowany.
Cóż, na dzisiaj to wszystko. Mam nadzieję, że artykuł zachęci Cię do pozostania z nami do końca tej serii. W tym artykule poruszyliśmy tylko podstawy VPS i istniejącej oferty na rynku, ale następne odcinki poprowadzą nas przez meandry całej technologii, wraz z mapowaniem tego na istniejące oferty. Zachęcamy do lektury kolejnych części, no i… liczymy na interakcję w komentarzach! J
Servizza Team, przy wsparciu Stefana
No jest tak jak piszecie 🙂 Często hosting w założeniu DEDYK jest VPSem ;/ Trzeba niestety szukać kruczków i limitów które muszą zawsze wystąpić. Czytać jedynie regulaminy a nie bełkot marketingowy 😛
Dziękujemy za komentarz 🙂
Pozdrawiam, Jacek – Servizza Team