Nova – Compute
Probably the most known among the projects, it provides virtual servers upon demand. Nova is the most complicated and distributed component of OpenStack. A large number of processes cooperate to turn end user API requests into running virtual machines.
These are the Nova components and their functions:
- nova-api : a RESTful API web service which accepts incoming commands to interact with the OpenStack cloud
- nova-compute: a worker daemon which creates and terminates virtual machine instances via Hypervisor’s APIs
- nova-scheduler: takes a request from the queue and determines which compute server host it should run on
- nova-conductor: provides services for nova-compute, such as completing database updates and handling long-running tasks
- nova database: stores most of the build-times and run-time states for a cloud infrastructure
- The queue provides a central hub for passing messages between daemons. This is usually implemented with RabbitMQ
- Nova also provides console services to allow end users to access their virtual instances console through a proxy. This involves several daemons (nova-console, nova-novncproxy and nova-consoleauth)
- nova-network : a worker daemon very similar to nova-compute. It accepts networking tasks from the queue and then performs tasks to manipulate the network (such as setting up bridging interfaces or changing iptables rules). This functionality is being migrated to Neutron, a separate OpenStack service
- nova-volume : Manages creation, attaching and detaching of persistent volumes to compute instances. This functionality is being migrated to Cinder, a separate OpenStack service.
Nova also interacts with many other OpenStack services: Keystone for authentication, Glance for images and Horizon for the web interface. The Glance interactions are central to OpenStack. The API process can upload and query Glance while nova-compute will download images for launching images.
Historically, most OpenStack development is done with the most community supported KVM: this allows you to refer to Internet forums to find help on your issues. All the features that are currently supported in KVM are also supported in QEMU.
Microsoft Hyper-V and VMware ESXi too are gaining much support, with Hyper-V now being available with a free license. ESXi can also be used with a free license however API support is limited to READ ONLY without vCenter or an Enterprise license.
Nova has support for XenServer and XCP through the XenAPI virt layer. Note that this does not imply support for other Xen-based platforms such as those shipped with RHEL 6 or SUSE, which is provided via the libvirt layer (i.e. Xen via libvirt).
Nova also supports bare metal provisioning through the Ironic project, that means it is possible to deploy to hardware in the same way the end user deploys virtual machines. By default, it will use PXE and IPMI in concert to provision and turn on/off machines, but Ironic also supports vendor-specific plugins which may implement additional functionality. Some vendors, most notably HP Helion, use Ironic to deploy OpenStack itself.
Glance – Image Store
It provides discovery, registration and delivery services for disk and server images.
List of components and their functions:
- glance-api: accepts Image API calls for image discovery, image retrieval and image storage
- glance-registry: stores, processes and retrieves metadata about images (size, type, etc.)
- glance database: a database to store the image metadata
- A storage repository for the actual image files. Glance supports normal filesystems, Ceph block devices, Amazon S3, HTTP and Swift.
Glance accepts API requests for images (or image metadata) from end users or Nova components, and can store its disk files in the object storage service, Swift or other storage repository.