
OpenStack Compute
Administration Manual
Sep 17, 2012 Essex (2012.1)
7
perform administrative actions). It also initiates most of the orchestration activities (such
as running an instance) as well as enforces some policy (mostly quota checks). In the
Essex release, nova-api has been modularized, allowing for implementers to run only
specific APIs.
• The nova-compute process is primarily a worker daemon that creates and terminates
virtual machine instances via hypervisor's APIs (XenAPI for XenServer/XCP, libvirt for
KVM or QEMU, VMwareAPI for VMware, etc.). The process by which it does so is fairly
complex but the basics are simple: accept actions from the queue and then perform
a series of system commands (like launching a KVM instance) to carry them out while
updating state in the database.
• nova-volume manages the creation, attaching and detaching of persistent volumes to
compute instances (similar functionality to Amazon’s Elastic Block Storage). It can use
volumes from a variety of providers such as iSCSI or Rados Block Device in Ceph.
• The nova-network worker daemon is very similar to nova-compute and nova-
volume. 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).
• The nova-schedule process is conceptually the simplest piece of code in OpenStack
Nova: take a virtual machine instance request from the queue and determines where it
should run (specifically, which compute server host it should run on).
• The queue provides a central hub for passing messages between daemons. This is usually
implemented with RabbitMQ today, but could be any AMPQ message queue (such as
Apache Qpid).
• The SQL database stores most of the build-time and run-time state for a cloud
infrastructure. This includes the instance types that are available for use, instances in
use, networks available and projects. Theoretically, OpenStack Nova can support any
database supported by SQL-Alchemy but the only databases currently being widely used
are sqlite3 (only appropriate for test and development work), MySQL and PostgreSQL.
During the last two releases, Nova has augmented it's console services. Console services
allow end users to access their virtual instance's console through a proxy. This involves a
pair of new daemons (nova-console and nova-consoleauth).
Nova interacts with all of the usual suspects: Keystone for authentication, Glance for
images and Horizon for web interface. The Glance interacts is interesting, though. The API
process can upload and query Glance while nova-compute will download images for use in
launching images.
Object Store
The swift architecture is very distributed to prevent any single point of failure as well as to
scale horizontally. It includes the following components:
• Proxy server accepts incoming requests via the OpenStack Object API or just raw HTTP.
It accepts files to upload, modifications to metadata or container creation. In addition, it
will also serve files or container listing to web browsers. The proxy server may utilize an
optional cache (usually deployed with memcache) to improve performance.