Was virtualisiert ZeroVM?


12

Ich habe ein paar Probleme damit, meinen Kopf um ZeroVM zu wickeln .

Angenommen, ich möchte Wordpress ausführen. Eine Möglichkeit besteht darin, einen gehosteten virtuellen Server zu leasen, auf dem VMWare, Virtualbox, Xen, CoreOS oder ähnliches ausgeführt wird. In diesem Fall werden der Server und seine Hardware virtualisiert. Sobald der virtuelle Server bereitgestellt ist, kann ich SSH-Verbindungen herstellen, Dienste starten und stoppen, den Computer neu starten usw.

Das, was ich online gelesen habe, besagt, dass ZeroVM die App virtualisiert, aber ich verstehe nicht, was das bedeutet. Stellt ZeroVM einen Container ähnlich wie Docker bereit ?

Fortsetzung mein Beispiel oben, wie würde ich ZeroVM verwenden Wordpress zu laufen? Welche Vorteile hätte dies?

Lassen Sie uns mein Wordpress-Beispiel auf eine gemeinsam genutzte Hosting-Umgebung ausweiten.

Auf der ZeroVM-Homepage heißt es:

Bei jeder Anforderung an eine ZeroVM-App oder Zapp wird eine unabhängige Instanz erstellt. Jede Instanz ist isoliert und sicher, dreht sich in weniger als 5 Millisekunden und wird nach Abschluss der Anforderung zerstört. Die Geschwindigkeit von ZeroVM hängt von jeder Instanz ab, die nur das virtualisiert, was zum Ausführen eines einzelnen Prozesses erforderlich ist.

Bedeutet dies, dass jede Anforderung an die ZeroVM-App einen neuen Prozess auslöst? Was passiert, wenn Sie mehr als eine ZeroVM-App auf einem Server ausführen? Wie würden Anfragen an die richtige App weitergeleitet?

Antworten:


9

Gute Frage! Ich arbeite im ZeroVM-Team und hoffe, dass ich bei der Klärung helfen kann!

Stellt ZeroVM einen Container ähnlich wie Docker bereit?

Nein nicht wirklich. Docker verwendet LXC und andere Kernel-Funktionen, um eine Sandbox-Umgebung bereitzustellen. ZeroVM läuft vollständig im Userspace und Sandboxen einer einzigen Anwendung.

Kurz gesagt, arbeitet ZeroVM , indem zunächst die Validierung der Anwendung einfach zu laufen und dann die Ausführung es. Bei der Ausführung wird die Anwendung im Grunde genommen ohne zusätzlichen Overhead ausgeführt - es steckt keine virtuelle Maschine dahinter.

Um eine Anwendung zu validieren, muss sie in eine spezielle Form von x86-Maschinencode übersetzt werden. Diese spezielle Form hat die nette Eigenschaft, dass sie statisch als "sicher" verifiziert werden kann. Unter "sicher" versteht man unter anderem, dass der Code nicht zu Adressen außerhalb eines bestimmten von ZeroVM bereitgestellten Speichersegments springt. Das Programm kann auch nicht die normalen Systemaufrufe aufrufen, sondern nur eine sehr enge Syscall-Schnittstelle, die von ZeroVM bereitgestellt wird. Diese Validierung stammt aus dem Native Client- Projekt von Google .

Wie würde ich ZeroVM verwenden, um Wordpress auszuführen? Welche Vorteile hätte dies?

Sie können das C-Programm, das der PHP-Interpreter ist, grundsätzlich crosskompilieren. ZeroVM könnte dann den PHP-Interpreter in der Sandbox starten und ihm die PHP-Dateien zuführen, aus denen WordPress besteht. ZeroVM bietet ein schreibgeschütztes In-Memory-Dateisystem, mit dem eine SQLite-Datenbank gelesen werden kann. Das würde dir eine schreibgeschützte WordPress-Seite geben - nicht besonders aufregend :-)

Aus meiner Sicht ist dies jedoch nicht der Hauptanwendungsfall für ZerovM. Bestehende datenbankintensive Anwendungen müssen für die Verwendung mit ZeroVM neu geschrieben werden. ZeroVM ist eher für massiv skalierbare Systeme gedacht, in denen Sie viele Datenelemente parallel verarbeiten möchten.

Stellen Sie sich vor, Sie haben 1.000.000 E-Mails, die Sie durchsuchen müssen. Die Mails werden in einem Blockspeicher wie OpenStack Swift oder Amazon S3 gespeichert . Dies bedeutet, dass die physischen Dateien auf einer Reihe von Speicherservern gespeichert sind. Normalerweise müssen Sie die gesamte E-Mail auf eine bestimmte Anzahl von Rechenknoten herunterziehen, um sie zu durchsuchen. Mit ZeroVM und seiner Integration in Swift können Sie den Code an die Daten senden . Dies ist möglich, weil der Code im Vergleich zu einem umfangreichen Image einer virtuellen Maschine klein ist (einige Megabyte) und weil es sicher ist, nicht vertrauenswürdigen Code in der ZeroVM-Sandbox auszuführen.

Daher ist ZeroVM für hochskalierbare Architekturen gedacht, bei denen jede Anforderung unterschiedliche Daten verarbeitet.

Für eine WordPress-Site könnte dies bedeuten, dass jeder Blog-Beitrag in einem separaten Datenelement gespeichert wird und für jeden Beitrag eine dedizierte ZeroVM-Instanz verantwortlich ist. Derzeit ist das Dateisystem schreibgeschützt. Es ist jedoch geplant, das Dateisystem schreibgeschützt zu machen, und die für einen bestimmten Blogeintrag verantwortliche ZeroVM-Instanz kann dann beispielsweise Kommentare verarbeiten. Sie benötigen einen Load-Balancer, der den Datenverkehr entsprechend weiterleitet. Das Ergebnis ist eine ganz andere Architektur als das aktuelle WordPress, aber skalierbarer. Die tatsächliche Umsetzung bleibt dem Leser derzeit als Übung überlassen.


4

Scheint die blutende Kante zu sein. Rackspace befasst sich mit LXC, weil es im Vergleich dazu "unsicher" ist, aber bis die Whitepapers zu diesem Thema auftauchen, werde ich mit Bestimmtheit urteilen.

  • Stellt ZeroVM einen Container ähnlich wie Docker bereit?

Aus: Info World "Einige offensichtliche Vergleiche zwischen ZeroVM und einem Projekt wie Docker sind möglich, aber die Absichten sind etwas anders. Bei Docker geht es um das Packen für die Bereitstellung in einer Vielzahl von Umgebungen. Bei ZeroVM geht es mehr darum, eine Möglichkeit für die Virtualisierung von Apps bereitzustellen auf eine einfache Art und Weise in einer gegebenen Umgebung, in der eine vollständige VM-Lösung überflüssig wäre und nicht wirklich benötigt wird. "

  • Wie würde ich ZeroVM verwenden, um Wordpress auszuführen?

Vermutlich müsste Apache für ZeroVM kompiliert werden. Ich bin mir nicht sicher, wie viel von der Wordpress-Codebasis unter solchen Bedingungen kaputt gehen wird.

  • Was sind die Vorteile?

Die Marketingabteilung von Rackspace wird dafür das beste Argument liefern: Hier

  • Vor welchen Herausforderungen stehe ich? (Zum Nutzen zukünftiger Leser hinzugefügt)

Die Software / Plattform ist auf dem neuesten Stand, so dass alle Versuche und Schwierigkeiten, die mit der Ausführung von Software auf dem neuesten Stand verbunden sind, zutreffen. (Einschließlich eines Mangels an einer großen Anwenderbasis für Support). Es ist auch eine neue " Plattform ". Softwareentwickler gewöhnen sich an den Umgang mit virtualisierten Plattformen ... aber dies ist eine völlig neue Generation von Virtualisierung über Hardware (VMWare. OracleVM, HyperV) und Kernel-Virtualisierung (OpenVZ) hinaus. Seien Sie nicht überrascht, wenn so früh im Spiel nichts wie erwartet funktioniert.


2

Wie würde ich ZeroVM verwenden, um Wordpress auszuführen? Welche Vorteile hätte dies?

ZeroVM ist im Wesentlichen eine Plattform zum Erstellen von PaaS. Daher hat die obige Frage in "ZeroVM world" wenig Bedeutung. Nehmen wir jedoch an, dass jemand die ZeroVM-Infrastruktur für Sie installiert hat (wird als "Provider" bezeichnet). Auf dieser Infrastruktur können Sie dann Ihr eigenes PaaS oder SaaS erstellen. Im Fall von WordPress: Provider können Sie jeden Code in der Infrastruktur des Providers ausführen. Sie können WordPress ausführen, wenn Ihr Code ausgeführt wird - Sie zahlen dafür. Wenn Ihr Code nicht ausgeführt wird, zahlen Sie nicht. Das heißt, wenn jemand eine WordPress-Seite öffnet, zahlen Sie für die Anfrage, nachdem die Antwort an den Benutzer gesendet wurde - Sie zahlen nichts mehr. Da jede ZeroVM-Instanz eine Anfrage bearbeitet, muss Ihre WordPress-Site im Wesentlichen nur eine Seite für einen Benutzer bereitstellen. Und dann würde ich argumentieren, dass Sie "WordPress" nicht wirklich brauchen, da WordPress im Moment eine PHP-Schnittstelle zur MySQL-Datenbank ist und Sie im Falle eines Benutzers und einer Anfrage keine zentrale Datenbank benötigen. Und so weiter.

Bedeutet dies, dass jede Anforderung an die ZeroVM-App einen neuen Prozess auslöst?

Ja und nein. Hängt davon ab, wie Sie es verwenden möchten. Wenn es sich bei jeder Anfrage um eine völlig andere App mit einer völlig anderen Codebasis handelt, benötigen Sie einen brandneuen Prozess. Handelt es sich bei jeder Anforderung jedoch um einen Aufruf an eine PHP- oder WSGI-Webanwendung, kann ZeroVM als "Daemon" fungieren, der Anforderungen viel schneller bedient, indem Setup-Zeit auf der Plattform gespart wird (Einrichten von Dateisystem + Python + wsgi beispielsweise bei einer WSGI-Anwendung) ).

Wie würden Anfragen an die richtige App weitergeleitet?

Derzeit ist die Infrastruktur in den Swift- Objektspeicher integriert . Die Anforderung eines Swift-Objekts löst die Ausführung eines bestimmten Codes aus. Oder POST an eine bestimmte URL löst die Ausführung der Nutzdaten der POST-Anforderung aus. Natürlich ist auch jede andere Art der Integration möglich, beispielsweise in einen Webserver oder eine verteilte Warteschlange.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.