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