Cloud Platform for Networking: OpenStack
OpenStack is a cloud operating system for managing data center computing, storage, networking, etc., which can be used to create public and private cloud [8]. It is expected to establish an open standard for cloud computing platform to provide the companies with the solution of infrastructure as a service (IAAS). Currently, hundreds of organizations contribute to its source code, and the open source community is completely transparent management, design, and development, and the underlying provide the upper application with computing, storage, and network resources through open API. OpenStack is mainly programmed by Python, 6 and its architecture is designed with a completely decoupled modularized ideas. Therefore, OpenStack has a very good openness and compatibility.
OpenStack consists of the following five components:
- Keystone provides authentication service.
- Nova provides computing service.
- Swift provides storage service.
- Glance provides image service.
- Horizon provides dashboard service.
Especially, Horizon is a Python-based Web framework developed by Django for visually managing OpenStack platform. Nova is the computing controller of OpenStack that it allocates on-demand VM according to the user’s requests and manages the virtual computing resource allocation and scheduling, which is the component for manage the allocation and scheduling of VM. In OpenStack, Nova processes the scheduling from VM creation to termination of the life cycle. Actually, the VM isn’t operated by Nova directly, but processed by the underlying operating system Hypervisors through libvirt 8 API [3].
As shown in Fig. 3.5, Nova consisting of the following modules, provides the user with APIs to operate and manage VMs, while the cloud infrastructure must be managed through Nova-API.
- Message Queue is the communication module between each node in OpenStack, which is mainly based on Advanced Message Queue Protocol (AMQP). Since major operations of Nova are very time-consuming, in order to reduce the user response time, Nova responses the use’s request asynchronously through callbacks.
- Nova-Compute is used to manage the life cycle of the instance, which is often a VM. After receiving the request to create or terminate a VM, Nova-Compute process it through libvirt API and then return the results by the message queue.
- Nova-Network provides the VM with network connection services that the intra and inter network communications of the VMs are processed by this module. Specifically, Nova-Network is mainly in charge of assigning IP address to the VM, Virtual Local Area Network (VLAN) and security groups configuration, etc.
- Nova-Volume provides the VM with persistent storage, which is a very important for the computing devices and can greatly reduce the losses caused by power outages, downtime, and system-level failure.
- Nova-Scheduler is a daemon starting at the initiation of the cloud platform. When Nova receives the request to create a VM, Nova-Scheduler needs to decide which computing node should be used to create the VM. When the VM needs to be migrated, Nova-Scheduler manages the VM migration and resource redistribution. The VM migration is a very complex process that Nova-Scheduler needs to avoid wasting computing resources and ensure the cloud platform overall performance is not decreased during the VM migration, i.e., sleeping the idle hosts to save energy consumption.
Keystone provides the authentication service including authentication and service token management. User can’t access to the computing resources in the cloud or operates services without the identification and permission of OpenStack. When the users provide their authentication information to the OpenStack, which is generally the user name and password, Keystone verifies them according to their identity information in the database. If valid, Keystone will return to the user with a Token, which can be used as the authentication to send the request to OpenStack.
Swift provides OpenStack with distributed storage for virtual object, which can be used to create scalable and redundant object store. The architecture of Swift is symmetrical that each storage node has a very high data persistence and is exactly the same as others. Due to the symmetrical architecture, it is easy to expand the capacity just by adding nodes, and there is no master–slave configuration dependence or single node failure. Swift is completely different from Nova-Volume, which provides the VM with persistent storage. In short, the storage provided by Nova-Volume is similar to the hard disk, while Swift based on a distributed approach mainly supports massive object storage and provides the VM and cloud applications with data containers, secure storage, data backup, etc.
Glance is used to store and retrieve the VM image. When OpenStack creates a VM, it is available to retrieve the VM image by Glance and regenerate the original VM via the copy or snapshot of its image. Furthermore, Glance provides the standard REST interface to query the image information stored on the different devices.