OpenStack IaaS 1 Rhys Oxenham OSEC.pl BarCamp, Warsaw, Poland November 2013
Disclaimer The information provided within this presentation is for educational purposes only and was prepared for a community event. As such, none of the detail provided here is binding and should not be considered Red Hat product information, architecture guidance, the views of Red Hat as a whole, nor a commitment to deliver any material, code or functionality and should not be relied upon in making purchasing decision.
So, what's the big problem?
Three major issues with traditional architecture... Our data is too large We're producing vast amounts of data, exponentially! Way past the ability of traditional systems & applications Service requests are too large More and more client devices coming online Much harder to maintain service to customers Applications weren't written to cope with demand
Why should I care? Servers fail - Deal with it! If you were to build an environment from scratch- Start with extremely reliable (30year MTBF) servers Build with 10,000 machines You'll watch one fail every day! We need a new type of application to cope Fault-tolerant software is inevitable Change to scale-out rather than scale-up!
Traditional Workloads Cloud Workloads
A different kind of architecture... TRADITIONAL WORKLOADS Stateful virtual machines Big VMs: vcpu, vram, local storage inside VM Application SLA aligned to VM itself Relies on underlying HA technology to meet SLA goals CLOUD WORKLOADS VMs scale up: add vcpu, vram, etc. Applications not designed to tolerate failure of VMs Stateless VMs, application distributed Small VMs: vcpu, vram, storage separate Application SLA not dependent on any one VM Many instances can provide application availability Applications scale out: add more VMs Applications designed to tolerate failure of VMs
Scale-Up vs Scale-Out
Where does OpenStack fit in?
Where does OpenStack fit in? OpenStack provides an elastic cloud platform for these new workloads
What is OpenStack? Fully open source cloud operating system Provides all of the tools/building blocks required to build a cloud environment from scratch - mimics public clouds Started by NASA and Rackspace but now has an independent foundation in which key industry members are present, including Red Hat Enormous market hype with investment from all major players, e.g. HP, Dell, IBM... and with 1000's of developers worldwide
Why does the world need OpenStack? Cloud is widely seen as the next-generation IT delivery model Agile & flexible Utility-based on-demand consumption Self-service drives down overhead and maintenance Public clouds setting the benchmark, organisations want the same level of functionality but behind the firewall Not all organisations are ready for public cloud Applications are being built differently today More tolerant of failure Make use of scale-out elastic architectures OpenStack enables organisations to achieve this, today... and without lock-in.
Typical OpenStack Use Cases Service provider offering Re-sell compute, networking and storage resources as a new cloud provider to other organisations
Typical OpenStack Use Cases Service provider offering Re-sell compute, networking and storage resources as a new cloud provider to other organisations Internal cloud offering Infrastructure-on-demand service for internal customers
Typical OpenStack Use Cases Service provider offering Internal cloud offering Re-sell compute, networking and storage resources as a new cloud provider to other organisations Infrastructure-on-demand service for internal customers Large-scale web applications or content farms Dynamically scale based on load e.g. Netflix, PayPal, ebay
OpenStack is not a replacement for enterprise virtualisation
OpenStack Release History July 2010 - Initial announcement October 2010 - Austin Release February 2011 - Bexar Release April 2011 - Cactus Release October 2011 - Diablo Release April 2012 - Essex Release October 2012 - Folsom Release April 2013 - Grizzly Release October 2013 - Havana Release April 2014 Icehouse Release
OpenStack Havana Statistics 13700+ code commits (+31% from Grizzly) 920+ individual contributors (+40% from Grizzly) 150+ organisations contributing (+54% from Grizzly) 400+ new features across all components OpenStack Foundation reports 300+ enterprises have adopted OpenStack as of October 2013 Two new major components fully integrated Ceilometer (Metering) Heat (Orchestration)
OpenStack Architecture
OpenStack Components Modular architecture Vast scale-out design Based on a (growing) set of core-components
OpenStack Keystone Keystone provides a common authentication and authorisation store for OpenStack Users, their roles and the tenant (project) they belong to Authentication is based on tokens 24-hour expiry by default Easily revoked if compromised Each OpenStack component uses Keystone to verify a users token It also provides a catalogue of all other OpenStack services
OpenStack Nova Core responsibility is to schedule and manage instances (think Amazon EC2) Supports multiple hypervisors VMware ESX (either direct to ESX or via vcenter) Xen KVM Microsoft Hyper-V Exposes an OpenStack API but also an EC2 compatible API
OpenStack Glance Mechanism for storing and retrieving disk images Supports many standard image types raw, qcow2, vmdk, vhd, iso, ami/aki, ovf With various storage options for the images Filesystem (Default) Swift (OpenStack Object Storage) S3 (Amazon's Simple Storage Service)
OpenStack Swift Mechanism for storing and retrieving arbitrary unstructured data (as objects) Entirely REST-ful HTTP API based, similar to Amazon S3 Highly fault tolerant Data replication (including geographically) Self-healing architecture Load-balancing with built-in proxy servers No single point of failure Doesn't require any specific hardware, purely scale-out.
OpenStack Neutron OpenStack's Networking-as-a-Service Component Implements Software Defined Networking (SDN) Rich plugin architecture which allows Neutron to abstract the underlying technology implementation away. Cisco UCS VMware Nicira Open vswitch etc.
OpenStack Cinder Provides block storage for runtime of instances Can be used for persistent or tiered storage Enables ability to do live migration of instances Similar to Amazon Elastic Block Storage (EBS) Support for many storage vendors platforms for offload Default implementation exposes LVM's over iscsi
OpenStack Heat Facilitates the deployment of 'Application Stacks' and all required dependencies Allows portability of applications between clouds in a predictable fashion Based on templates written in YAML Provides basic high availability and scalability via OpenStack Ceilometer Designed after (and compatible with) Amazon's CloudFormations Integrated into the OpenStack Dashboard (Horizon)
OpenStack Ceilometer Central collection of metering and monitoring data ultimate goal = billing/chargeback Allows identification of bottlenecks and capacity planning Based on both agents and message bus listening for statistics Exposes an API for consumption of metering data Completely extensible you choose what you want to meter, e.g. CPU time, bandwidth usage
OpenStack Horizon Self-service portal exposing end-user OpenStack functionality Web-based interface that utilises underlying API's Permits the creation and life-cycle management of Instances (including snapshots) Images Volumes Networks Has different views depending on whether the user is an administrator or not.
How do I get started? 30 Red Hat's upstream community supported OpenStack Distribution based on Havana. Supports Red Hat Enterprise Linux, Fedora, CentOS and Scientific Linux http://openstack.redhat.com
What's next? What can we expect in Icehouse? Four new projects set to 'incubator' status: Trove Database-as-a-Service (still considered incubating ) Ironic Nova bare-metal support Marconi Messaging service for OpenStack clouds Savannah Automated Hadoop on OpenStack More work on rolling upgrades e.g. version control TripleO - OpenStack on OpenStack Deploy and upgrade OpenStack, using OpenStack components Tuskar integration for datacenter deployments OpenStack Management API Define, model and deploy clouds based on resource classes Continually monitor the state of the cloud
Questions? :-)