OpenStack Compute & Its Services
In order to provide compute facility to cloud users OpenStack Compute node should be separately installed on separate servers. OpenStack compute node contains nova-compute service and the network agent called Neutron in order to provide compute feature along with network services to end users.
OpenStack compute nodes are those where Virtual machines are created and installed and user uses them.
Compute Service Components:
Compute Services in OpenStack are made up of multiple services working together which takes request, launch and manage the virtual machine. Following are the compute services that runs on OpenStack compute nodes.
Nova-api: This service interacts with User API calls to manage compute instances. It communicates with other compute services via message bus.
Nova-scheduler: This services listen request for new instances on message bus and then selects the best compute node for virtual machine.
Nova-compute: This service starts and terminates the virtual machine , and this service runs on compute nodes and listen this request on message bus.
Nova-conductor: When any instance requires access to databases , it uses nova-conductor , which provides compute call to access database.
In OpenStack compute node , any hypervisor can be used to make it ready to host virtual machines. To make compute node ready with hypervisor, it supports VMware ESXi, QEMU, UML, Xen, Hyper-V, LXC, bare-metal and lately Docker.
Most of the nova-compute node runs KVM as hypervisor, as it is best suited for workloads that are using libvirt. KVM is the default hypervisor for Open Stack you can check this from /etc/nova/nova.conf
For proper error-free hypervisor usage, check weather KVM module are loaded from compute node.
Docker Container provides the isolated user space to host any application. The containers uses the same kernel and same host Operating systems. Containers are providing an encapsulation mechanism that captures the user space configuration and dependencies of an application. This encapsulated application runtime environment can be packaged into portable images. The advantage of this approach is that an application can be delivered along with its dependency and configuration as a self-contained image.
With the help of Docker, any enterprise can host or deploy the application in self-sufficient containers. Docker has large number of containers than is managed on single machine. Dockers provide containers that are not replacement of virtual machine but its containers are very fast and very helpful to deploy any application.