Sunday, September 14, 2014

OpenStack – Open Cloud Computing Platform

 OpenStack - Overview

About OpenStack 
OpenStack is a global collaboration of developers and cloud computing technologists producing the ubiquitous open source cloud computing platform for public and private clouds. The project aims to  deliver solutions for all types of clouds by being simple to implement, massively scalable, and feature rich. The technology consists of a series of interrelated projects delivering various components for a cloud infrastructure solution. OpenStack is a cloud operating system that controls large pools of compute, storage, and networking resources throughout a datacenter, all managed through a dashboard that gives administrators control while empowering their users to provision resources through a web interface.

Who's behind OpenStack? 
Founded by Rackspace Hosting and NASA, OpenStack has grown to be a global software community of developers collaborating on a standard and massively scalable open source cloud operating system. Our mission is to enable any organization to create and offer cloud computing services running on standard hardware.

Who uses OpenStack? 
Corporations, service providers, VARS, SMBs, researchers, and global data centers looking to deploy large-scale cloud deployments for private or public clouds leveraging the support and resulting technology of a global open source community.
 
Why open matters: 
All of the code for OpenStack is freely available under the Apache 2.0 license. Anyone can run it, build on it, or submit changes back to the project. We strongly believe that an open development model is the only way to foster badly-needed cloud standards, remove the fear of proprietary lock-in for cloud customers, and create a large ecosystem that spans cloud providers.
  

Introduction to OpenStack

OpenStack lets users deploy virtual machines and other instances which handle different tasks for managing a cloud environment on the fly. It makes horizontal scaling easy, which means that tasks which benefit from running concurrently can easily serve more or less users on the fly by just spinning up more instances. For example, a mobile application which needs to communicate with a remote server might be able to divide the work of communicating with each user across many different instances, all communicating with one another but scaling quickly and easily as the application gains more users.
And most importantly, OpenStack is open source software, which means that anyone who chooses to can access the source code, make any changes or modifications they need, and freely share these changes back out to the community at large. It also means that OpenStack has the benefit of thousands of developers all over the world working in tandem to develop the strongest, most robust, and most secure product that they can.
How is OpenStack used in a cloud environment?
The cloud is all about providing computing for end users in a remote environment, where the actual software runs as a service on reliable and scalable servers rather than on each end users computer. Cloud computing can refer to a lot of different things, but typically the industry talks about running different items "as a service"—software, platforms, and infrastructure. OpenStack falls into the latter category and is considered Infrastructure as a Service (IaaS). Providing infrastructure means that OpenStack makes it easy for users to quickly add new instance, upon which other cloud components can run. Typically, the infrastructure then runs a "platform" upon which a developer can create software applications which are delivered to the end users.


What are the components of OpenStack?

OpenStack is made up of many different moving parts. Because of its open nature, anyone can add additional components to OpenStack to help it to meet their needs. But the OpenStack community has collaboratively identified nine key components that are a part of the "core" of OpenStack, which are distributed as a part of any OpenStack system and officially maintained by the OpenStack community.

·         Nova is the primary computing engine behind OpenStack. It is a "fabric controller," which is used for deploying and managing large numbers of virtual machines and other instances to handle computing tasks. OpenStack Compute (code-name Nova)
·         Swift is a storage system for objects and files. Rather than the traditional idea of a referring to files by their location on a disk drive, developers can instead refer to a unique identifier referring to the file or piece of information and let OpenStack decide where to store this information. This makes scaling easy, as developers don’t have the worry about the capacity on a single system behind the software. It also allows the system, rather than the developer, to worry about how best to make sure that data is backed up in case of the failure of a machine or network connection. OpenStack Object Storage (code-name Swift)
·         Cinder is a block storage component, which is more analogous to the traditional notion of a computer being able to access specific locations on a disk drive. This more traditional way of accessing files might be important in scenarios in which data access speed is the most important consideration. OpenStack Block Storage (code-name Cinder)
·         Neutron provides the networking capability for OpenStack. It helps to ensure that each of the components of an OpenStack deployment can communicate with one another quickly and efficiently. OpenStack Networking (code-name Neutron)
·         Horizon is the dashboard behind OpenStack. It is the only graphical interface to OpenStack, so for users wanting to give OpenStack a try, this may be the first component they actually “see.” Developers can access all of the components of OpenStack individually through an application programming interface (API), but the dashboard provides system administrators a look at what is going on in the cloud, and to manage it as needed. OpenStack Dashboard (code-name Horizon)
·         Keystone provides identity services for OpenStack. It is essentially a central list of all of the users of the OpenStack cloud, mapped against all of the services provided by the cloud which they have permission to use. It provides multiple means of access, meaning developers can easily map their existing user access methods against Keystone. OpenStack Identity (code-name Keystone)
·         Glance provides image services to OpenStack. In this case, "images" refers to images (or virtual copies) of hard disks. Glance allows these images to be used as templates when deploying new virtual machine instances. OpenStack Image Service (code-name Glance)
·         Ceilometer provides telemetry services, which allow the cloud to provide billing services to individual users of the cloud. It also keeps a verifiable count of each user’s system usage of each of the various components of an OpenStack cloud. Think metering and usage reporting. OpenStack Telemetry (code-name Ceilometer)
·         Heat is the orchestration component of OpenStack, which allows developers to store the requirements of a cloud application in a file that defines what resources are necessary for that application. In this way, it helps to manage the infrastructure needed for a cloud service to run. OpenStack Orchestration (code-name Heat)
·         Trove is Database Service allows users to quickly and easily utilize the features of a relational database without the burden of handling complex administrative tasks. OpenStack Database (code-name Trove)
The following are new capabilities under development for the Juno revision and beyond:
*  Bare Metal provides the capability to provision bare metal servers. Bare Metal (code-name Ironic)

*  Queue Service (code-named “Marconi”) cloud messaging and notification service for developers building applications on top of OpenStack. Queue Service (code-name Marconi)

*  Data Processing (code-named “Sahara”) simple means to provision a Hadoop cluster on top of OpenStack. Data Processing (code-name Sahara)

Industry Vendors

The top three vendors in every hardware category support OpenStack and the list of other vendors is growing
every quarter. Cisco Systems in April announced a $1 billion investment in its Cisco Cloud Services based on OpenStack. Hewlett-Packard recently rebranded its cloud portfolio to Helion and  announced a $1 billion commitment to developing its cloud based on OpenStack. 
  • Top 3 router vendors: Cisco, Juniper, Alcatel
  •  Top 3 x86 vendors: HP, Dell, IBM
  •  Top 3 blade vendors: HP, Cisco, IBM
  •  Top 3 Linux vendors: Red Hat, Canonical, SUSE
  •  Top 3 switch vendors: Cisco, Juniper, HP
  • Top 3 Storage vendors: EMC, IBM, NetApp
  • Top 3 Hypervisors: KVM, Xen (both Open source) ESXi -VMware


Is OpenStack Ready For Production?

This is “the question” that runs through the mind when diving deep on OpenStack.
Yes, there is great momentum behind OpenStack. Yes, there is good vendor support for OpenStack. And yes, the community is growing with almost 4500 professionals attending the May 2014 Summit in Atlanta, GA (USA).

But Can all this help convince businesses to adopt OpenStack?
Neither the momentum and growing support, nor the growing community and growing number of services with API specifications can convince a business to adopt OpenStack.
Real world deployment stories, lessons from the trenches, and willingness on part of the early adopters to take the stage and share with confidence that OpenStack is ready - is the  way to convince the audience.

2014 OpenStack Summit in Atlanta gave us some directions OpenStack IS ready for early adapters
Though OpenStack still lacks the polish of competitive approaches, it is sufficiently rich in its service offerings and most of the core components are stable for production environments.  Moving to OpenStack is now about taking a calculated risk. Yes, you can calculate the cost of investigating it. Yes, you can take the risk -- the chances of success are reasonably high. Why?
Second, vendors like Red Hat, Canonical, Mirantis, OpsCode, Persistent, have launched testing tools and programming toolkits to make OpenStack deployment and programming relatively painless. Yes, you need Linux system administration skills and might need some beginner scripting skills, but the tutorials are easy to follow – you can watch a training video and deploy OpenStack in a multi-node environment in a matter of hours. 
  • Are there issues with release rollouts? Yes, but the issues are marginal compared to the situation in 2012 or 2013.
  • Are the data models across L2 and L3 networking layers perfect? No, but they are on the right track and there is better commitment from vendors with skin in the game. The current design is good enough to interoperate with existing networking topologies.
  • Is there any coolness to the platform? Absolutely – look at Heat for orchestration and Ceilometer for metering. These are value added services, going beyond basic Compute/Network/Storage services.
  • Are consulting and support services available? Yes, and growing. Vendors like Mirantis, MetaCloud, and Persistent are deploying OpenStack and offering development services for their customers.
  • Should a customer go into production within 90 days? It is possible but not advised by F5. Customers should setup a lab and test for at least 3-4 months, based on use cases, then start sharing and deploying workloads between their OpenStack and rest of the infrastructure (traditional or public cloud), and plan a phased production rollout.
Success story
Here's a summary of real world stories for production OpenStack deployments.
·         Enterprises (E.g. BestBuy, Ebay) delivering Developer self-service and IT efficiency
Proof points:
  1. Over 15000 Compute instances created and deleted
  2. 500 active Compute instances, going up to 1500
  3. Integrated into existing networking topologies
Goals achieved:
  1. Developer focused adoption (No tickets!)
  2. Remove the blame-game (no more "IT caused downtime!")
  3. Parallel development (Build fast!)
  4. Reduce cycle time from code complete to code deploy (Deploy fast!)
  5. IT focuses on automation and monitoring

·      Providers (E.g. ATT, Comcast, Bluehost) maintain and scale tenant environment without downtime
Proof points:
  1. Running OpenStack in production in double digit Data Centers globally
  2. Scale up replaced with Scale out (add more servers to increase capacity)
  3. Setup an entire infrastructure stack for an event (e.g. NCAA real-time feeds), use it, tear it down once the event is done
  4. Compute node belongs to the Tenant, but provider can patch the underlying OS with live migration without affecting workload availability
  5. Use of APIs enables custom live upgrade (this is possible with commercial software too, but now possible in open source software with API customizations) - Upgrade algorithm: HA + 1 - Use a combination of Scale back, rollback - do HA + 1, then live migrate to new node, then validate, then update the taken off node.
Conclusion
Customers can invest in OpenStack now. it will require investment unlike a point-and-click cloud platform deployment experience. But, it will also provide an excellent opportunity to begin transforming IT processes and toolset.