Last updated on 27th Sep 2020, Blog, Tutorials
OpenStack is a software for building and managing cloud-computing platforms for public and private clouds. Openstack has one of the biggest communities. It is managed by the OpenStack Foundation, a non-profit organization that oversees both development and community building. Its official webpage is – https://www.openstack.org/.
OpenStack is a free and open-source software that facilitates a cloud computing platform to build and manage both the public and private clouds infrastructure, i.e., referred to as the future of Cloud Computing. It works by creating multiple virtual machines so that the use of physical resources can be minimized.
OpenStack is managed by one of the biggest communities: OpenStack Foundation as a non-profit organization that oversees both development and community.
Objective: To deliver solutions for all types of clouds by being simple to implement, massively scalable, and feature rich.
Core Principles of OpenStack
Open Source: OpenStack is coded and released under the Apache 2.0 License and permits the community to use it freely.
Open Design: For the upcoming release, the development community holds a Design Summit Every six months.
Open Development: The developers maintain a publicly available source code repository through the entig100s of projects including the Ubuntu Linux distribution.
Open Community: OpenStack goals to produce a healthy, vibrant development and user community under the process of open and transparent documentation.
OpenStack is designed with flexible configurations to run on industry-standard hardware.
- x86 Server (Hardware Virt.recommended)
- Storage flexible (Local, SAN, NAS)
- x86 Server (other architectures possible)
- Do not deploy with RAID (Controller can be used for cache)
Uses of OpenStack
- For resource a.1. Computing, storage, and networking available on physical infrastructure such as in a data-center facility.
- To deploy virtual machines and other instances that handle different tasks for managing a cloud environment.
History of OpenStack
In July 2010, an IT company called Rackspace having collaboration with NASA designed an emerged system called Nebula further formed as an open-source Cloud Computing Platform to meet the needs of public and private clouds regardless of size by being simple to implement, massively scalable known as OpenStack. After six years OpenStack is managed by the OpenStack Foundation to promote its software and its community.
The basic components that make up the architecture of OpenStack are:
Compute is one of the most important and mandatory components of OpenStack. It is basically a virtualization hypervisor. In a cloud computing environment, it acts as a controller, which manages all the resources in a virtual environment. It is also used to manage the high-performance bare metal configurations.
It is coded in Python and has utilized many pre-defined libraries to deliver robust functioning. The hypervisor technologies that might be used are Xen, KVM, and VMware and this selection, depends on the version of OpenStack used. SQL is used for database access.
The above picture dissects the compute and the explanation of the picture is given below.
Subscribe For Free Demo[contact-form-7 404 "Not Found"]
- The nova-api handles the requests and responses from and to the end user.
- The nova-compute creates and destroys the instances as and when a request is made.
- Nova-scheduler schedules the tasks to the nova-compute
- The glace registry stores the details of the image along with its metadata.
- The Image store, stores the images predefined by the admin/user.
- The nova-network ensures the network connectivity and routing.
This is responsible for establishing a neuron structure between the components for better connectivity. It manages all the networking related functionalities of the architecture as a whole. Starting from assigning and managing the IP addresses of the nodes to managing and implementing routing, it constitutes all.
The instances of the virtual machines or the disk image are stored as images in the image storage Glance.
4.Object Storage (Swift)
This is the mountable storage unit of the architecture. It helps in data replication across the data center. The files and objects can be copied to multiple units with the help of this unit. The object storage units are replicated with every new server addition. It also stores the replicate content from all the active nodes and makes it available to the new clusters, ensuring a backup in case of any hardware failure or server loss.
5.Block Storage (Cinder)
Block Storage provides persistent level storage facilities for cloud-oriented computing devices. It helps in the creation, addition, and removal of the new block devices in the server. It provides complete integration with the OpenStack, reducing the use of extraneous hardware components. It can be accessed and instructed using CLI or web-based services. Linux based systems can go with Cloudbyte, EMC, Coraid, SAN Storage, etc.
Understanding the logical architecture, besides the basic structural architecture, is essential to design, deploy and configure OpenStack.
OpenStack is made of all distinct Services. Each of these services is internally configured to have one API service. Each API service is always looking for API requests and these requests when obtained are preprocessed and passed on to the other parts of the service.
The diagram below has shown a pictorial representation of the Logical Architecture in OpenStack.
All services are authenticated through the one Identity Service (Keystone). Individual services generally interact with each other through the public APIs, except for few, which require admin privileges.
For the inter-process communication within a service, AMQP message broker is used. The state of service will be stored and updated in the database.
When you are configuring your OpenStack cloud, you can choose the message broker and the database solution from a list of products/solutions available from the market, such as RabbitMQ, MySQL, MariaDB, and SQLite.
OpenStack can be accessed on web User Interface through CLI or through API calls using tools like curl or other plug-ins. Ultimately, all these REST API calls will issue access to the OpenStack services.
Who is OpenStack for? (Extended)
The idea of OpenStack can be better appreciated when we treat it as an environment than as a mere product.
OpenStack is a generic infrastructure that is built to handle many possibilities on cloud, based on the need. The companies are free to plug into and make necessary changes to shape the environment to their need.
It is also very efficient to handle both public and private clouds with a common infrastructure, cutting down the dependency on two different environments to handle private and public clouds.
For an end user, the advantage of using OpenStack lies in the following points
- The average cost and complexity of supporting a generic infrastructure are low by definition, than supporting a large diversity of infrastructures which don’t share a common ground.
- As many big shot companies and independent developers are constantly contributing to make OpenStack a better environment, it is more reliable to switch to, than those of independent vendors.
- When talking about a company, managing both private and public clouds separately costs heavily in terms of the labor, infrastructure investment, customizing capacity of the specific infrastructure along with the added risk. OpenStack, on the other hand, has grown to support private and public clouds more efficiently than any other competitor in the market. Moreover, it is always easier to manage one single environment than two different ones.
OpenStack is designed by using the modular architecture components as follows:
1.Horizon- OpenStack Dashboard:
Horizon is the dashboard of OpenStack and the only graphical interface (web UI) that provides a web interface for all OpenStack services including Nova, Swift, and Keystone, etc.
2.Nova- OpenStack Compute
Nova is a cloud computing fabric controller designed to manage and automate pools of computer resources. It is a distributed component interacts with keystones for authentication, glances to capture images, and communications with the web interfaces horizon.
3.Neutron- OpenStack Network
Neutron manages the virtual network infrastructure and IP addresses. It provides the network capability.
4.Swift – OpenStack Object storage
It is a scalable, redundant storage system for objects and files.
5.Cinder – OpenStack Block Storage
Cinder is a block storage service that provides persistent block level storage devices for use with OpenStack compute instances and organizes volume storage management for virtual machines.
6.Keystone – OpenStack Identity
This component provides a centralized identity and acts as a common authentication system across the cloud operating system. Keystone supports multiple authorization services that include a standard username and password credentials and also provides token-based systems, AWS logins.
7.Glance – OpenStack image
Glance is a registry or container of virtual machine images that provides image services to the OpenStack.
8.Ceilometer – OpenStack Telemetry (Metering and Monitoring)
Ceilometer serves the monitoring resources on the OpenStack for monitoring and metering the data. Using Ceilometer, the administrator can create customer billing across all current and future OpenStack components.
Heat – OpenStack Orchestration
Heat is a service used to orchestrate/compile/collaborate multiple composite cloud applications using templates, through both an OpenStack-native REST API and Cloud Formation- compatible Query API.
10.Trove – OpenStack Database
Trove is the OpenStack database designed to run entirely on OpenStack and to provide the quick and easy utilization of relational database features without the burden of handling complex administrative tasks.
Benefits of OpenStack
OpenStack is a modern, robust cloud computing solution used by many large enterprises such as eBay, PayPal, Yahoo, etc. and provides a large voluminous benefit to all kinds of business (small to mid-scale business or even very large enterprises) to run their Infrastructure as a Service (IaaS) cloud platform. Some of those top five benefits are as follows:
OpenStack provides outstanding security features to the users as it keeps the data always secure without any fear of loss if the business owner wants to move his IT infrastructure to the cloud. Behind this strong security feature, there is a team of security experts to strengthen security by finding and fixing the security issues and security holes in the OpenStack software.
Being Open-Source, OpenStack is the favorite cloud software of the developers and entrepreneurs.
Its Source Code can be found atwww.github.com/openstack/.
OpenStack is the flexible software by which the developers can modify it according to their growing needs by adding extra features. It is free of cost without any restrictions as can be used anywhere, in any way, for any purpose, and how long.
OpenStack development support from the reputed organizations (Intel, IBM, AT&T, Cisco, Red Hat, Dell, Ubuntu, and so on) that improves leaps and bounds. The community of top developers of IT industry also supports OpenStack by working hard for its enhancement and make it better by giving efforts constantly.
4.An Array of Services:
OpenStack is on a growth of services (Horizon for managing the dashboard, Nova for computing, Neutron for networking, Cinder for storage, and many as discussed above) that meet the needs of public and private clouds.
Easy to Access and manage
It is easy to access and manage in different manners as can be used by using command-line tools, can be managed by the RESTful APIs, and also the administrator can easily access and manage the various aspects of GUI-based Dashboard.
OpenStack is used to deploy virtual machines and other instances that handle different tasks for managing a cloud environment. OpenStack is considered as – Infrastructure as a Service (IaaS). Based on Openstack, please see the following schematic illustration, which describes how it is managed.
Openstack platform is managed by a web UI dashboard. It comprises of nine Core key components.
These key concepts are described in detail as follows −
- Nova is a computing engine. It is used for deploying and managing large numbers of virtual machines.
- Swift is a storage system for objects and files.
- Cinder is a block storage component. It accesses specific locations on a disk drive.
- Neutron provides the networking capability.
- Horizon is the dashboard of Openstack. It is the only graphical interface (WEB UI).
- Keystone provides identity services. It is essentially a central list of all the users.
- Glance provides image services to OpenStack. In this case, “images” refers to images (or virtual copies) of hard disks.
- Ceilometer provides telemetry services, which allow the cloud to provide billing services to individual users of the cloud.
- Heat allows developers to store the requirements of a cloud application in a file that defines what resources are necessary for that application.
The release versions of Openstack are explained in the following illustration.
As Openstack is an open source platform, there are many ways to install and deploy it through different software distributions. Each one of them adds their own value to the cloud operating system.
For a new system administrator, who wants to play with Openstack will get pre-installed ISO images of the Openstack platform. They can be downloaded from the following link https://docs.openstack.org/image-guide/obtain-images.html
To install them manually, the main distributors are −
- Ubuntu − https://www.ubuntu.com/cloud/openstack
- Red Hat − https://www.rdoproject.org/
- Suse − https://www.suse.com/products/suse-openstack-cloud/
We must understand that Openstack is for enterprise environment and to install it we should have the following hardware requirements.
The installation requirements for Openstack are as follows −
1. A minimum of 5 machines with the following roles −
- 1 machine for the MAAS server.
- 1 machine for the Autopilot.
- 3 or more machines for the cloud −
- At least one must have 2 NICs.
- At least 3 must have 2 disks.
2. A dedicated switch to create a private cloud LAN.
3. Internet access through a router on that LAN.
For this laboratory, we have a virtual machine and we will install Devstack. It is designed for installation on a single laptop, PC or VM. It includes the raw upstream code for development evaluation. It is supported on −
- Ubuntu 14.04/16.04
- Fedora 23/24
- CentOS/RHEL 7
- Debian and
The link for this version is – https://docs.openstack.org/devstack/latest/#install-linux
Get JOB Oriented OpenStack Training from Real Time Experts
- Instructor-led Sessions
- Real-life Case Studies
Installing Openstack on Ubuntu 14.04
For installing Openstack on Ubuntu 14.04, we should follow the steps given below.
Step 1 − Download the installation script from the following link – https://git.openstack.org/cgit/openstack-dev/devstack
Use this command –
- git clone https://git.openstack.org/openstack-dev/devstack
Step 2 − Browse the folder Devstack by keying in the following command – $ cddevstack.
Step 3 − Execute the file stack.sh with the following command ./stack.sh and installation process will continue as shown below −
Step 4 − Enter your password.
Step 5 − Now it will take about 15-20 minutes to finish the installation process, while it downloads and installs all the libraries.
Step 6 − At the end of the installation, we will see the IP of the host, URL for managing it, username and password to administrate it.
Step 7 − To sign in, you have to type in the browser: Host IP, username and password that we entered during the installation.
Step 8 − In the main dashboard, you will see “Instances” overview.
Step 9 − To create new instances or in simple words to create Virtual machines click on “Instances”.
Step 10 − Click on “Launch Instances”.
Step 11 − Fill in all the fields as shown below.
Step 12 − We will see the instance created as shown in the following screenshot.
Job Opportunities for OpenStack
The opportunities for OpenStack developers and technical consultants are on a boom. The available roles in the market on OpenStack extend from an OpenStack engineer, developer, technical consultant, VMware Engineer with expertise in OpenStack, OpenStack neutron architect, etc. to Python developer with automation.
Any expertise in OpenStack is welcomed by the IT industry, at present.
The average salary for an OpenStack developer ranges from $63000-$125000 in the US.
The IT sector is seeing a spectrum shift to complete cloud infrastructure for a decade now. The endless possibilities of cloud computing which encompass the unlimited storage capacity to less cost of infrastructure make it the first choice when it comes to handling the big data.
A generic environment which can be customized easily to meet the specific demands makes the OpenStack the favorite choice for many companies across the industry. The open-source nature and incredible community support extend its applications. The future calls for such a robust environment and the OpenStack is going to continue its legacy for being the free infrastructure with some great features suited for the long run.
OpenStack is the one of the best cloud computing environments in the market. The databases of many top-notch companies have integrated the OpenStack in their back-end. The ease of linear scalability and open-source nature has attracted many customers and technology enthusiasts to come forward and contribute to the development. This has made the OpenStack, only better with the years. Seeing all the advantages and endless scalable features, OpenStack can be considered for cloud computation as it proves to be an affordable solution for the longer run.
Are you looking training with Right Jobs?Contact Us
- DevOps Tutorial
- Microsoft Azure Tutorial
- AWS Tutorial
- VMware Tutorial
- OpenStack Interview Questions and Answers
- What is Dimension Reduction? | Know the techniques
- Difference between Data Lake vs Data Warehouse: A Complete Guide For Beginners with Best Practices
- What is Dimension Reduction? | Know the techniques
- What does the Yield keyword do and How to use Yield in python ? [ OverView ]
- Agile Sprint Planning | Everything You Need to Know