CloudStack besteht aus sechs Schlüsselbausteinen. Da wären auf der obersten Ebene die Regionen, die ungefähr den AWS-Regionen entsprechen. Sie sind das erste und größte Bauelement von CloudStack.
Jede Region besteht aus einer oder mehreren Verfügbarkeitszonen, dem zweitgrößten Element. Typischerweise entspricht eine solche Zone einem Rechenzentrum. Jede Zone enthält Pods, Cluster, Hosts und Storage.
Pods, die drittgrößte Einheit, entsprechen oft einem Rack mit Netzwerk-, Rechen- und Speicherkomponenten. Pods haben logische wie physische Eigenschaften, beispielsweise eine IP-Adresse. Die Verteilung der VMs wird durch Pods beeinflusst.
Die viertgrößte Einheit sind die Cluster. Sie fassen homogene Rechner und Primary Storage zu Gruppen zusammen. Pro Cluster läuft nur ein bestimmter Hypervisor – aber in einer Zone können alle unterstützten Hypervisor versammelt sein.
Hosts finden sich auf der fünften Ebene, sie bilden den eigentlichen Rechen-Layer, auf dem die virtuellen Maschinen laufen.
Der letzte Baustein ist schließlich der Storage. Er kommt in zwei Ausprägungen vor, als Primary und Secondary Storage. Den Primary Storage verwenden die virtuellen Maschinen. Dabei kann es sich um lokalen oder Shared Storage handeln (NFS, iSCSI, Fibre Channel und so weiter).
Der Secondary Storage nimmt die Virtual Machine Templates, ISO-Images und Snapshots auf und wird derzeit immer mit NFS realisiert. Swift kann verwendet werden, um Secondary Storage zwischen Zonen zu replizieren, sodass User auch bei Ausfall einer Zone immer noch Zugriff auf die Snapshots haben. Im Moment wird an ziemlich vielen neuen Storage-Features entwickelt, die dann in eines der nächsten Releases Einzug halten werden.
Das Verbindungsglied zwischen all den Bauelementen ist der Netzwerk-Layer. CloudStack kennt zwei Netzwerkmodelle: Basic und Advanced.
Basic Networking entspricht dem Modell, das AWS benutzt, und kann auf drei Arten eingesetzt werden, wobei jede ein paar weitere Features zum Vorgänger hinzufügt:
Alle drei Ausprägungen des Basic-Netzwerkmodells erlauben eine massive Skalierung, solange der von den VMs genutzte IP-Adressbereich sich innerhalb eines Pods befindet. Zonen skalieren horizontal durch Hinzufügen weiterer Pods, die ihrerseits aus Clustern und Hosts bestehen samt den dazugehörigen Netzwerk- und Primary-Storage-Ressourcen.