Pages

Friday, 18 April 2014

OpenStack Compendium - The Architecture

In this post we continue our journey in OpenStack with a presentation of the high-level architecture.

OpenStack is not based on a single huge open source project but it has been architected and designed using a modular approach where each component is developed independently by a dedicated project.
This is the big picture of the OpenStack architecture including every module and the relation with the other components:




Because OpenStack is highly configurable, it is possible to create a tailored solution using only a subset of modules in order to cover the specific needs. For this reason, the deployments range from a single server using a single module based on Glance or Cinder to very complex datacentre solutions based on multiple interrelated modules configured in high availability mode. You can also install the entire stack in a single box just for development or evaluation purposes.

Compute: (Project NOVA)
Compute is the virtual machine provisioning and management module. It controls many aspects of the virtualization platform like networking, CPU, storage, memory, creating, controlling, and removing virtual machine instances, security, and access control.
Compute offers a wide range of supported virtualization platform ranging from open source to proprietary


ProductInterfaceDescription
Kernel Virtual Machine (KVM)LibvirtMost popular technology for small scale deployments. Supports advanced operations such as live migration and resize.
XenLibvirtMost popular (along with XCP/XenServer) technology for larger scale and production deployments.
Citrix Xen-ServerXenAPICitrix’s commercial version of Xen-based virtualization product. Supports advanced features.
Xen Cloud Platform (XCP)XenAPICitrix’s open source version of XenServer. Supports a subset of XenServer features.
VMware ESX / ESXi / vSpherevSphere APIVMWare virtualization platform.
User Mode Linuxlibvirt Generally considered a lower performance virtualization option.
Microsoft Hyper-V Windows Management Instrumentation (WMI)Microsoft’s hypervisor-based virtualization technology.
QEMULibvirtProvides the basis for most Linux-based virtualization technologies (such as KVM and Virtualbox).
Linux Containers (LXC)LibvirtLXC is an operating system-level partitioning technology that allows for running multiple isolated servers (containers) in a single kernel.

The module implements own solutions to manage networking and storage but it can also be integrated with the other modules of the architecture.

Object Storage (Project SWIFT)
Object Storage is a distributed storage system for static data such as generic files, multimedia or virtual machine images. There are multiple layers of redundancy and automatic replication, so a failure in a node doesn't result in data loss, and recovery is automatic. It uses the concepts of Zone and Region in order to write multiple copy of the file in isolated storage (i.e. different servers or different racks up to different datacentres).
It is able to scales horizontally by adding new servers to increase the storage and replication.

Block storage (Project CINDER)
Block storage is essentially a management system of volumes used by OpenStack virtual machines. It supports the snapshots in order to back up data. Snapshots can be restored or used to clone a block storage volume. The volumes can be dynamically attached and detached to\from virtual machine, but multiple machine cannot attach the same volume.

Networking (Project NEUTRON)
OpenStack provides a flexible networking layer for the cloud. It lets the management of multiple networks, control traffic and IP addressing, connect servers and devices to one or more networks.
The Neutron abstracts the management of networking services by using a pluggable backend architecture responsible for interacting with the underlying infrastructure. 
A large number of plug-ins are available and include:

Open vSwitch Plugin
Cisco UCS/Nexus Plugin
Linux Bridge Plugin
Modular Layer 2 Plugin
Nicira Network Virtualization Platform (NVP) Plugin
Ryu OpenFlow Controller Plugin
NEC OpenFlow Plugin
Big Switch Controller Plugin
Cloudbase Hyper-V Plugin
Brocade Neutron Plugin Brocade Neutron Plugin
IBM SDN-VE Plugin

OpenStack networking implements a framework to extend the capability with intrusion detection systems (IDS), load balancing, firewalls and virtual private networks (VPN).

Identity services (Project KEYSTONE)
Keystone provides identity management with authentication and authorizations services using a central repository of users mapped to the OpenStack services they can access.
OpenStack identity integrates with existing backend directory services such as LDAP. It supports several forms of authentication including username and password, tokens and AWS-type logins.

Image services (Project GLANCE)
The OpenStack Image Service manages virtual disk images. The images can be used as a template to get new virtual servers up and running. It can also be used to store and catalogue an unlimited number of backups. Glance supports many different storages and formats.


Image StoreDescription
FileystemStores, deletes, and gets images from a filesystem directory or shared drive (e.g., NFS).
HTTPRead-only image store access to get images using URL.
Swift Stores, deletes, and gets images from a Swift installation.
S3Deletes or gets images (but not stores) from Amazon’s S3 service


Disk FormatDescription
Raw Unstructured disk format
VHDMost common format
VMDKVMware Format
qcow2QEMU image format, native format for KVM and QEMU.
VDIOracle VM VirtualBox virtual disk image format.
ISOArchive format for optical disks.
AMI, ARI, AKIAmazon machine, ramdisk, and kernel images (respectively).


Container FormatDescription
OVFAn open standard for distributing one or more virtual machine images. Read more about this standard at http://www.dmtf.org/standards/ovf.
aki, ari, amiAmazon kernel, ramdisk, or machine image (respectively).
BareNo container for this image.

Metering and Monitoring services (Project CELIOMETER)
The primary goals of this module are monitoring and metering, but the framework is easily expandable to collect for other needs. It can be used as unique point of contact for billing systems to acquire all of the measurements they need to establish customer billing, across all current OpenStack core components.

Dashboard (Project HORIZON)
The dashboard provides a web-based interface to many of the OpenStack services including Nova, Swift and Keystone.
Horizon is based on a Django module called django-openstack. Django is a high-level Python Web framework to create web application (https://www.djangoproject.com/ ).

Orchestration (Project HEAT)
Heat provides a framework to manage the entire lifecycle of infrastructure and applications within OpenStack clouds. Heat provides a template based orchestration for describing a cloud application by executing appropriate OpenStack API calls to generate running cloud applications.
The templates are based on AWS CloudFormation used for creation of most OpenStack resource types (such as instances, floating ips, volumes, security groups, users, etc), as well as some more advanced functionality such as instance high availability, instance autoscaling, and nested stacks.

This is a high-level presentation of the OpenStack architecture in order to describe the main features and capabilities of each single module. Each module could be further drilled-down to illustrate the architecture and the internal work, but it is not the scope of this post.

Now, it is really the time to put your hands-on!

Read More »

Sunday, 13 April 2014

OpenStack Compendium

I'm a great fan of Amazon Web Services, perfect for creating pure cloud architectures without compromises, and I follow with great interest the evolution of Microsoft Azure. Anyway, both are proprietary platforms, but what about open platforms?
The open approach has always been a revolutionary concept in the computer history, it decided the success of the platforms and technologies: the success of DEC with PDP was also due to the publishing of detailed specs about inner workings and interfaces; the IBM and the era of  PC-compatible computers based on an open architetture and non-proprietary components; the use of the C language and the openness of the source code by AT&T; the GNU\Linux and the OpenSource movement; the open approach of the Java architecture with "write once and execute anywhere"…..

Recentlty, I had the opportunity to evaluate this compelling cloud platform so I decided to share with you some notes taken during my investigations.

The OpenStack Project aims to create an open source cloud-computing platform for public and private clouds aimed at scalability without complexity. One of the defining core values behind the project is its embrace of openness with both open standards and open source code.

OpenStack has been released under the Apache 2.0 license. Since that first release it has grown into a large community supported by over 12,000 contributors in nearly 130 countries, and more than 850 companies including Red Hat, Canonical, IBM, AT&T, Cisco, Intel, PayPal, Comcast, CoudWatt (see http://www.openstack.org/foundation/companies/ ).

     13/11/2013 

The platform is open and designed to support a broad range of products, technology and standards. It has no proprietary hardware or software requirements, and it integrates legacy systems and third-party products. It also provides a management API with a compatibility layer with the Amazon Web Service platform and Eucalyptus.

The OpenStack is a collection of open source technologies delivering a massively scalable cloud operating system. It has been architected and designed using a modular approach where each component is developed independently by a dedicated project.
A specific OpenStack implementation may leverage of all components or only a subset according the specific needs. The cloud platform provides a full set of feature required to cover any aspect of a cloud service.

Self-management
The easy provisioning (and deprovisioning) of computing capabilities according the needs automatically, without requiring human interaction with each service provider, allows a formidable way to respond just-in-time to any change required by the business.
The on-demand self-service management includes virtual instances, network, VPN, etc…

Easy VM provisioning
The platform includes a complete images management system with a catalog service for storing and querying virtual disk images. The images can be used as a template with a preconfigured application to get new virtual servers up and running in a very short time.

Metering and reporting for billing
The metering capabilities allow keeping a detailed track of the resource usage in order to adopt a pay-per-use approach based on consumed resources.

Monitoring
An extensive monitoring system allows controlling the infrastructure in order to identify exactly the system usage and carefully plan for future expansion. The on-demand resource provisioning can also be used to cope with peak periods when the service is heavily loaded.

Automation
The entire platform can be fully managed by using a broad set of API. The instance provisioning/deprovisioning, network configuration and monitoring can be fully managed programmatically. This reduce drastically the effort to manage the infrastructure and reliability of the delivery processes.

Interoperability and Portability
The Open Source approach of the architecture facilitates a seamless integration of different platforms and technologies. It provides the support to a wide range of visualization platforms ranging from proprietary software (VMWare ESXi and MS Hyper-V) to open source solution (KVM or Citrix XenServer). Additionally, the support of the project by the best of breed HW vendor like Intel, HP, IBM, Dell and Cisco guarantees a great level compatibility.

The Open Stack is one of the most promising platform for cloud computing due to the open source nature and the wide adoption for the cutting the edge technology providers:
 - IBM: cloud offer, IBM Smart Cloud, based on Open Stack project. Last year IBM aquired Softlayer which is based on a different platform, CloudStack, but currrently it is working on a  compatibility layer called Jumplayer (http://blog.softlayer.com/2014/building-bridge-openstack-api)
 - HP: enterprise-grade public cloud based on OpenStack technology
 - Canonical: release of Ubuntu Open Stack solution for private cloud
 - Red Hat: Red Hat's OpenStack Cloud Infrastructure Partner Network is the world's largest commercial OpenStack ecosystem
 - Rackspace: worldwide leading provider of cloud service based on OpenStack
The first class contributors embracing the project guarantees a stable development of the platform. The top corporate contributors are Red Hat, HP, Rackspace and IBM (http://activity.openstack.org/dash/releases/index.html?data_dir=data/havana ). The Havana release has been developed with the contribution of 933 developers.
The roadmap is very challenging with new features added every release (2 releases yearly at April and October). The community around the project is very active and spread around the world including Italy and France. Many conferences are dedicated to OpenStack (14 in the 2013) with a great participation. More than 3,500 people attended the 2013 OpenStack Summit in Hong Kong.

All the premises are very good, but what the future holds?
Read More »