OPENSTACK
What is OpenStack?
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.
Why OpenStack?
Here are a few reasons which answer our questions!
● OpenStack is most importantly an open-source environment that gives complete
control over 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 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 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 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 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 identity services for all 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 that 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 link to have a glimpse of the OpenStack
Public Cloud Passport Program.
● Local Dev Instance
OpenStack can be explored on the Local Dev with the help of DevStack. Devstack intends to
provide tools for the installation of the core Openstack. Devstack can be installed and run on
the virtual machine, besides on the normal OS. This is suited well for the users, who are
willing to explore the features of the dashboard of what the admin cloud stack looks like.
You can get more information On DevStack
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,
[Link] is working incessantly to provide the latest updates on OpenStack,
which gives the required guidelines to the developments in OpenStack.
● Besides this, there are many other sources available, which keep the recent updates
on OpenStack posted. Mindmajix is one of the best sources for it.
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 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 computer 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 Glance 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 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.
Image
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.
● 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, an AMQP (Advanced Message
Queuing Protocol) 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.