Co wirtualizuje ZeroVM?

12

Mam problem z owinięciem głowy wokół ZeroVM .

Powiedzmy, że chcę uruchomić Wordpress. Jedną z opcji jest dzierżawa hostowanego serwera wirtualnego z VMWare, Virtualbox, Xen, CoreOS lub czymś podobnym. W takim przypadku wirtualizowany jest serwer i jego sprzęt. Po udostępnieniu serwera wirtualnego mogę do niego SSH, uruchamiać i zatrzymywać usługi, ponownie uruchamiać maszynę itp.

Z rzeczy, które przeczytałem online, wynika, że ​​ZeroVM wirtualizuje aplikację, ale nie rozumiem, co to znaczy. Czy ZeroVM zapewnia kontener podobny do Dockera ?

Kontynuując mój powyższy przykład, jak korzystać z ZeroVM do uruchamiania Wordpress? Jakie korzyści to zapewni?

Rozszerzmy mój przykład Wordpress na współdzielone środowisko hostingowe.

Strona główna ZeroVM mówi:

Każde żądanie do aplikacji ZeroVM lub zapp powoduje pojawienie się niezależnej instancji. Każda instancja jest izolowana i bezpieczna, rozwija się w mniej niż 5 milisekund i jest niszczona po zakończeniu żądania. Szybkość ZeroVM wynika z wirtualizacji każdego wystąpienia tylko tego, co jest wymagane do uruchomienia pojedynczego procesu.

Czy to oznacza, że ​​każde żądanie do aplikacji ZeroVM powoduje pojawienie się nowego procesu? Co się stanie, jeśli na serwerze działa więcej niż jedna aplikacja ZeroVM? W jaki sposób żądania byłyby kierowane do właściwej aplikacji?

odwaga
źródło

Odpowiedzi:

9

Dobre pytanie! Pracuję w zespole ZeroVM i mam nadzieję, że mogę pomóc wyjaśnić sprawę!

Czy ZeroVM zapewnia kontener podobny do Dockera?

Nie, nie bardzo. Docker używa LXC i innych funkcji jądra w celu zapewnienia środowiska piaskownicy. ZeroVM działa całkowicie w przestrzeni użytkownika i izoluje pojedynczą aplikację.

W skrócie, ZeroVM działa najpierw poprzez sprawdzenie poprawności aplikacji do uruchomienia, a następnie po prostu jej wykonanie. Po uruchomieniu aplikacja działa w zasadzie bez dodatkowego obciążenia - za nią nie ma maszyny wirtualnej.

Aby sprawdzić poprawność aplikacji, należy ją skompilować krzyżowo w specjalnej formie kodu maszynowego x86. Ta specjalna forma ma fajną właściwość, którą można zweryfikować statycznie jako „bezpieczną”. Między innymi „bezpieczny” oznacza, że ​​kod nie przeskakuje na adresy poza określonym segmentem pamięci dostarczanym przez ZeroVM. Program nie może również wywoływać normalnych wywołań systemowych, może jedynie wywoływać bardzo wąski interfejs syscall zapewniany przez ZeroVM. Ta walidacja pochodzi z projektu klienta natywnego Google .

Jak korzystać z ZeroVM do uruchamiania Wordpress? Jakie korzyści to zapewni?

Zasadniczo można kompilować krzyżowo program C, którym jest interpreter PHP. ZeroVM mógłby wtedy uruchomić interpreter PHP w piaskownicy i nakarmić go plikami PHP, które tworzą WordPress. ZeroVM zapewnia system plików tylko do odczytu w pamięci, który można wykorzystać do odczytu bazy danych SQLite. To dałoby ci stronę WordPress tylko do odczytu - niezbyt ekscytującą :-)

Jednak, jak widzę, nie jest to główny przypadek użycia ZerovM. Istniejące aplikacje obciążające bazę danych muszą zostać przepisane, aby można je było używać z ZeroVM. ZeroVM jest bardziej przeznaczony do systemów o dużej skalowalności, w których chcesz przetwarzać wiele elementów danych równolegle.

Wyobraź sobie, że masz 1 000 000 wiadomości e-mail, które musisz przeszukać. Wiadomości e-mail są przechowywane w magazynie blokowym, takim jak OpenStack Swift lub Amazon S3 . Oznacza to, że pliki fizyczne są przechowywane na pewnej liczbie serwerów pamięci. Tradycyjnie, aby przeszukać całą pocztę, trzeba pobrać całą pocztę do pewnej liczby węzłów obliczeniowych. Dzięki ZeroVM i jego integracji z Swift możesz wysłać kod do danych . Jest to możliwe, ponieważ kod jest mały (niektóre megabajty) w porównaniu do nieporęcznego obrazu maszyny wirtualnej, a także dlatego, że można bezpiecznie wykonywać niezaufany kod w piaskownicy ZeroVM.

Dlatego ZeroVM jest przeznaczony dla wysoce skalowalnych architektur, w których każde żądanie działa na różnych fragmentach danych.

W przypadku witryny WordPress może to oznaczać, że każdy post na blogu należy przechowywać w osobnej części danych i mieć dedykowaną instancję ZeroVM odpowiedzialną za każdy post. Obecnie system plików jest tylko do odczytu, ale planuje się, aby był on do odczytu i zapisu, a instancja ZeroVM odpowiedzialna za dany post na blogu mogłaby wówczas obsługiwać takie komentarze jak komentarze. Potrzebny byłby moduł równoważenia obciążenia z przodu, który byłby w stanie odpowiednio kierować ruchem. Rezultatem jest zupełnie inna architektura niż obecny WordPress, ale bardziej skalowalna. Właściwie wdrożenie tego jest obecnie zadaniem czytelnika.

Martin Geisler
źródło
4

Wydaje się być krwawiącą krawędzią. Rackspace robi kopanie w LXC za to, że jest „niepewny” w porównaniu, ale dopóki nie pojawią się oficjalne dokumenty na ten temat, będę się utrzymywał.

  • Czy ZeroVM zapewnia kontener podobny do Dockera?

From: Info World „Możliwe są pewne oczywiste porównania między ZeroVM a projektem takim jak Docker, ale intencje są nieco inne. Docker polega na pakowaniu do wdrożenia w różnych środowiskach. ZeroVM polega bardziej na zapewnieniu sposobu wirtualizacji aplikacji w lekki sposób w danym środowisku, w którym pełne rozwiązanie maszyny wirtualnej byłoby nadmierne i tak naprawdę nie potrzebne ”.

  • Jak korzystać z ZeroVM do uruchamiania Wordpress?

Przypuszczalnie potrzebujesz kompilacji Apache dla ZeroVM. Nie jestem pewien, ile części kodu Wordpress ulegnie zniszczeniu w takich warunkach.

  • Jakie są korzyści?

Dział marketingu Rackspace najlepiej to zrobi: tutaj

  • Z jakimi wyzwaniami się zmierzę? (Dodano na korzyść przyszłych czytelników)

Oprogramowanie / platforma jest najnowocześniejsza, dlatego obowiązują wszystkie próby i trudności związane z uruchomieniem najnowocześniejszego oprogramowania. (W tym brak dużej bazy użytkowników do wsparcia). Jest to także nowa „ platforma. Twórcy oprogramowania przyzwyczajają się do pracy z platformami zwirtualizowanymi ... ale jest to zupełnie nowy rodzaj wirtualizacji ponad sprzętem (VMWare. OracleVM, HyperV) i wirtualizacją jądra (OpenVZ) .. Nie zdziw się, jeśli na początku gry nic nie działa zgodnie z oczekiwaniami.

Daniel Widrick
źródło
2

Kontynuując mój powyższy przykład, jak korzystać z ZeroVM do uruchamiania Wordpress? Jakie korzyści to zapewni?

ZeroVM jest zasadniczo platformą do budowania PaaS. Dlatego powyższe pytanie ma niewielkie znaczenie w „świecie ZeroVM”. Załóżmy jednak, że ktoś zainstalował dla ciebie infrastrukturę ZeroVM (nazwie to „Provider”). Następnie możesz stworzyć własny PaaS lub SaaS na tej infrastrukturze. W przypadku WordPress: Provider daje ci możliwość uruchomienia dowolnego kodu w infrastrukturze Provider, możesz uruchomić WordPress, kiedy twój kod jest uruchomiony - za to płacisz. Gdy kod nie działa - nie płacisz. To znaczy, gdy ktoś otworzy stronę Wordpress, zapłacisz za żądanie, po wysłaniu odpowiedzi do użytkownika - przestajesz płacić. Co więcej, ponieważ każda instancja ZeroVM będzie obsługiwać jedno żądanie, witryna WordPress zasadniczo musi obsługiwać tylko jedną stronę dla jednego użytkownika. A potem argumentowałbym, że tak naprawdę nie potrzebujesz „WordPress”, ponieważ WordPress jest teraz interfejsem PHP do bazy danych MySQL, aw przypadku jednego użytkownika i jednego żądania nie potrzebujesz żadnej scentralizowanej bazy danych. I tak dalej.

Czy to oznacza, że ​​każde żądanie do aplikacji ZeroVM powoduje pojawienie się nowego procesu?

Tak i nie. Zależy, jak chcesz go używać. Jeśli każde żądanie jest zupełnie inną aplikacją z zupełnie inną bazą kodu - wtedy tak, będziesz potrzebować zupełnie nowego procesu. Ale jeśli każde żądanie jest wywołaniem aplikacji internetowej PHP lub WSGI, ZeroVM może działać jako „demon” obsługujący żądania znacznie szybciej, oszczędzając czas instalacji platformy (na przykład konfigurując system plików + python + wsgi w przypadku aplikacji WSGI ).

W jaki sposób żądania byłyby kierowane do właściwej aplikacji?

Obecnie infrastruktura jest zintegrowana z magazynem obiektów Swift . Żądanie obiektu Swift spowoduje uruchomienie określonego fragmentu kodu. Lub POST do określonego adresu URL uruchomi wykonanie ładunku żądania POST. Oczywiście możliwy jest każdy inny rodzaj integracji, na przykład do serwera WWW lub kolejki rozproszonej.

użytkownik64204
źródło