OpenStack Compute contains several main components.
The cloud controller represents the global state and interacts with the other components. The
API server
acts as the web services front end for the cloud controller. Thecompute controller
provides compute server resources and usually also contains the Compute service.The
object store
is an optional component that provides storage services; you can also instead use OpenStack Object Storage.An
auth manager
provides authentication and authorization services when used with the Compute system; you can also instead use OpenStack Identity as a separate authentication service.A
volume controller
provides fast and permanent block-level storage for the compute servers.The
network controller
provides virtual networks to enable compute servers to interact with each other and with the public network. You can also instead use OpenStack Networking.The
scheduler
is 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.