Introduction to OpenStack

Soham Dutta
The Startup
Published in
11 min readOct 17, 2019

OpenStack is an open source platform, which offers powerful virtual servers and required services for cloud computing. It is mostly deployed as Infrastructure-as-a-service (IaaS), which aims to provide hardware tools and components for processing, storage, and networking resources throughout a data center.

OpenStack can be understood as a software platform that uses pooled virtual resources to build and manage clouds, both public and private ones.

By default, OpenStack offers a couple of cloud-related services like networking, storage, image services, identity, etc., and can be clubbed with a few more to get a customized cloud optimization to support the cloud-native apps.

We will look into the basic needs and necessities of OpenStack along with the tutorial to install and get started with OpenStack.

Why OpenStack?

First of all, let’s address the elephant in the room.

Why should we adopt OpenStack? How does it fit our requirements?

Here are a few reasons which answer our questions!

  • OpenStack is most importantly an open source environment that gives complete control over the cloud computation. Most of the platforms available in the market, which helps in virtualization and cloud computation, are all expensive and licensed.
  • OpenStack can be installed free of cost and can be customized with the required services to suit the need. Hence many corporations own their own version of OpenStack.
  • Moreover, it can be scaled to any extent possible, making the jobs of the server admins easier.
  • The OpenStack API is made robust and more flexible with improvements contributed by many developers across the world. This also ensures good community support.
  • Many big shot companies in the IT world like Huawei, Intel, Red Hat have adopted OpenStack on their cloud management.

Who is OpenStack for?

Well, most of us are unknowingly the users of OpenStack. Many cloud platforms have integrated OpenStack in their cloud toolkit by default. The OpenStack backend is ever growing with many companies joining in every day!

Terminologies in OpenStack

The important terminologies that are repeatedly used in the rest of the module are discussed below in brief. These terminologies are important components of OpenStack architecture.

By default, OpenStack has many different moving parts. Besides, because of the open-source nature of the OpenStack, many developers can contribute to the addition of new components for the personalized application. But to clarify, the OpenStack community has declared around 9 components to be an integral part of OpenStack. They are:

  • Nova: This is the fundamental computing engine of OpenStack. It manages a large number of Virtual machines and other instances, which handle computing tasks.
  • Swift: Swift is the storage system of OpenStack. It is used to store the objects and files. Instead of referring to the file and objects through the path, developers can instead refer to them through a unique identifier, which points to a file or piece of information and thereby allow the OpenStack to manage where to store the files. This reduces the effort of the developers to understand and worry about storage distribution. This also ensures that the data is being backed up, if in case of any failure of the machine or network loss.
  • Cinder: Cinder is known as the block storage component of OpenStack. This functions in a way, analogous to the traditional ways of locating and accessing specific locations on a disk or a drive.
  • Neutron: As the name suggests, Neutron is the component that enables networking in OpenStack. It ensures that each component within the OpenStack is well connected with other components, to establish good communication amongst them.
  • Horizon: Horizon is the dashboard of the OpenStack system. It provides all the possibilities for the system administrators to access and manage the cloud. This is the first component that everyone “sees” upon starting to use the OpenStack. Developers will be able to access and deal with all the components through the Application Programming Interface (API) also, while Horizon is the only place through which the system admins will be interacting with the OpenStack architecture.
  • Keystone: Keystone is the component that provides the identity services for all the users. It basically contains a central list of all the users of the OpenStack cloud, mapped to the accessible services of the OpenStack. It provides a way for multiple accesses by allowing the developers to map their existing user access methods to the Keystone.
  • Glance: Glance provides the image services in OpenStack, where images refer to the virtual copies of the hard disks. Glance helps in allocating these images to be used as templates while assigning new virtual machine instances.
  • Ceilometer: Ceilometer provides telemetry services to its users. It performs a close regulation of each user’s cloud components’ usage and provides a bill for the services used. Think of Ceilometer as a component to meter the usage and report the same to individual users.
  • Heat: Heat is that component of the OpenStack which allows developers to store the requirements of a cloud application in a file so that all the resources necessary for a program are available at hand. It thus provides an infrastructure to manage a cloud application. It is an orchestration instrument of OpenStack.

Getting started with OpenStack

OpenStack, being an open source engine, there are many ways in which you gain a trial experience using OpenStack. Two main ways through which you can experience the OpenStack environment easily are given below:

  • Sign up for a public cloud

Try the OpenStack Public cloud infrastructure available across the world by participating in public cloud programs from OpenStack. Use the following link to have a glimpse of OpenStack Public Cloud Passport Program. https://www.openstack.org/passport/

  • Local Dev Instance

Read here at https://medium.com/@soham.dutta.analyst/build-your-very-own-openstack-lab-in-minutes-8280433dfa6e

How to progress with OpenStack?

Since OpenStack is the free source available on the internet, open to all developers, finding an authentic link to look for updates becomes tedious. Considering this, Opensource.com is working incessantly to provide the latest updates on OpenStack, which gives the required guidelines to the developments in OpenStack.

OpenStack Architecture

The basic components that make up the architecture of OpenStack are:

Compute (Nova)

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.

Functionality

  • 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.

Networking (Neuron)

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.

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.

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.

Logical Architecture

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.

Image Source: openstack.org

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.

Owing to all these advantages of OpenStack, which count in the longer run, many companies have adopted it and have integrated into their back-end infrastructure. Some of the companies to mention are, AT&T, Ericsson, Huawei, and Intel.

How does OpenStack work?

Cloud mainly provides computing for the end users in a remote environment, where they deploy the software programs and run them, instead of a physical environment that has more limitation in terms of capabilities and storage. OpenStack is considered as an Infrastructure as a Service (IaaS), where it helps the users to easily add a new instance on which the cloud components can run. Basically, the infrastructure aims to provide a “platform” on which the developer can create and deploy software applications.

After understanding the layers of architecture, it is important to reconnect the dots and understand how OpenStack works!

Horizon is the face of the application environment. Everything a user needs to do should start with the Dashboard, which is called Horizon. It is a simple graphical user interface which has the divided modules that perform a specific action.

As we know, every action on OpenStack works as a service API call. Every API call is first authenticated by Keystone for the permission availability. So, before you access the dashboard of OpenStack, you will have to authenticate yourself as a registered user, through your login credentials.

Once you successfully log in, you will see your dashboard with options to create new image instances, cinder, volumes and to configure network details.

The image instances are basically the instances of your virtual machines or environments on which you will configure the cloud. They can be Ubuntu, CirrOS, RedHat, OpenSUSE, etc.

You can choose an instance and enter the details like the network configuration, etc. to create a new one. This instance can be connected to new cinder instance or volumes to include any extra services. Remember the creation of new image instance is also an API call.

Once an image is created, you can configure it and manage it through the CLI and add whatever data you want to add. You may even want to perform many extended operations on the instance created.

Any data computation performed on the cloud instance created will be stored along with its metadata in image architecture and other storage components and thus in the associated databases.

You can even configure an instance to store the snapshots, where the state of the disk at any moment will be stored for future reference. This provision is available in the dashboard.

How to find out which version of OpenStack I am using?

So, this is quite a common question, as many will not be able to find out the version of the OpenStack they are using. Here is a quick workaround for that:

  • Make an SSH request to your hosts
  • Run the following command

Command:

openstack --version

Similarly, you can query to get the versions of other components of your OpenStack too.

Commands:

nova-manage --version
cinder-manage --version
glance-manage –version

OpenStack vs. AWS

A comparison table for OpenStack vs AWS based on the services offered by both the software is given below. Take a quick look at these services and see if any of the features appeal to you.

Future Scope

The future scope of open stack is safe because OpenStack is widely used by businesses and organisations all across the world (HMRC, PayPal, Volkswagen, and CERN, to name a few) to build their own cloud storage. Presently you can see how has OpenStack improved in its recent incarnation.

“Longer-term, expect more development helping to further up the stack at the ‘developer’ and ‘user’ level. More and more enterprises and telcos are adopting OpenStack — and their demands cross the boundaries between ‘design for cloud’ and ‘infrastructure must be available’. OpenStack meets these demands but helps users improve the way they work by giving businesses a path to being less reliant on hardware, providing app resiliency, and stability.

Conclusion

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.

--

--