Wie funktioniert die (Amazon) Cloud?

lockdoc

Well-Known Member
Hi,

mich interessiert ja brennend wie Amazon es schafft die ressourcen speziell die cpu power virtuell zu verteilen. Im Internet konnte ich nichts bis gar nichts dazu finden.

Vor allem interessiert mich, ob es moeglich ist (bei amazon oder anderen), dass sie die cpu power von verschiedenen computern virtualisieren, in einen pool packen und dann dynamisch sharen zu koennen.

Hat da Jemand irgendne Info?
 
Na irgendwie ist mir dieser ganze Cloud Begriff nicht so einleuchtend.

Angenommen die haben 10 XEN Server mit 12 Cores und jeder XEN kann jeweils 5 virtuelle Maschinen sperat hosten, welche wiederrum 2 Cores nutzt, welche man mieten kann. Jede virtuelle Maschine hat also klar definierte Ressourcen die sie nutzen kann. Nennt man denn das schon cloud?

So wie meine Vorstellung war, nimmt man die 10 XEN Server verbindet sie irgendwie und virtualisiert RAM+CPU und auf dieser Ebene Laufen dann die Virtuellen Maschinen, so koennte man die Ressourcen besser aufteilen und es koennte nicht passieren, dass alle 10 XEN Server 2 freie CPU Cores haben und evtl. nur 90% CPU Power nutzen, sondern dass es dynamisch verteilt wird auf die machines, die grad was brauchen.

Die Frage ist halt ob dies geht und wenn ja wie
 
"Cloud" bedeutet eigentlich nur, dass es sich irgendwo im Internet befindet. Im Grunde nur ein Marketing-Begriff.

Wenn du dir einen Server im Internet kaufst/mietest, kannst du das auch schon als deine private "Cloud" bezeichnen.

Meistens versteht man darunter auch, dass man viele Daten darauf ablegen kann.

dass es dynamisch verteilt wird auf die machines, die grad was brauchen

Genau so läuft es ab (bzw. kann es ablaufen). Was willst du genau mit "wie" erfragen?
 
Also, wie gesagt ist Cloud ein Buzzword, was inzwischen für fast alles genutzt. Früher war es ein Browsergame, heute ist es ein "Full Cloud based Game". Daher fällt es schwer eine allgemeine Antwort auf die Frage zu finden. Aber grundsätzlich, auf sehr hoher theoretischer Ebene ist das Setup wie folgt:

1. Du hast ein sehr großes "Storage Area Network" (SAN). So ein SAN kann man sich mal simpel gesagt als eine sehr große Menge reiner Storageserver vorstellen, die bis unter die Decke mit Festplatten vollgestopft sind. Auf denen läuft jeweils ein Betriebssystem, über dieses ein Storage-Manager. Die Aufgabe des Storage-Managers ist es, den Speicherplatz zu virtualisieren. Du sagst deinen SAN also "Speichere diese Datei" und sie landet irgendwo darin, wird nach den Vorgaben dupliziert (zur Ausfallsicherheit) und automatisch im Backup gesichert. Nach außen sieht man von dem SAN dann lediglich Glasfaseranschlüsse.

2. Du hast eine Unmenge Cloudserver. Das sind normale Server, mit extrem hoher Packdichte an Prozessoren und an Arbeitsspeicher. Eigene Festplatten besitzen sie nicht. Jeder dieser Cloudserver ist per Glasfaser direkt oder über einen Switch mit dem SAN verbunden. Auf den einzelnen Servern läuft ein Hypervisor, meist in Form einer Software auf einem Kernel.

3. Es gibt einen Cloudmanager, der die Cloud verwaltet. Diese Software ist dazu da, einzelne Instanzen (eine VM) auf den jeweiligen Nodes (den Servern) zu starten und zu beenden. Was der Manager genau macht, ist sehr vom Anwendungszweck abhängig. Aber die grundlegenden Aufgaben sind immer gleich:
- So wenige Nodes wie möglich sollen laufen, d.h. die Nodes sollen eine möglichst hohe Auslastung erreichen. Dies spart unter dem Strich Energie. Daher werden Instanzen von wenig belasteten Nodes weg auf andere Nodes migriert. Es wird also Last umverteilt. Die dann freuen Nodes werden abgeschaltet.
- Es soll jede Instanz genügend Rechenleistung zur Verfügung haben. Wird also eine Node zu sehr ausgelastet, werden Instanzen auf weniger belastete Nodes migiriert. Stehen nicht mehr genügend Nodes zur Verfügung, werden neue gestartet.
-Zur Administration können einzelne Nodes bis hin zu ganzen Racks leergeräumt werden. Abgestürzte Nodes werden erkannt, hängende Instanzen ebenso.

Kurz gesagt ist die hier vorgestellte Cloud nichts anderes als eine elegante Anwendung von Live-Migration einzelner Instanzen zwischen Nodes. Da die Instanzen in dem SAN gespeichert sind und daher von jeder Node aus zugreifbar, ist diese Live-Migration innerhalb von Millisekunden und ohne nutzersichtbaren Ausfall möglich. Sprich du merkst gar nicht, wie deine Instanz migriert wird.

Beispiel: Du legst eine Amazon EC2 Instanz an. In diesem Moment wird ein Image erstellt und im SAN gespeichert. Dieses Image ist meist vorgefertigt, es ist also nur die Kopie einer Vorlage. Wenn du nun die Instanz startest, greift sich ein Hypervisor auf einer Node dieses Image und startet daraus eine virtuelle Maschine. Verlangst du nun mehr Rechenzeit, als die Node bietet, wird der Manager deine virtuelle Maschine ausfallfrei auf eine andere Node migrieren. Machst du nichts und die virtuelle Maschine ist idle, wird der Manager sie irgendwo parken.

EDIT: Eine solche Cloud hat als keinesfalls die Fähigkeit, die CPU-Power mehrerer Server zugleich bereitzustellen. Es erweckt nur den Eindruck, dass es so sei. Es gibt zwar Ansätze noch weiter zu abstrahieren und tatsächlich virtuelle Prozessoren aus mehreren einzelnen Maschinen zu erstellen, aber ob es schon jemand macht, weiß ich nicht.
 
Zurück
Oben