e-Commerce w ChmurzeHandel

Wirtualizacja w chmurze



Wirtualizacja jest kluczowym czynnikiem umożliwiającym przetwarzanie w chmurze, ale nie jest częścią samej chmury. Jak wspomniano wcześniej, chmurę definiują następujące trzy atrybuty: elastyczny, na żądanie i mierzony. Wirtualizacja sama w sobie nie jest jednym z tych trzech atrybutów, ale pomaga włączyć wszystkie trzy. Wirtualizacja jest kluczowym czynnikiem umożliwiającym chmurę, ale to nie jest sama chmura. Wirtualizacja w różnych formach umożliwia:

Partycjonowanie

Dostawcy nie zarabiają żadnych pieniędzy, jeśli nie mogą spakować wielu swoich klientów na każdym fizycznym serwerze. Wielu dostawców oferuje zwirtualizowane serwery z zaledwie jednym fizycznym wątkiem sprzętowym. Zazwyczaj dwa fizyczne wątki na fizyczny rdzeń procesora, 12 rdzeni na procesor i dwa procesory na fizyczny host. To znaczy pojedynczą maszynę towarową można podzielić na 48 serwerów, z których każdy może być wynajęty osobie lub organizacji. Gęstość to sposób zarabiania pieniędzy przez dostawców.

Izolacja

Biorąc pod uwagę, że do działania modeli biznesowych wymagany jest sprzęt do partycjonowania, wymagana jest izolacja, aby poszczególne partycje nie kolidowały ze sobą. Nie chcesz, aby obciążenie procesora, takie jak sekwencjonowanie DNA, zakłócało zdolność serwera aplikacji do reagowania na żądania HTTP. Możesz udostępnić całe serwery od dowolnego dostawcy infrastruktury jako usługi, tak jak zabezpieczyłbyś ułamkowe fragmenty fizycznych serwerów.

Ruchliwość

Wirtualizacja ma narzędzia, które ułatwiają robienie migawek działających systemów. Te migawki, jak omawialiśmy w poprzednim rozdziale, mogą być wykorzystane jako punkt początkowy podczas udostępniania nowego sprzętu. W tych migawkach wszystko jest w pełni zamknięte, dzięki czemu są w pełni przenośne na innych serwerach w chmurze, a nawet w chmurach.

Przesunięcie obciążenia

Ponieważ wirtualizacja służy jako warstwa abstrakcji nad sprzętem, niektórzy dostawcy usług w chmurze oferują możliwość przenoszenia działających maszyn wirtualnych na żywo z jednego hosta fizycznego na inny. Czasami Twój dostawca usług w chmurze robi to nawet automatycznie podczas wykonywania czynności konserwacyjnych lub gdy niektóre urządzenia mają awarie sortować. Izolacja i przenośność najbardziej przynoszą korzyści w handlu elektronicznym. Izolowanie obciążeń na współdzielonym sprzęcie jest koniecznością, biorąc pod uwagę wrażliwy charakter danych związanych z e-commerce. Przenośność jest kluczowym czynnikiem umożliwiającym bardzo szybkie budowanie jednostek wdrażania, ponieważ możesz pracować z wstępnie opracowanymi migawkami zamiast budowania każdego systemu od zera. Wirtualizacja ma swoje zalety, ale ma także wady, które mają szeroki wpływ na architekturę wdrażania. Przyjrzyjmy się różnym formom wirtualizacji i implikacje każdego z nich.

Co to jest wirtualizacja?

Wirtualizacja jest bardziej koncepcją niż faktyczną implementacją dowolnej technologii. Wirtualizacja oferuje możliwość partycjonowania serwera fizycznego na wiele mniejszych serwerów, przy czym każdy serwer wirtualny jest izolowany od innych serwerów wirtualnych na tym samym serwerze fizycznym. Technologia stojąca za wirtualizacją istnieje od samego początku dni mainframe. U jej podstaw jest zazwyczaj warstwa abstrakcji zwana hiperwizorem, która jest odpowiedzialna za podział zasobów systemu i udostępnianie ich gościom. Istnieją trzy szerokie podejścia do wirtualizacji, które omówimy w poniższych sekcjach.

Pełna wirtualizacja

W pełnej wirtualizacji hiperwizor jest instalowany bezpośrednio na goły metal. Hiperwizor przydziela zasoby fizyczne serwera (procesor, pamięć, dysk, karta sieciowa) zwirtualizowanym serwerom. Systemy operacyjne są instalowane bezpośrednio na serwerach wirtualnych, przy czym zasoby fizyczne przydzielone każdemu serwerowi wirtualnemu są jedynymi zasobami, do których ma dostęp każdy serwer wirtualny. Zaletą tego podejścia jest to, że nie trzeba wprowadzać żadnych zmian w systemie operacyjnym. Możesz zainstalować dowolny system operacyjny, który obsługuje podstawowy sprzęt i nie musisz wprowadzać żadnych zmian. Każdy system operacyjny jest całkowicie nieświadomy innych systemów operacyjnych na tym samym serwerze fizycznym. Ten rodzaj hiperwizora dobrze nadaje się do publicznych chmur infrastruktury jako usługi. Przykłady pełnej wirtualizacji to Xen Hardware Virtual Machine, Linux KVM i Microsoft Hyper-V. Pełna wirtualizacja jest najlepsza, gdy trzeba obsługiwać wiele różnych systemów operacyjnych, zwłaszcza tych, które nie obsługują ograniczonej formy wirtualizacji znanej jako parawirtualizacja. Większość chmur obsługuje zarówno pełną wirtualizację, jak i parawirtualizację. Pełna wirtualizacja ulega pogorszeniu, ponieważ wszystkie zasoby fizyczne muszą być dostępne za pośrednictwem hiperwizora. Wydajność pełnej wirtualizacji zaczyna się poprawiać dzięki zastosowaniu sprzętowych rozszerzeń maszyny wirtualnej (HVM) do procesorów x86, które ułatwiają systemowi-gościowi ominięcie hiperwizora i bezpośrednie użycie procesora. Ale parawirtualizacja idzie o krok dalej i umożliwia bardziej natywny dostęp do wielu zasobów.

Parawirtualizacja (wirtualizacja wspomagana przez system operacyjny)

Tradycyjna pełna wirtualizacja wymaga, aby każde wywołanie systemowe było wychwytywane przez hiperwizora i przekazywane z powrotem do hosta fizycznego. W zależności od obciążenia wydajność może być znacznie niższa niż w przypadku, gdy system operacyjny nie działał na hiperwizorze. W _paravirtualization, jądro współpracuje z hiperwizorem, aby przekazywać określone wywołania bezpośrednio do podstawowego sprzętu. Połączenia takie jak te dotyczące zarządzania pamięcią, utrzymywania czasu i obsługi przerwań są często przekazywane bezpośrednio z gościa do hosta. Chociaż pojęcie parawirtualizacji może być nowe dla wielu czytelników, koncepcje, a nawet duża część technologii są używane od dziesięcioleci. Prawie wszystkie systemy operacyjne w jakiś sposób omijają hiperwizora. Parawirtualizacja wymaga znacznej modyfikacji jądra, aby mógł współpracować z hiperwizorem. Większość współczesnych jąder Linuksa, wraz z niektórymi jądrami Uniksa, obsługuje parawirtualizację, więc prawdopodobnie nigdy nie będziesz musiał wykonywać żadnej z tych prac samodzielnie. Parawirtualizacja jest świetna, ponieważ uzyskuje się izolację zapewnianą przez pełną wirtualizację sprzętową, a jednocześnie uzyskuje się prawie wydajność wirtualizacji na poziomie systemu operacyjnego. Tak długo, jak obsługują ją twoi dostawcy infrastruktury i dostawcy jądra, parawirtualizacja jest najlepszym rozwiązaniem. Ponoszą koszty związane ze współpracą jądra i hiperwizora, a Ty czerpiesz korzyści z lepszej wydajności niż pełna wirtualizacja bez prawie żadnych kosztów ogólnych. Typowe implementacje obejmują Xen i VMware. Parawirtualizacja jest obecnie najbardziej rozpowszechnioną opcją wirtualizacji oferowaną przez publicznych dostawców infrastruktury jako usługi.

Wirtualizacja systemu operacyjnego

Podczas wirtualizacji systemu operacyjnego bardzo lekki hiperwizor jest instalowany w samym systemie operacyjnym. Przy takim podejściu systemy operacyjne gościa współużytkują jądro nadrzędnego systemu operacyjnego. Jądro oferuje każdemu systemowi-gościowi własną piaskownicę w klatkach, aby procesy nie mogły ze sobą kolidować. Niektóre formy wirtualizacji systemu operacyjnego oferują ograniczanie zasobów, więc dany gość nie może zużywać więcej niż określoną ilość zasobów systemowych. To podejście jest całkowicie zależne od obsługiwanego systemu operacyjnego. Ta technologia istnieje od czasów komputerów mainframe i jest nadal używana. Dzisiejsze dobrze znane inkarnacje obejmują JBS FreeBSD, kontenery / strefy Solaris i kontenery Linux (LXC).

Kontenery Linux (LXC), wyjaśnione

Pomyśl o każdym procesie na maszynie jak o pięciolatku. Jeśli masz ich kilka, w końcu zaczną walczyć. Widziałeś kiedyś walkę pięciolatków? To jest głupie:
"Stoi blisko mnie, a mi się to nie podoba!"
"Nie chcę, żeby hałasowała!"

W kontekście procesu w systemie Linux możesz myśleć o tym jako o dwóch procesach serwerowych, z których oba chcą słuchać na tym samym porcie lub zapisują plik konfiguracyjny w tym samym miejscu. I oto jesteś, myśląc: "Dorośnij i dziel się. Jeśli nie możesz sobie z tym poradzić, poczekaj do pierwszej interakcji z DMV ". Ale nigdy się nie udostępnią, ponieważ mają pięć lat. Będą narzekać na siebie do tego stopnia, że musisz je fizycznie oddzielić, aby zachować własne zdrowie psychiczne. Jednym ze sposobów fizycznego oddzielenia tuzina pięciolatków jest zbudowanie tuzina domów i nadanie im każdego domu. To jest jak uruchamianie osobnej fizycznej maszyny dla każdego procesu. Tak, rozwiązuje problem, ale jest drogi i marnuje zasoby. Następnie wypróbuj maszynę wirtualną na jednym hoście fizycznym. Jeśli mówimy o oddzieleniu pięciolatków, to jest to jak zamiana jednego domu na kilka mieszkań, po jednym dla każdego pięciolatka. Pozwala to na maksymalną konfigurowalność. Każdy pięciolatek może ustawić termostat na dowolną wygodną temperaturę. Pewnie, nie mieliby tyle miejsca, ile mieliby, gdyby mieli cały dom, ale przynajmniej są zamknięci. Nie znają się nawzajem, ale ogólnie są szczęśliwi. Ale jeśli jesteś mamą i tatą, to jest po prostu głupie. Czy naprawdę potrzebujesz jednej oddzielnej kuchni dla każdego pięciolatka? Nie, to przesada. Wystarczy jedna kuchnia. Czy pięciolatki naprawdę muszą ustawić termostat tak, jak im się podoba? Nie, mają pięć lat. Ponadto jestem rodzicem, płacę rachunki za ogrzewanie, a termostat nie przechodzi przez 57 stopni przez całą zimę. Więc jakie jest rozwiązanie? Dajesz każdemu dziecku magiczną parę okularów, które pozwalają mu widzieć wszystko oprócz siebie. Wszyscy chodzą po domu, świadomi tylko swojego istnienia. Ach, ale co, jeśli oboje chcą bawić się tą samą zabawką? Proste, kup tę samą zabawkę dla każdego dziecka. O wiele łatwiej niż budowanie domu dla każdego dziecka. W rzeczywistości będą się kłócić tylko o bardzo małą liczbę rzeczy w domu, więc możesz je powtórzyć, a pięciolatki nie będą mądrzejsze. Taki właśnie jest LXC. Pozwala procesom myśleć, że mają pełną kontrolę nad maszyną, ale bardzo lekki hiperwizor utrzymuje je oddzielnie. Wszyscy nadal działają w tym samym jądrze, ale nie wiedzą o tym. Kontener LXC to zbiór plików reprezentujących minimalny zestaw "zabawek", o które procesy mogą walczyć. Jest jednak trochę bardziej zaawansowany. Możesz na przykład uruchomić kontener Red Hat LXC w jądrze Ubuntu. Dopóki twoje procesy nie mają wyraźnych oczekiwań co do jądra, nic ci nie jest. Przez większość czasu procesy nie mają takich oczekiwań. To podejście staje się coraz bardziej popularne ze względu na wydajność, jaką oferuje w stosunku do uruchamiania systemu operacyjnego natywnie na sprzęcie fizycznym, zapewniając jednocześnie wystarczającą izolację między najemcami. Dzięki wirtualizacji systemu operacyjnego masz pełny natywny dostęp do procesora, pamięci, dysku, karty sieciowej itd., Ponieważ polegasz na współużytkowanym jądrze, które samo ma natywny dostęp do zasobów fizycznych. Przy pełnej wirtualizacji musisz przejść przez jądro gościa, a następnie przez hypervisor, zanim uzyskasz dostęp do jakichkolwiek zasobów fizycznych. Potencjalnie istnieje duży narzut, gdy każda operacja musi przejść przez hiperwizor. Dzięki wirtualizacji systemu operacyjnego, w zależności od tego, jak go skonfigurujesz, możesz pozwolić gościom na wspólne współużytkowanie zasobów, co pozwoli na większą gęstość. Dostawcy platformy jako usługi skorzystali z wirtualizacji systemu operacyjnego, ponieważ nie muszą obsługiwać szerokiej gamy systemów operacyjnych. Ci dostawcy zwykle wybierają jeden system operacyjny i standaryzują go. Możesz spakować wielu gości na jednym fizycznym hoście, ponieważ obciążenie każdego gościa jest tak małe. Wydajność jest również znacznie lepsza niż w przypadku niektórych cięższych technik wirtualizacji, jednocześnie umożliwiając różne poziomy izolacji między gośćmi.

Podsumowanie podejść do wirtualizacji

Wirtualizacja różnych form będzie nadal wykorzystywana przez dostawców chmury w dającej się przewidzieć przyszłości. Dostawcy muszą mieć możliwość spakowania wielu gości na jednym fizycznym hoście, aby ich model biznesowy działał. Jednocześnie użytkownicy chmury muszą mieć izolację między swoimi obciążeniami a innymi obciążeniami działającymi na tym samym hoście fizycznym. Trend ten nie jest w pełni izolowany, w którym wszystko jest zwirtualizowane, do lżejszych rozwiązań, takich jak parawirtualizacja, która jest obecnie standardem dla większości dostawców infrastruktury jako usługi. Parawirtualizacja to doskonały kompromis między pełną wirtualizacją sprzętową a wirtualizacją systemu operacyjnego. Jest również obsługiwany przez większość jąder Linuksa, więc teraz jest dość łatwy do wdrożenia. Większość dostawców oferuje dwa lub trzy rozwiązania wirtualizacyjne, więc możesz wybrać, który z nich będzie dla Ciebie najlepszy. Musisz zbadać implementację każdego z tych podejść przez swojego dostawcę, aby dowiedzieć się dokładnie, co na przykład oznacza parawirtualizacja dla twojego dostawcy.

Poprawa wydajności oprogramowania wykonywanego na hiperwizorze

Różnica między trzema podejściami wysokiego poziomu sprowadza się do tego, do ilu zasobów należy uzyskać dostęp za pośrednictwem hiperwizora. Przy pełnej wirtualizacji wszystko musi być dostępne za pośrednictwem hiperwizora. Dzięki wirtualizacji systemu operacyjnego hiperwizor nic nie przechodzi. Pełna wirtualizacja i parawirtualizacja prawdopodobnie ucierpią z powodu pewnego spadku wydajności, ponieważ dostęp do niektórych zasobów fizycznych musi przejść przez hiperwizor. To zawsze zajmie więcej czasu niż natywny dostęp do tych zasobów. Jak omówiliśmy w części 3, największą przeszkodą dla wydajności po stronie serwera jest liczba połączeń do zdalnych systemów. Coraz częściej wzywamy wiele zdalnych systemów do złożenia jednej strony. Rysunek pokazuje systemy, do których większość stron koszyka musi zadzwonić, zanim będą mogły zostać zrenderowane. Prawdopodobnie do każdego z tych zdalnych systemów zostanie wysłanych wiele połączeń, przy czym każde połączenie będzie synchroniczne. Jak omówiliśmy w części 3, każde wywołanie do strony trzeciej wymaga, aby potencjalnie dziesiątki lub setki pakietów reprezentujących żądanie HTTP i odpowiedź HTTP przemieszczały się ścieżką. Jedna strona może wymagać 50 takich połączeń synchronicznych. Rzeczywisty problem z wydajnością nie pochodzi z czasu, w którym każdy system reaguje na te połączenia, ale ogólnie z ogólnego obciążenia związanego z przechodzeniem tam i z powrotem. Problemy z wydajnością w e-commerce prawie zawsze wynikają z wykonywania zbyt wielu połączeń, a nie z czasu odpowiedzi każdego połączenia. Koszty ogólne występują w dwóch postaciach:

•  Opóźnienie sieciowe
•  Opóźnienia występujące na każdym serwerze fizycznym

Wirtualizacja jest w dużej mierze odpowiedzialna za opóźnienia na każdym serwerze. Przemieszczanie stosów TCP / IP w każdym systemie operacyjnym gościa okazuje się znacznie wolniejsze, jeśli system operacyjny gościa musi przejść przez hiperwizor, aby uzyskać dostęp do procesora, pamięci i karty sieciowej. Najlepiej ominąć hiperwizora tak długo, jak to możliwe, pod warunkiem, że istnieje wystarczająca separacja między serwerami wirtualnymi. Jeśli z jakiegoś powodu musisz użyć pełnego hiperwizora, spróbuj ominąć go w celu obsługi żądań HTTP za pomocą technik takich jak wirtualizacja we / wy z jednym rootem (SR-IOV). SR-IOV, który jest obecnie obsługiwany przez wielu dostawców usług w chmurze, umożliwia wyświetlanie karty sieciowej na wirtualnych serwerach-gościach, jakby to było urządzenie fizyczne. Wszelkie połączenia z serwera wirtualnego do karty sieciowej całkowicie omijają hiperwizora.