Openstack

  1. Components
    1. Nova
    2. Cinder
    3. Swift
    4. Celiometer
    5. Neutron
    6. Horizon
    7. Keystone
    8. Glance
    9. Heat
    10. Ironic
    11. Designate
    12. Octavia
    13. Tacker
    14. Magnum
    15. Oslo
  2. NFV
  3. High availability

Components

Nova

  • compute service
  • supports AWS EC2 API
  • scheduler selects hosts according to filters and weight (e.g., preference to more RAM)
  • cell – unit for scalability
    • own DB, messaging
    • up to 200 hosts

Cinder

  • block storage
  • components
    • API: translates HTTP into Oslo messaging
    • scheduler: decides where to place data
    • volume driver: I/O
    • storage
    • backup

Swift

  • object storage
  • uses proxy as frontend, contains ring
  • URL: https://swift.xyz.com/v1/<Account>/<Container>/<Object>
    • Container and Account: distributed SQLite DB, part of ring
  • ring: mapping between object name and object location on physical storage using MD5(URL)
    • partition: part of ring, replicated (3 copies)
  • zone: single-failure domain, different replica are not placed in single zone
  • successful write ≡ 2 of 3 copies are written ⇒ eventually consistent system

Celiometer

  • metering

Neutron

  • networking
  • neutron server ≡ controller
  • neutron agent ≡ hypervisor module

Horizon

  • dashboard

Keystone

  • identity service

Glance

  • image storage
  • flavours should divide HW resources to avoid resource fragmentation

Heat

  • orchestration

Ironic

  • bare-metal

Designate

  • DNS

Octavia

  • load-balancer

Tacker

  • NFV orchestrator

Magnum

  • container management

Oslo

  • messaging framework between Openstack components for RPC transport
  • backend: RabbitMQ

NFV

  • SR-IOV to bypass hypervisor (≡ CPU) and give access to PCI directly to VM
  • pin vCPU to physical cores ⇒ pin to memory, useful in NUMA
  • huge pages on hypervisor
  • dedicate CPU and RAM to instance, usually uses whole NUMA zone

High availability

  • active/active: clustering, load-balancing
  • active/standby: uses fencing ≡ physical poweroff of failed master (e.g., via IPMI) to avoid split-brain ⇒ ≈ 2 min downtime