Intro to Cloudstack


Published on

Introduction to Cloudstack terminology, features and architecture.

Published in: Technology, Business
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Intro to Cloudstack

  1. 1. Intro to Cloudstack Sebastien GoasguenJuly 10th, Ecole des Mines de Nantes, France
  2. 2. Info• Apache incubator project•• #cloudstack on• @cloudstack on Twitter• Welcoming contributions and feedback, Join the fun !
  3. 3. A Very Flexible IaaS PlatformCompute HypervisorStorage Block & Object Primary Storage Secondary StorageNetwork Network & Network Services
  4. 4. Terminology Zone: Availability zone, aka Regions. Could be worldwide. Different data centers Pods: Racks or aisles in a data center Clusters: Group of machines with a common type of Hypervisor Host: A Single server Primary Storage: Shared storage across a cluster Secondary Storage: Shared storage in a single Zone
  5. 5. Storage• Primary Storage: – Anything that can be mounted on the node of a cluster. – Cluster LVM…iSCSI… – Holds disk images of running VMs• Secondary Storage: – Available across the zone – Holds snapshots and templates (image repo) – Can use Openstack swift or any object store (Gluster FS…)• Can use NFS for both to start
  6. 6. Physical Network Operations Users Admin and Cloud API CloudStack Mgmt Server Cluster Router MySQL Load Balancer Availability Zone L3 Core Switch Access LayerSwitches … Secondary Servers Storage … … … … Pod 1 Pod 2 Pod 3 Pod NSlide from Chiradeep Vittal,
  7. 7. Cloud Interactions OVM Cluster Primary Storage Ap i Xen vcenter Monitoring Primary CS API Clu I ste AP vSphere Cluster Storage r rM nte End gm vCe t User UI Primary XS Cluster Storage Admin UI Clustered CloudStack XAPI Domain CS Admin & CloudStack CloudStack End-user API Primary Admin UI Management JSON KVM Cluster Storage Server NetConf Juniper SRXCloud user Nitro API{API client (Fog/etc)} VNC JSON ec2 API JSON Netscaler Cloud user Console Console {ec2 API client } Proxy VM Proxy VM NFS MySQL Server Sec. Storage NFS NFS {Proxied} SSH Sec. Storage VM Ajax HTTPS VM Console Router VM HTTP (Template Download) Router VM HTTP (Template Copy) Router VM Cloud user HTTP (Swift)
  8. 8. Inside a Management Server • Tomcat application • Async jobs, ESB, REST API Plugins cmd.execute() PluginsCloudStack Commands Async Plugins API API Job Ser Queu Serv vlet e ices Kernel Responses Mgr API Agent Mess Resource API age (Cmds) Local s Bus Or Remote Agent Manager Hypervisor Network Native Device APIs API MySQL
  9. 9. Layer-2 Guest Virtual Network CS Virtual Router provides Network Services External Devices provide Network Services Network Hardware exposing API can be controlled Guest Virtual Network Guest Virtual Network VLAN 100 VLAN 100Public PublicNetwork/Inter Network/Internet Guest net Guest Public IP Private IP VM 1 VM 1 Gateway JuniperPublic IP 1 SRX address65.37.141.11 CS Firewall Guest Guest Virtual VM 2 VM 2 Router Public IP Private IP DHCP, DNS 65.37.141. NetScaler NAT Guest 112 Load Guest Load Balancing VM 3 Blancer VM 3 VPN Guest Guest VM 4 VM 4 CS DHCP, Virtual Router DNSSlide from Chiradeep Vittal,
  10. 10. Other TopologiesNo services [Static Ips] Dedicated VLAN with DHCP and DNS User can request specific IP[s] for NIC Guest Virtual Network Guest Virtual Network VLAN 100 VLAN 100 Guest Guest VM 1 VM 1 Gateway address Guest Guest VM 2 Gateway VM 2 address Guest Guest Core switch VM 3 VM 3 Guest Core switch Guest VM 4 VM 4 DHCP, CS DNS Virtual Router User-dataSlide from Chiradeep Vittal,
  11. 11. A customizable GUI izing_the_CloudStack_UI
  12. 12. A very extensive API _Admin.html
  13. 13. Making API callsCan be authenticated or not.HTTP call.User Keys can be generated via the GUIBase url: http://<manager-host>:8080/client/api?….def make_request(requests, secretKey): request = zip(requests.keys(), requests.values()) request.sort(key=lambda x: str.lower(x[0])) requestUrl = "&".join(["=".join([r[0], urllib.quote_plus(str(r[1]))]) for r in request]) hashStr = "&".join(["=".join([str.lower(r[0]),str.lower(urllib.quote_plus(str(r[1]))).replace("+", "%20")]) for r in request]) sig = urllib.quote_plus(base64.encodestring(, hashStr,hashlib.sha1).digest()).strip()) print "Signature: %s"%sig requestUrl += "&signature=%s"%sig print requestUrlif __name__ == __main__: requests = { "apiKey": "BRZ5j4E8O4di2MZWnQsYBLThCrTGO-LGeZaMjsnvelkHuY5P8FdTnluNZTDQhCUy-wqeJzk8EAc_NbcZxTF_FA", "response" : "json", "command" : "listZones" } secretKey = "bFlx2llt3OmM4AiHzfwV1ZbuJ5tsv6hAx6IeM32CkM-obCA77BRwBr3_yQ0bO1-kdZyfD3-lY6khsXCx18n3Mw" make_request(requests, secretKey)
  14. 14. EC2 compatibility via Cloudbridge• Significant development work happening to make Cloudstack highly compatible with EC2 API.•• Euca tools, boto etc…should work with cloudstack.• Lots of potential for contributions…
  15. 15. Note: System VMs• When a Zone is enabled some system VMs get started: – Router for instances – Proxy for console access – Manage secondary storage• Different from Opennebula and Nimbus, needs to get used to.• 3 IP addresses need to be reserved for those.
  16. 16. Note: Highly Scalable• See: – – From Alex Huang. 10k “resources” managed per Mgt server. 30k resources with 30k VM in simulation.• Management server can be setup in a multi- node configuration with a load-balancer and replicated MySQL.
  17. 17. Note: DevCloud• A Virtual box appliance packaged to provide a working Cloudstack environment.• Available since last week , from Edison Su• Aimed at developers but has other use cases: – Xen PV hosts gives nested virtualization – Local EC2 Cloud on your laptop – Networking experiments ?•
  18. 18. Note: VM Placement• Scheduling of VMs• Stack them, spread them, random…• Configurable