Friday, 6 June 2014

Cloudstack


Apache CloudStack is open source software designed to deploy and manage large networks of virtual machines, as a highly available, highly scalable Infrastructure as a Service (IaaS) cloud computing platform. 
CloudStack currently supports the most popular hypervisors: VMware, KVM, XenServer, Xen Cloud Platform (XCP) and Hyper-V.
Users can manage their cloud with an easy to use Web interface, command line tools, and/or a full-featured RESTful API. In addition, CloudStack provides an API that's compatible with AWS EC2 and S3 for organizations that wish to deploy hybrid clouds.

Cloudstack Architecture




Deployment Architecture

Hypervisor is the basic unit of scale.
Cluster consists of one ore more hosts of same hypervisor
All hosts in cluster have access to shared (primary) storage
Pod is one or more clusters, usually with L2 switches.
Availability Zone has one or more pods, has access to secondary storage.
One or more zones represent cloud
Management server Cluster – MS is stateless and   can be deployed as physical server or VM
Single MS node can manage up to 10K hosts. Multiple nodes can be deployed for scale or redundancy

The Pieces of CloudStack


  • Hosts-  Servers onto which services will be provisioned  
  • Primary Storage -  VM disk storage 
  • Cluster -  A grouping of hosts and their associated storage 
  • Pod -  Collection of clusters in the same failure boundary 
  • Network -Logical network associated with service offerings 
  • Secondary Storage -Template, snapshot and ISO storage 
  • Zone- Collection of pods, network offerings and secondary storage 
  • Management Server Farm -   Management and provisioning tasks

Storage

Primary Storage 

Stores disk volumes for VMs in a cluster
•Configured at Cluster-level. 
•Close to hosts for better performance 
•Cluster have at least one primary storage 
•Requires high IOPs (can be expensive)

Secondary Storage

Stores all Templates, ISOs and Snapshots 
Configured at Zone-level 
Zone can have one or more secondary storages 
High capacity, low cost commodity storage 


Networking - Giving control brings complexity

Network need to be defined before we begin the deolyment

CloudStack Networks

  • Management  - used by management nodes
  • Storage - used by secondary storage node

VM Instance Networks 

  • Public - network used for VMs and Internet (used only if you do Isolated Mode)
  • Guest - network used for internal VM communication

Sample Host Network Layout



Sample system VM Network Layout 



Sample Cloudstack Mutli-tier Network Diagram 



Extend the Cloudstack capability  using Plugins

Plugins
Implements clearly defined interfaces  and compiles only against the Plugin API module

Anatomy of a Plugin
Can be two jars: server component to be deployed on management server and an optional ServerResource component to be deployed co-located with the resource 
•Server component can implement multiple Plugin APIs to add its feature 
•Can expose its own API through Pluggable Service so administrators can configure the plugin 
•As an example, OVS plugin actually implements both NetworkGuru and NetworkElement 


Plugin Interfaces Available


NetworkGuru – Implements various network isolation and ip address technologies 
•NetworkElement – Facilitate network services on network elements to support a VM (i.e. DNS, DHCP, LB, VPN, Port Forwarding, etc) 
•DeploymentPlanner – Different algorithms to place a VM and volumes. 
•Investigator – Ways to find out if a host is down or VM is down. 
•Fencer – Ways to fence off a VM if the state is unknown 
•UserAuthenticator – Methods of authenticating a user 
•SecurityChecker – ACL access 
•HostAllocator – Provides different ways to allocate host 
•StoragePoolAllocator – Provides different ways to allocate volumes

Apache cloudstack projects currently in progress to extend the cloudstack Capability 




2 comments:

  1. Great Stuff Selva !! Looking forward for more information on cloud stack ..

    ReplyDelete