OpenStack Nova is the compute component of the OpenStack cloud platform. It acts as a cloud fabric controller and is a key part of the Infrastructure as a Service (IaaS) model. Nova is responsible for provisioning and managing large networks of virtual machines.
Architectural Features:
- Based on shared-nothing architecture and messaging-based communication.
- Communication is handled via AMQP (Advanced Message Queuing Protocol).
- System state is stored in a distributed database with atomic transactions.
- Deferred objects (callbacks) are used to avoid blocking operations (similar to “futures” in parallel computing).
- Implemented in Python, and integrates with external tools like
boto
(Amazon API) andTornado
(S3 server).
Components of Nova Architecture:
- API Server
- Handles HTTP requests from tools like
boto
. - Converts and forwards API commands to the Cloud Controller.
- Handles HTTP requests from tools like
- Cloud Controller
- Maintains global state of the system.
- Manages authorization via LDAP.
- Interfaces with the S3 storage service, compute nodes, and storage workers.
- Sends tasks to other components via message queues.
- Compute Nodes
- Hosts virtual machines using hypervisors like Libvirt/KVM.
- Interacts with the Cloud Controller for VM lifecycle management.
- Storage Nodes
- Use ATA over Ethernet or other protocols for providing storage to instances.
- Integrated with object storage (S3-like).
- Network Components:
- NetworkController: Manages IP address and VLAN allocations.
- RoutingNode: Handles NAT and firewall rules.
- AddressingNode: Provides DHCP services for assigning IPs to VMs.
- TunnelingNode: Enables VPN connectivity for secure communication.
- State Management (Distributed Object Store):
- Stores:
- VLAN and subnet assignments
- Public/private IP mappings
- Running instance IPs
- Project-based resource allocation
- Stores:
