In our first OpenStack article we have explained what OpenStack is and already mentioned some of the central components of the open source cloud computing platform. In this article, we will now take a closer look at the function and structure of the central IaaS modules and explain how they work together.
How does OpenStack work?
OpenStack offers a flexible solution for quickly implementing and scaling public and private clouds of any size. For this purpose, OpenStack is divided into different components that solve individual tasks and interlock in a coordinated manner. Each component covers a specific area of an IaaS environment. Integration is achieved through application programming interfaces (APIs), which enable exchange between the components. Services can thus also be easily replaced by others with similar properties, but only if the form of communication is adhered to.
[mk_image src="/en/wp-content/uploads/2016/06/OpenStack_Infrastructure_Construction.png" image_width="900″ image_height="478″ crop="true" lightbox="false" frame_style="simple" target="_self" caption_location="inside-image" align="left" caption="© ScaleUp Technologies" margin_top="25″ margin_bottom="25″]
OpenStack has no proprietary hardware or software requirements. However, it cannot be installed directly on hardware. It requires an operating system that supports virtualization in the background. Fortunately, OpenStack is supported by various operating systems and manufacturers.
OpenStack compatible Linux distributions:
- Redhat Enterprise Linux
- SuSE Linux
- CentOS Linux
- KVM (full support)
- Microsoft Hyper-V
- a.o. (also: baremetal, Docker, LXC)
OpenStack can also be installed on a single PC/server for testing (so-called single-node setup). This enables easy evaluation and testing of initial setups.
Central components of OpenStack are:
(Dashboard) - Horizon provides a modular, web-based user interface for end users and an administrator interface to other services. Most cloud operations can be performed through Horizon, such as creating instances, assigning IP addresses, and granting permissions.
(Identity) - Keystone is a central component for authentication and authorization within all OpenStack services. Keystone manages API requests and provides configurable catalog, policy, token, and identity services for a given cloud. Users can be assigned to specific groups, as well as tenants, demarcated projects, and given individual rights. Rights can also be assigned at the group level.
(Compute) - Nova is the compute project in OpenStack and combines almost all services responsible for managing cloud instances. The services include organization services, which process tasks and distribute new instances to existing systems, and virtualization services and interfaces, which handle communication with the hypervisor. Nova is one of the most widespread and, due to its large scope of functions, one of the more complex OpenStack projects.
(Images) - Glance provides a catalog and repository for disk/server images and their metadata. An image is the basis for a virtual instance in Openstack. It contains an image of a fully installed operating system. Images are stored in object-based storage "Swift" or other storage locations (Ceph rdb, Amazon S3, etc.). If a new instance is started via the Nova compute service, it accesses the available base image via the Glance API and copies it to the compute node to be executed.
(Networks) - Neutron provides virtual network connections as a service between devices managed by other OpenStack services - mainly Nova virtual machines. Neutron allows users to create their own networks, edit their structure and connect them to selected devices (e.g. routers or network interfaces). Neutron has a very open structure and supports many well-known "software defined networking" (SDN) vendors and network control technologies.
(Block Storage) - Cinder provides persistent storage in the form of volumes for virtual machines (VMs) hosted in the cloud. Volumes can be allocated to a virtual instance at startup and on the fly. The additional storage can increase storage performance and speed. Storage volumes and status information are stored in a database.
(Object Storage) - Swift provides distributed, object-based storage. What does this mean or what is an object? An object is a storage unit that contains data that can be read or deleted after it is created. However, it is no longer possible to change the data. The objects are also not arranged in a hierarchy as known from normally used files. Instead, all objects exist side by side on the same level in a horizontal address space (storage pool). They are characterized by their extended metadata. Object storage is therefore not a file system in the sense, but rather a container that can store files and retrieve them at a later time via a unique identifier.
Other noteworthy projects:
Ceilometer (Telemetry/ Metering & Monitoring)
Trove (Database as a Service)
Ironic (Bare Metal Provisioning)
To function as a complete cloud operating system, an OpenStack solution requires a number of infrastructure management components. Building on the Operational Infrastructure, these are integrated via the OpenStack Dashboard Horizon and OpenStack Cloud APIs through further clients and support functions (e.g. Ceilometer for metering and billing). In addition to the projects actively developed by the OpenStack community, there are other components such as MySQL / MariaDB and the RabbitMQ messaging service that are not part of OpenStack itself, but may be necessary or useful for running an OpenStack environment.