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
Great Stuff Selva !! Looking forward for more information on cloud stack ..
ReplyDeleteGreat post, Selva!
ReplyDelete