OpenStack Compute contains several main components.
The cloud controller represents the global state and interacts with the other components. The
API serveracts as the web services front end for the cloud controller. Thecompute controllerprovides compute server resources and usually also contains the Compute service.The
object storeis an optional component that provides storage services; you can also instead use OpenStack Object Storage.An
auth managerprovides authentication and authorization services when used with the Compute system; you can also instead use OpenStack Identity as a separate authentication service.A
volume controllerprovides fast and permanent block-level storage for the compute servers.The
network controllerprovides virtual networks to enable compute servers to interact with each other and with the public network. You can also instead use OpenStack Networking.The
scheduleris used to select the most suitable compute controller to host an instance.
Compute uses a messaging-based, shared nothing architecture. All
major components exist on multiple servers, including the compute,volume, and network
controllers, and the object store or image service. The state of the entire system is
stored in a database. The cloud controller communicates with the internal object store
using HTTP, but it communicates with the scheduler, network controller, and volume
controller using AMQP (advanced message queueing protocol). To avoid blocking a
component while waiting for a response, Compute uses asynchronous calls, with a callback
that is triggered when a response is received.

