Exploring Apache CloudStack
Stack Check
Apache CloudStack [1] is an open source software platform that pools computing resources to build public, private, and hybrid Infrastructure-as-a-Service (IaaS) clouds. The CloudStack toolset manages the network, storage, and compute nodes that make up a Cloud infrastructure.
CloudStack started life as VMOps, a company founded in 2008 with product development spearheaded by Sheng Liang, who developed the Java Virtual Machine at Sun. Although early versions were very much focused on the Xen Hypervisor, the team soon realized the benefits of multi-hypervisor support. In early 2010, the company achieved a massive marketing win when it acquired the domain name http://cloud.com and formally launched CloudStack, which was 98 percent open source. In July 2011, CloudStack was acquired by Citrix Systems [2], who released the remaining code as open source under GPLv3.
The big news came in April 2012, when Citrix donated CloudStack to the Apache Software Foundation, where is was accepted into the Apache Incubator. Apache CloudStack has now been promoted to a top-level project of the Apache Software Foundation, a measure of the maturity of the code and its community. Citrix continues to market the cloud management solution CloudPlatform [3], which is built on CloudStack.
Multiple Hypervisor Support
CloudStack works with a variety of hypervisors, and a single cloud deployment can contain multiple hypervisor implementations. The current release of CloudStack supports pre-packaged enterprise solutions like Citrix XenServer and VMware vSphere, as well as OVM and KVM or Xen running on Ubuntu or CentOS. Support for Hyper-V is currently in development and should be available in a future release.
CloudStack can manage tens of thousands of host servers installed in multiple geographically distributed data centers. The centralized management server scales linearly, eliminating the need for intermediate cluster-level management servers. No single component failure can cause a cloud-wide outage. Admins can perform periodic maintenance on the management server without affecting the functioning of virtual machines running in the cloud.
CloudStack offers an administrator's web interface for provisioning and managing cloud resources, as well as an end-user web interface for running VMs (Figure 1). CloudStack automatically configures each guest virtual machine's networking and storage settings and internally manages a pool of virtual appliances to support the cloud itself. These appliances offer services such as firewalling, routing, DHCP, VPN, console access, storage access, and storage replication. The extensive use of virtual appliances simplifies the installation, configuration, and ongoing management of a CloudStack deployment.
API and Extensibility
The CloudStack cloud environment provides an API that gives programmatic access to all the management features available in the UI. This API enables the creation of command-line tools and new user interfaces to suit particular needs. The CloudStack pluggable allocation architecture allows the creation of new types of allocators for the selection of storage and hosts.
CloudStack can translate Amazon Web Services (AWS) EC2 and S3 API calls to native CloudStack API calls so that users can continue using existing AWS-compatible tools.
CloudMonkey [4] is a Command-Line Interface (CLI) for CloudStack written in Python. CloudMonkey lets you easily create scripts to automate complex or repetitive admin and management tasks, from simply adding multiple users to deploying a complete CloudStack architecture.
Access to the API, either directly or by using CloudMonkey, is protected by a combination of API and secret keys and a signature hash. Users can re-generate new random API and secret keys (as well as their UI password) at any time, providing maximum security and peace of mind.
CloudStack Deployment Architecture
The CloudStack server itself may be deployed in a multi-node installation, where the servers are load balanced across data centers (Figure 2). MySQL may be configured to use replication for failover in the event of database loss. For the hosts, CloudStack supports NIC bonding and the use of separate networks for storage, as well as iSCSI Multipath.
CloudStack infrastructure has six key building blocks. Regions are very similar to an AWS Region and are the first and largest unit of scale for a CloudStack cloud. A Region consists of multiple availability Zones, which are the second largest unit of scale. Typically there is one zone per data center. A zone contains PODs, clusters, hosts, and storage.
One cloud can contain multiple regions, and even if one region should go offline, VMs in other regions are still accessible because each region has dedicated management servers located in one or more of its zones.
PODs, the third unit of scale, are often a single rack, which houses networking, compute, and storage. PODs also have logical, as well as physical, properties. Components such as IP addressing and VM allocations are influenced by the PODs within a zone.
Clusters are the fourth unit of scale and are simply groups of homogeneous compute hardware combined with primary storage. Each cluster will run a common hypervisor, but a zone can consist of combinations of all of the supported hypervisors.
Hosts are the fifth unit of scale and provide the actual compute layer on which virtual machines will run.
Storage is the final building block. Two key types of storage exist within CloudStack: primary and secondary. Primary storage is where virtual machines reside, which could be local storage within a compute host or shared-file/block storage using NFS, iSCSI, or Fibre Channel.
Secondary storage is where virtual machine templates, ISO images, and snapshots reside and is currently always presented over NFS. You can also use OpenStack's Swift component to replicate secondary storage between zones, ensuring users always have access to their snapshots even if a zone is offline.
A lot of development work is currently underway with storage, and some great new features are coming in the next release of CloudStack, thanks to a new storage subsystem.
Buy ADMIN Magazine
Subscribe to our ADMIN Newsletters
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Most Popular
Support Our Work
ADMIN content is made possible with support from readers like you. Please consider contributing when you've found an article to be beneficial.