May 23, 2023

Cinder Architecture Overview

#openstack

Table of Contents

  • Openstack Architecture Overview
  • Devstack
  • Cinder System Architecture

Openstack Architecture Overview

 

 

OpenStack is an open-source software platform for cloud computing that is primarily deployed as an Infrastructure-as-a-Service (IaaS). The architecture of OpenStack is modular, with different components or services for different tasks, all interacting through a common API.

Here are the main components in OpenStack architecture:

  • Nova - The primary computing engine behind OpenStack, it is used for deploying and managing large numbers of virtual machines and other instances.
  • Cinder - Block storage system, providing volumes to Nova VMs, based on storage platforms such as LVM, Ceph, NetApp, etc.
  • Neutron - The networking component of OpenStack that provides 'network connectivity as a service' between interface devices managed by other OpenStack services (such as Nova).
  • Horizon - The only graphical interface to OpenStack. It provides administrators and users a graphical interface to access, provision and automate cloud-based resources.
  • Keystone - Keystone provides identity services for OpenStack. It is essentially a central list of all of the users of the OpenStack cloud, mapped against all of the services provided by the cloud, which they have permission to use.
  • Glance - Provides image services to OpenStack. In this case, "images" refers to images (or virtual copies) of hard disks. Glance allows these images to be used as a template when deploying new virtual machine instances.
  • Heat - The orchestration component of OpenStack, which allows developers to store the requirements of a cloud application in a file, and then use the file to create and manage all the necessary resources.

The modular architecture of OpenStack allows a user to interface with these services separately, depending on their needs, while the common API ensures the different components can interact and work together smoothly.

🚀 Remember that in a typical OpenStack deployment, these components would likely be distributed across multiple machines, rather than all running on a single machine. However, there’s a tool for developers that need a single node deployment: Devstack.

 

Devstack

DevStack is a set of scripts and utilities to quickly deploy an OpenStack cloud from git source trees. It is often used for development and testing purposes as it allows developers to interact with OpenStack's latest code in a relatively easy way. DevStack's mission is to provide and maintain tools used for the installation of the central projects of OpenStack, and to provide scripts and documentation for developers to quickly create a complete development environment.

DevStack may be used to run an OpenStack cloud on a single machine (for example a laptop, or a server), where all the various components of OpenStack are installed and run on the same machine.

🚀 Keep in mind that DevStack is not intended for creating production environments. The security, scalability, and other operational aspects that are crucial for a production cloud are not part of the DevStack setup. It is primarily meant for development, testing, and demonstration purposes.

 

Cinder System Architecture

 

 

Cinder is the block storage component of OpenStack. It allows OpenStack to present storage devices to end-user instances, similar to how Amazon Web Services provides EBS volumes. Cinder itself is made up of several key services which work together to provide the block storage capability in an OpenStack environment.

Here is an overview of Cinder's services:

  • c-api (Cinder API): The c-api service provides the API endpoints for all the Cinder services. This is the service that external users and services interact with. It processes and validates requests, then sends them to the c-sch (scheduler) service for further action.
  • c-sch (Cinder Scheduler): The c-sch service takes the validated request from the c-api service and decides where to fulfill that request based on the current state of the Cinder services. This service can make decisions based on a variety of factors, including current load, location, storage space available, etc. It's the brain that ensures resources are used efficiently in the storage system.
  • c-vol (Cinder Volume): The c-vol service is responsible for managing the actual block storage devices. It carries out the instructions given by the c-sch service, such as creating a new block storage device, attaching a device to an instance, deleting a device, etc. It interacts with the physical infrastructure (storage devices) of the cloud.
  • c-bak (Cinder Backup): The c-bak service is responsible for managing backups of the block storage devices. It can create, restore, and manage backups of volumes.

These services are decoupled and communicate with each other using a message queue (RabbitMQ is commonly used), which means they can be scaled independently. This architecture enables the system to be very flexible and scalable, and to easily incorporate a wide variety of backend storage devices.

 

Links

https://docs.openstack.org/cinder/latest/contributor/architecture.html

OpenStack Basics - An overview for the Absolute Beginner