Underlying Technologies You can think of OpenStack Compute as a toolkit for building a cloud computing environment by stitching together existing Linux technologies. The figures below shows two examples of how these underlying technologies can be assembled to construct an OpenStack Compute cloud. The circles are Linux services that are part of OpenStack Compute, and the rectangles are external (not maintained by the OpenStack project) components. Solid lines show interactions between OpenStack components and external components, and dashed lines show interactions between external components. All services that are part of OpenStack Compute interact with a queueing backend (e.g., RabbitMQ, Qpid) and a database backend (e.g., MySQL, PostgreSQL); these connections are not shown. Also not shown are services that do not explicitly rely on external technologies. For example, the nova-api service, the Identity service, and the Image service are not shown.
Underlying technologies (Scenario 1)
Underlying technologies (Scenario 2)
Many of the external technologies can be substituted with other components, as shown in the table below.
Technologies and supported implementations
Technology Supported implementations
Message queue RabbitMQ, Qpid, ZeroMQ
Virtualization xapi+XCP, xapi+XenServer, libvirt+KVM, libvirt+QEMU, libvirt+LXC, libvirt+VMWare
iSCSI back-end LVM+IET, LVM+tgt, Xen Storage Manager, SAN (Solaris, HP, SolidFire), NexentaStor, NetApp, Ceph, Sheepdog
Database MySQL, PostgreSQL, sqlite
Web server Apache, Nginx
Session cache memcache, any Django-supported database backend (e.g., MySQL, PostgreSQL, sqlite)
nova-computeThe nova-compute service depends on a virtualization driver to manage virtual machines. By default, this driver is libvirt, which is used to drive KVM. However, the libvirt driver can also drive other hypervisor technologies, and there is a separate Xen virtualization driver for driving Xen-based virtual machines if configured to use Xen Cloud Platform (XCP) or XenServer. Open-iscsi is used to mount remote block devices, also known as volumes. Open-iscsi exposes these remote devices as local device files which can be attached to instances. nova-network The nova-network service depends on a number of Linux networking technologies. It uses Linux bridging to create network bridges to connect virtual machines to the physical networks. These bridges may be associated with VLANs using Linux networking VLAN support, if running in the VLAN networking mode. Iptables is used to implement security rules and implement NAT functionality, which is used for providing instances with access to the metadata service and for supporting floating IP addresses. Dnsmasq is used as a DHCP server to hand out IP addresses to virtual machine instances, as well as a DNS server. While nova-network continues to be available, it is not actively developed, as the OpenStack Networking (code-named Neutron) project is its replacement. Use one or the other in your installation. OpenStack Networking (Neutron) The OpenStack Networking service also depends on Linux networking technologies, using a plugin mechanism. Read more about it in the OpenStack Networking Administration Guide. OpenStack Block Storage (Cinder) By default, Cinder service uses LVM to create and manage local volumes, and exports them via iSCSI using IET or tgt. It can also be configured to use other iSCSI-based storage technologies. openstack-dashboard (Horizon) The openstack-dashboard is a Django-based application that runs behind an Apache web server by default. It uses memcache for the session cache by default. A web-based VNC client called novnc is used to provide access to the VNC consoles associated with the running KVM instances.