Apache CloudStack: From API to UI Joe Brockmeier PPMC Member Apache CloudStack (Incubating) email@example.com Twitter: @jzb | Freenode: jzb
What is Apache CloudStack? • Open Source (Apache-‐Licensed) IaaS • Community of Users and Providers • Wri?en in Java* • Provides a Turn-‐Key “Stack” for Running Public, Private, or Hybrid Clouds • Hypervisor AgnosMc* • Time-‐Based Releases
In the beginning… • Started as VMOps Cloud Stack (2008) • Became Cloud.com in 2010 • Released CloudStack under GPLv3 – but Open Core (May 2010) • Acquired by Citrix (July 2011) • EnMrely Open Source (August 2011)
Going to Apache • Relicensed Proposed to Apache (April 3, 2012) • Accepted as an IncubaMng Project (April 16, 2012) • First Major Release, 4.0.0-‐incubaMng (November 6, 2012) • First Minor Release, 4.0.1-‐incubaMng (February 12, 2013)
Why Apache? • Known and Proven Governance Model • AcMve Mentoring of New Projects • 100% Community-‐Driven • More than 3,000 Developers • Many Successful Projects: Apache HTTPD, Tomcat, Hadoop, Cassandra, Lucene, etc.
Apache Process • 100% Community-‐Driven • “If It Didn’t Happen on the Mailing List…” • Clear Governance (PPMC, Commi?er, Contributor, etc.) • Community Over Code • Rigorous A?enMon to Licenses • Can Seem BureaucraMc
Hypervisor Support • KVM • XenServer • Xen Cloud Plaiorm • VMware via vCenter • Bare Metal via IPMI
CloudStack Terminology • Zone: Availability zone, aka Regions. Could be worldwide. Diﬀerent 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
CloudStack Architecture Internet Ø Hypervisor is the basic unit of CloudStack Management scale. Server Zone 1 Ø Cluster consists of one ore more hosts of same hypervisor L3 core Ø All hosts in cluster have access to shared (primary) storage Pod 1 Access Layer Pod N Secondary Ø Pod is one or more clusters, …. Storage usually with L2 switches. Cluster N Ø Availability Zone has one or more pods, has access to …. secondary storage. Ø One or more zones represent Cluster 1 cloud Host 1 Primary Storage Host 2
CloudStack Storage • Primary Storage: – Anything that can be mounted on the node of a cluster. – Cluster LVM…iSCSI… – Holds disk images of running VMs – Support for CEPH with KVM hypervisors • Secondary Storage: – Available across the zone – Holds snapshots and templates (image repo) – Can use OpenStack swim or any object store (Gluster FS…) – New support for Caringo • Can use NFS for both to start • Storage abstracMon refactoring underway in 4.1.0 and 4.2.0
Networking • Extremely ﬂexible to: – Provide isolaMon with VLANs – Provide isolaMon at L3 with shared L2 (scalability) – Support hardware devices that exposes API – Deployed on exisMng networking infrastructure – Support new networking paradigm (SDN) • Support for Nicira Virtual P • Extensive use of Open VSwitch
Management Server • UI/API bits are stateless (state is stored in a MySQL database) • All UI funcMonality is available as an API call • Resiul API – UnauthenMcated API on 8096 for localhost (disabled by default) – AuthenMcated on port 8080 – Responses in XML or JSON
Highly Scalable • Up to 10K resources managed per management server node • Internal tesMng w/somware simulators shows up to 30K physical resources and 30K VMs managed by 4 management server nodes. • Real producMon deployments of tens of thousands of resources • See Alex Huang’s presentaMon: h?p://is.gd/alexh_scale
CloudStack Allocation • How are VMs placed, storage allocated, etc.? • CloudStack has several defaults – First ﬁt – Fill ﬁrst – Disperse • Don’t like those? Create your own! • Allows over-‐provsioning • OS Preference
High Availability • RFMTTR – “really fast mean Mme to recovery.” • CloudStack is not (alone) a magical HA soluMon. • Watches HA-‐enabled VMs to ensure they’re up, and that the hypervisor it’s on is up. Will restart on another if the hypervisor goes down. • Redundant router.
Load Balancing • Uses HA Proxy • CloudStack supports load-‐balancing for distribuMng traﬃc to its instances • Choose between round-‐robin, source, or least connecMons • Choose sMckiness policy (source, lbcookie, appcookie)
Snapshots • CloudStack allows you to take snapshots manually or set up recurring snapshots. • Snapshots can be managed automagically (keep N number) and manually (delete snapshot manually). • Can be turned into templates or volumes to be used by other instances.
CloudStack Networking Types • CloudStack oﬀers Basic and Advanced Networking – Basic: Easy, can only be one physical network • Every host, system VM, and guest instance has a unique IP – Advanced: Allows mulMple physical networks • Each account has a public IP, assigned to virtual router, guest IP range (e.g. 10.0.1.10/24), and VLAN ID for the isolated guest network • Guests communicate via their own dedicated VLAN
CloudStack Networks • Management Network: Used by hypervisors and management server to communicate • Private Network: Default network for system VMs (virtual router, secondary storage VM, console proxy VM) • Public Network: Public-‐facing (e.g. the Internet) • Guest Network: Network VMs are provisioned on • Link-‐local Network: Network used for communicaMon between hypervisor and system VMs. (RFC 3927)
Security Groups • TradiMonal isolaMon has been via VLAN • VLANs provide isolaMon, but at the cost of scaling – Standard limit is 4,096 VLANs – Hardware that supports upper limit is expensive – What happens with 4,097? • Amazon and others use Layer 3 isolaMon (Security Groups)
Security Groups • Assumes a quasi-‐trusted Layer 2 network • Filtering/isolaMon happens at the bridge level (think ebtables) • Deny by default
Accounts, Domains, and Projects • CloudStack has a top-‐level domain called ROOT • You can create sub-‐domains • You can create 3 types of accounts, admins, domain-‐admins, or users • Projects can be used to hold resources for Mme-‐ limited projects • Supports LDAP integraMon • CloudStack’s account system is very simple – don’t make it more complicated!
Usage Accounting • Provides stats that can be used for billing (but is not a billing soluMon) • Usage stats show: VM count, CPU usage, disk allocaMon and use, network usage over Mme. • IntegraMon howtos for imporMng to Excel, Ubersmith, Amysta, and Cloud Portal.
APIs • Root Admin, Domain Admin, User • Set of methods available over HTTP(S) • AuthenMcated on 8080 w/Keys • UnauthenMcated on 8096 (oﬀ by default) • Python + Ruby clients available
AWS EC2 and S3 Compatibility • Includes an EC2/S3 compaMbility layer • See: – h?p://wiki.cloudstack.org/display/RelOps/ EC2+API+support+in+CloudStack – h?p://www.slideshare.net/sebasMengoasguen/ cloudstack-‐ec2-‐conﬁguraMon • Euca Tools, Boto, etc. should work with CloudStack
CloudMonkey • New ASF CloudStack CLI • Python code, built using Marvin • h?ps://cwiki.apache.org/CLOUDSTACK/ cloudstack-‐cloudmonkey-‐cli.html • Available from CloudStack source or pypi: – h?p://pypi.python.org/pypi/cloudmonkey/
Use Cases • Private Cloud • Dual-‐Workload Private Cloud • Public Cloud (ISP/Providers) • Hybrid Cloud • Small to Very, Very Large
Zynga • Online Games • Hybrid Cloud (Move workloads between “zCloud” and public cloud) 80/20 split • North of 30K Nodes
Datapipe • Public Cloud • Geo-‐distributed: – U.S. (NJ San Jose, CA) – Hong Kong – Shanghai – London – Iceland (w/in 90 days) • Smaller ( 100 Hosts) but massively distributed • See: h?p://is.gd/datapipe_cs
ISWest • Hosted IaaS Clouds (Private Environment) from Dedicated Servers • Most Customers are Small ( 15 VMs) • Mix of Hypervisors • FuncMoning Cloud in “a li?le over a month.”
DevCloud • DevCloud is a VirtualBox image w/nested virt. • Grab the DevCloud image from: h?p://wiki.cloudstack.org/display/COMM/DevCloud • Log in via the GUI: h?p://localhost:8080/client • SSH to DevCloud: ssh -p 2222 root@localhost Username: admin Password: password • DevCloud KVM – eﬀort to run DevCloud on a KVM host
CloudStack Runbook • Minimal install (1 server) • Wri?en by David Nalley w/ﬁxes from the community • h?p://people.apache.org/~ke4qqq/runbook/ • Focuses on CentOS w/KVM – other runbooks in process for Ubuntu w/Xen or KVM.
Direction • Currently on a Four-‐Month Release Cycle • 4.1.0 Expected Early April, 4.2.0 in August • 4.0.2 “Any Day Now” • Releases Supported UnMl Next Major Feature Release (e.g., 4.0.0, 4.0.x unMl 4.1.0) • Last Major Release Will Receive Support for 12 Months (hasn’t happened yet)
Expected in 4.1.0 • AutoScale: Work with loadbalancers (like NetScaler) to scale up/down resources. • Resize Volumes for Instances • OpenVSwitch Support for KVM • API Request Thro?ling • AWS-‐like Regions • Persistent Networks without Running Instances
Get Involved • Main Site: CloudStack.org • IRC: #cloudstack and #cloudstack-‐dev • Follow @cloudstack on Twi?er • Lots of Presos: h?p://slideshare.net/cloudstack • Mailing Lists: h?p://cloudstack.org/discuss/mailing-‐ lists.html