OpenStack Nova System Architecture

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) and Tornado (S3 server).

Components of Nova Architecture:

  1. API Server
    • Handles HTTP requests from tools like boto.
    • Converts and forwards API commands to the Cloud Controller.
  2. 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.
  3. Compute Nodes
    • Hosts virtual machines using hypervisors like Libvirt/KVM.
    • Interacts with the Cloud Controller for VM lifecycle management.
  4. Storage Nodes
    • Use ATA over Ethernet or other protocols for providing storage to instances.
    • Integrated with object storage (S3-like).
  5. 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.
  6. State Management (Distributed Object Store):
    • Stores:
      • VLAN and subnet assignments
      • Public/private IP mappings
      • Running instance IPs
      • Project-based resource allocation

Leave a Reply

Your email address will not be published. Required fields are marked *