Details of the Nova component in OpenStack

  • 2020-05-24 06:35:56
  • OfStack

Open Stack Compute Infrastructure (Nova)

Nova is the computing organization controller in the OpenStack cloud. All activities that support the OpenStack cloud instance (instances) lifecycle are handled by Nova. This makes Nova a platform for managing computing resources, networking, authentication, and required scalability. However, Nova does not provide any virtualization capabilities on its own; instead, it USES libvirt API to interact with the supported Hypervisors. Nova provides external services through one web services API that is compatible with Amazon Web Services (AWS) EC2 API.

Functions and features:

Instance lifecycle management
Manage computing resources
Network and certification management
REST style API
Asynchronous 1 - directional communication
Hypervisor transparency: Xen,XenServer/XCP, KVM, UML, VMware vSphere and Hyper-V are supported

The composition of OpenStack calculation:

The Nova cloud architecture includes the following key components:

API Server (nova-api)
Message Queue (rabbit-mq server)
Compute Workers (nova-compute)
Network Controller (nova-network)
Volume Worker (nova-volume)
Scheduler (nova-scheduler)

API Server (nova-api)

API Server provides an external interface to the cloud infrastructure and is the only external component that can be used to manage the infrastructure. Management is implemented using EC2 API via the web services call. API Server then takes turns communicating with related components of the cloud infrastructure via message queues (Message Queue). As an alternative to EC2 API, OpenStack also offers an "OpenStack API" for internal use.

Message Queue (Rabbit MQ Server)

Communication between OpenStack nodes is done using AMQP (Advanced Message Queue Protocol) via message queues. Nova requests the response through an asynchronous call, which is triggered when the response is received using the callback function. Because of the use of asynchronous communication, there is no longer a user stuck in a waiting state. This is valid because many API calls require time-consuming behavior, such as loading an instance or uploading an image.

Compute Worker (nova-compute)

Compute Worker handles managing the instance lifecycle. They receive requests for instance lifecycle management through Message Queue and take on the operational work. There are 1 compute workers in a cloud deployment in a typical production environment. Which available compute worker one instance is deployed on depends on the scheduling algorithm.

Network Controller (nova-network)

Network Controller handles host ground network configuration. It includes IP address assignment, configuring VLAN for projects, implementing security groups, and configuring the network of compute nodes.

Volume Workers (nova-volume)

Volume Workers is used to manage instance volumes based on LVM (Logical Volume Manager). Volume Workers has volume related functions, such as creating new volumes, deleting volumes, attaching volumes for instances, and separating volumes for instances. The volume provides a persistent store for the instance because the root partition is non-persistent and any changes made to it when the instance terminates are lost. When a volume is separated from the instance or the instance terminates (the volume is attached to the terminated instance), the volume retains the data stored on it. When the volume is reattached to the same instance or attached to a different instance, the data can still be accessed.

Important data for an instance is almost always written on the volume to ensure access at a later date. This typical use of storage requires support for services such as databases.

Scheduler (nova - scheduler)

The scheduler Scheduler maps the nova-API call to the OpenStack component. The scheduler runs as a daemon called nova-schedule and obtains a computing service from the available resource pool through the appropriate scheduling algorithm. Scheduler makes scheduling decisions based on things like load, memory, physical distance of available domains, CPU architecture, and so on. nova scheduler implements a pluggable structure.

Currently, nova-scheduler implements some basic scheduling algorithms:

Random algorithm: computes the host to randomly select in all available domains

Available domain algorithm: similar to a random algorithm, but the computational host randomly selects within the specified available domain.

Simple algorithm: this method selects the host running instance with minimal load. Load information is available through the load balancer.

Related articles: