Architecture

Topology

MicroStack can be deployed as a single-node cloud or can span across multiple nodes to provide capacity and resilience in a multi-node solution.

Single-node

In a single-node deployment, all of the components of the deployed OpenStack Cloud reside on the same node; networking is typically configured so that access to the OpenStack API’s, Dashboard and Instances is local and can only be access directly from the node being used.

sunbeam-single-node

In a single-node deployment the node will assume all roles - control, compute and storage. Note that the use of the storage role currently requires pristine, un-partitioned block devices on the node being used.

It is possible to deploy a single-node cloud with remote access to control plane services and instances - this is the ‘remote’ option for instance networking and requires a range of IP addresses for K8s loadbalancer use on the network upon which the node being used resides - see the guided deployment tutorial for examples on how to do this.

Multi-node

Multi-node deployments all start off as single-node deployments; additional nodes are added to the cloud to expand the capacity and resilience of the control plane and add additional capacity and resilience to the compute and storage components.

sunbeam-multi-node

Important: High availability, for both the control plane and the data plane, is only achievable with a minimum of three nodes.

Node roles

Each node in a deployment can assume one or more roles; this allows for different topologies to be created where CPU, memory, and storage resources are either shared between roles or dedicated to specific roles.

Control

The control role encapsulates the control plane of the cloud; specifically this includes Kubernetes (deployed using MicroK8s) and the Charmed K8s Operators that are used for the OpenStack control plane components - API and RPC services, Database and Messaging.

Compute

The compute role encapsulated the hypervisor component on the cloud; specifically this includes the Nova Compute service, the Libvirt/QEMU virtualisation stack, OVN (Open Virtual Network) and OVS (Open vSwitch) services for software defined networking and a Neutron service for provision of metadata to instances.

Nodes with the compute role should be hardware virtualisation (KVM) capable otherwise user-space emulation is used for instances which has a significant performance impact.

Storage

The storage role encapsulates the software defined storage component of the cloud; this is provided by Ceph which provides a massively scalable storage solution using commodity hardware and is deployed in the form MicroCeph.

Nodes with the storage role must have free, un-partitioned disks for use by Ceph.

MySQL configuration

In order to support the scalability and resilience needs of the OpenStack control plane the database component of the control plane can be deployed in two different configurations. This is automatically selected during the bootstrap of the initial node in the cluster but can be overridden if required.

Single instance

For smaller, single node deployments a single MySQL service is deployed to support all OpenStack services. As this configuration limits the scalability of the control plane it is only recommended for small single-node deployments and is automatically selected when bootstrapping an initial node with less than 32GiB of RAM.

Multiple instances

For larger, multi-node deployments a MySQL service is deployed for each OpenStack service; each MySQL service will also be automatically scaled for high-availability as the cluster is resized during deployment. This configuration provides a more scalable approach to deployment of the control plan and is automatically selected when bootstrapping an initial node with more than 32GiB of RAM.

I’m Gilbert an IT student living in Togo, West Africa and I’m about to get my bachelor degree in system and network Administration.

My last year project is “On premises Private Cloud”; I really like what canonical is doing with Microstack.

I only have at my disposal 32GB of Ram, 500GB HDD, 4 interfaces and an Intel Xeon 2.2GHz processor.

My questions are:

  • Is there a way to deploy a single-node in a production environment get it running smoothly or a different architecture?
  • In multi-node mode, can we use VMs as machine?

Hi Gilbert, the system you have described should work fine for a single-node setup. In principle VMs should work for multi-node. Please give either a try and let us know how things go!