Understanding OpenStack

Cloud computing is a buzzword today in the Information Technology (IT) industry. It is a technology wherein the computing resources—hardware and software, are pooled together into a remote repository (a cloud) and offered as a service to users located worldwide. The benefits of cloud computing have been compelling many organizations to move onto or adopt it. A cloud can be deployed in various ways: Infrastructure as a service (IaaS), Platform as a service (PaaS), Software as a service (SaaS) etc. Deployment of a cloud is no more a complex task with the tools like OpenNebula, Eucalyptus, Microsoft Azure, VMware vsphere, OpenStack etc. Here we will learn about OpenStack.

What is OpenStack?

OpenStack is an open source set of tools to deploy a cloud. Managed by Open Stack foundation, it is a software which we can use to build Infrastructure as a Service (IaaS) platforms—public as well as a private cloud. It helps to deploy interoperable cloud services like Virtual Machine (VM) and other instances, book more storage space, restart or re-image servers, read and write files to storage, create cloud applications etc. This helps to avoid vendor lock-in, enabling easy horizontal scaling of services (Adding and removing instances instantly). The software also displays all the components like multi-vendor hardware and networking resources in a cloud.
Users can manage OpenStack based cloud through a web-based dashboard, command-line or RESTful web services.
(The following depiction is of OpenStack Dashboard)
Instances and Volumes

How has it evolved?

Initially, in 2010 it began as a project between the NASA and a private company. The project is now patronized and used by many organizations and its large community of users. Due to its large user base who can contribute to the open source OpenStack, it is regularly updated with new components. CloudStack, Eucalyptus, AWS etc. are competitors of OpenStack.

Where can OpenStack be used?

OpenStack is cloud management tool. It can be used to establish a new cloud and manage it. It is used by cloud service providers (CSP) in their data center. Organizations can also use it to manage their private cloud. It can be used in software development and testing. Virtualization is achieved by OpenStack.

How is the architecture of OpenStack?

The dashboard displays all the resources in the deployed cloud. We use various components (their API) to create instances. You can also use the OpenStack command-line client on Linux and macOS to execute commands that make API calls.
Common Network

What are the components of OpenStack?

OpenStack has about 24 components or tools that are helpful in implementing a cloud. However, only the following components are the important ones.
Note: These can be used from the software GUI. Each component has its own command line client as well, so you can use those components by firing commands in their respective command line client.

  • Nova. It is a computing engine that is used to create, delete or suspend a VM (an instance). You can use the following commands in its command line client to (We will illustrate commands fired in RHEL):
    Install the command line client packageImage 3List instances to get the server nameImage 4

    Use the server <wakefieldserver> to create a snapshot

    Image 5

    Get details of your image to check its status

    Image 6

    To launch an instance from your image (image ID, flavour ID, and network ID)

    Image 7

  • Swift. It is a storage system for objects and files. You can create new objects and files in a container, delete them from a container and even manipulate the container itself. The Objects and files are made redundant- they are written onto multiple disk drives on different servers. OpenStack ensures data redundancy and integrity across a cluster. If files or the objects are accidentally lost due to the server or hard drive failure, OpenStack automatically recovers its content from other nodes in the cluster. Swift eases the scaling of resources. Apart from accessing swift from OpenStack GUI, you can use it by firing the following basic commands in its command line client to:Install the command line client packageimage 8Create a containerimage 9

    List all containers

    Image 10

    Enable the user <username> to read [write] objects in the container. Users have roles on accounts. You can set access control lists (ACLs) at the container level and support lists for read and write access.

    Image 11

    Upload an object to a container

    Image 12

    Download an object from a container

    Image 13

    Check the status of the object

    Image 14

  • Cinder. It is a block storage system which lets us create, attach or detach block-level storage devices (volumes) to instances. Use the following basic commands in cinder’s command line client to:Install the cinder’s command line client packageImage 15Migrate a volume. Note that, the volume is not to be in use and it shouldn’t have snapshots.

    Image 16

    Create a <new_volume>

    Image 17

    Attach a volume to an instance. Use nova

    Image 18

    Resize a volume.

    Image 19

    Delete a volume.

    Image 20

  • Neutron. It is a system for network configuration and management in cloud deployment. Following are some basic commands to use Neutron efficiently.Install the neutron’s command line client packageInstall the neutron’s command line client packageImage 21Create a networkImage 22

    Create a subnet

    Image 23

    Create a router

    Image 24

    Create a port with specific IP address

    Image 25

Ajinkya Dubey

Ajinkya Dubey

Jr. Technical Associate at ESDS Software Solutions Pvt. Ltd.
Ajinkya is an avid reader interested in writing about and exploring topics like cloud computing, data science, machine learning, IoT, business intelligence and others. He believes in continuous knowledge enhancement and loves history and poetry too!
Ajinkya Dubey