Back

46_Bare_Metal_OpenStack_KVM_VMs

Loading views...

← Back to Index

DEPLOYMENT 46 — Bare Metal → OpenStack → KVM VMs

Deployment Stack Overlay

┌──────────────────────────────────────────────────┐
│             Workload (App/Process)             │
├──────────────────────────────────────────────────┤
│                    KVM VMs                     │
├──────────────────────────────────────────────────┤
│                   OpenStack                    │
├──────────────────────────────────────────────────┤
│                   Bare Metal                   │
└──────────────────────────────────────────────────┘

Detailed System Infrastructure

┌─────────────────────────────────────────────────────────────────┐
│              TENANT / USER INTERFACES                           │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │  Horizon (web dashboard)  │  OpenStack CLI (openstack *)  │   │
│  │  Terraform openstack prov │  Heat (orchestration templates)│   │
│  └──────────────────────────────────────────────────────────┘   │
└────────────────────────────┬────────────────────────────────────┘
                             │  REST APIs (HTTPS)
┌────────────────────────────▼────────────────────────────────────┐
│              OPENSTACK CORE SERVICES                            │
│  ┌────────────────────────────────────────────────────────────┐ │
│  │  KEYSTONE (Identity)                                       │ │
│  │  ┌────────────────────────────────────────────────────┐   │ │
│  │  │  Authentication │ Authorization │ Service Catalog  │   │ │
│  │  │  Tokens (Fernet) │ Projects/Domains/Users          │   │ │
│  │  └────────────────────────────────────────────────────┘   │ │
│  └────────────────────────────────────────────────────────────┘ │
│  ┌────────────────────────────────────────────────────────────┐ │
│  │  NOVA (Compute)                                            │ │
│  │  ┌────────────────────────────────────────────────────┐   │ │
│  │  │  nova-api  │  nova-scheduler  │  nova-conductor     │   │ │
│  │  │  nova-compute (runs on each hypervisor node)        │   │ │
│  │  │  → calls libvirt → launches QEMU/KVM VMs           │   │ │
│  │  └────────────────────────────────────────────────────┘   │ │
│  └────────────────────────────────────────────────────────────┘ │
│  ┌────────────────────────────────────────────────────────────┐ │
│  │  NEUTRON (Networking)                                      │ │
│  │  ┌────────────────────────────────────────────────────┐   │ │
│  │  │  neutron-server │ neutron-agent │ ML2 plugin       │   │ │
│  │  │  OVN / OVS backend                                 │   │ │
│  │  │  Tenant networks │ Floating IPs │ Security Groups  │   │ │
│  │  │  Load Balancer (Octavia) │ VPN (Neutron VPN)       │   │ │
│  │  └────────────────────────────────────────────────────┘   │ │
│  └────────────────────────────────────────────────────────────┘ │
│  ┌────────────────────────────────────────────────────────────┐ │
│  │  CINDER (Block Storage)  │  GLANCE (Image Service)         │ │
│  │  ┌──────────────────┐    │  ┌──────────────────────────┐  │ │
│  │  │  cinder-api       │    │  │  Image registry          │  │ │
│  │  │  cinder-scheduler │    │  │  (qcow2/raw/ISO images)  │  │ │
│  │  │  cinder-volume    │    │  │  Backends: Swift/Ceph/   │  │ │
│  │  │  LVM/Ceph backend │    │  │  local filesystem        │  │ │
│  │  └──────────────────┘    │  └──────────────────────────┘  │ │
│  └────────────────────────────────────────────────────────────┘ │
│  ┌────────────────────────────────────────────────────────────┐ │
│  │  SWIFT (Object Storage, optional)                          │ │
│  │  MANILA (Shared Filesystem, optional)                      │ │
│  │  BARBICAN (Secrets Management, optional)                   │ │
│  └────────────────────────────────────────────────────────────┘ │
│  ┌────────────────────────────────────────────────────────────┐ │
│  │  MESSAGE BUS: RabbitMQ / Oslo.messaging                    │ │
│  │  DATABASE:    MariaDB/MySQL (Galera cluster)               │ │
│  │  CACHE:       Memcached / Redis                            │ │
│  └────────────────────────────────────────────────────────────┘ │
└────────────────────────────┬────────────────────────────────────┘
                             │  nova-compute on each hypervisor node
┌────────────────────────────▼────────────────────────────────────┐
│              COMPUTE NODES (hypervisor hosts)                   │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │  nova-compute agent                                      │   │
│  │  ┌────────────────────────────────────────────────────┐  │   │
│  │  │  libvirt + QEMU/KVM                               │  │   │
│  │  │  ┌──────────────┐  ┌──────────────┐  ┌────────┐  │  │   │
│  │  │  │ Tenant VM A  │  │ Tenant VM B  │  │ VM N   │  │  │   │
│  │  │  │ (Ubuntu inst)│  │ (Win Server) │  │        │  │  │   │
│  │  │  └──────────────┘  └──────────────┘  └────────┘  │  │   │
│  │  └────────────────────────────────────────────────────┘  │   │
│  │  neutron-agent (OVN/OVS for VM network plumbing)          │   │
│  └──────────────────────────────────────────────────────────┘   │
└────────────────────────────┬────────────────────────────────────┘
                             │
┌────────────────────────────▼────────────────────────────────────┐
│              KVM + LINUX KERNEL (compute nodes)                 │
│  kvm.ko │ kvm-intel/amd.ko │ OVS/OVN │ libvirt                 │
└────────────────────────────┬────────────────────────────────────┘
                             │
┌────────────────────────────▼────────────────────────────────────┐
│                       BARE METAL                                │
│  CONTROLLER NODES (OpenStack services):                        │
│  CPU 16c │ RAM 128GB │ SSD (OS + DB + MQ) │ 10GbE×2            │
│                                                                  │
│  COMPUTE NODES (hypervisor):                                    │
│  CPU 64c/128t (EPYC/Xeon) │ RAM 512GB+ │ NVMe │ 25GbE×2        │
│                                                                  │
│  STORAGE NODES (if Ceph):                                       │
│  CPU 16c │ RAM 64GB │ 12×HDD + 2×NVMe (WAL/DB) │ 25GbE×2      │
└─────────────────────────────────────────────────────────────────┘

Technical Implementation Details

  • Isolation: Hardware-assisted virtualization (VT-x/AMD-V).
  • Storage: Virtual disks (qcow2/vmdk) on shared or local storage.
  • Management: Orchestrated via native CLI or high-level API controllers.

How It Works

  • Keystone authenticates all API requests and provides a service catalog (endpoints for each service)
  • Nova receives VM launch requests, nova-scheduler picks a compute host, nova-compute uses libvirt to start QEMU/KVM
  • Neutron creates virtual networks using OVN/OVS, plugging VM vNICs into tenant networks via OVS patch ports
  • Cinder provisions block volumes (LVM/Ceph) and attaches them to VMs via iSCSI or virtio-blk
  • All services communicate via RabbitMQ message queue; state stored in MariaDB

Use Case

Private cloud for telecoms, research institutions, large enterprises — replacing AWS/Azure with on-premises IaaS. Tenant self-service VM provisioning with full network isolation.

Pros

  • Full IaaS private cloud — AWS-like self-service
  • Multi-tenant with strong isolation
  • Enormous feature set (compute, network, storage, identity, object)
  • Open source with commercial support (Red Hat, Canonical, SUSE)

Cons

  • Extremely complex to deploy and operate
  • High operational overhead (requires dedicated OpenStack team)
  • Slow release cycles
  • Overkill for small environments