Scale out the nova-compute application

Preamble

Scaling out the nova-compute application implies the addition of one or more nova-compute units (i.e. compute nodes). It is a straightforward operation that should not incur any cloud downtime.

Procedure

Check the current state of the cloud, scale out by adding a single compute node, and verify the new node.

Current state

Gather basic information about the current state of the cloud in terms of the nova-compute application:

juju status nova-compute

Below is sample output from an OVN-based cloud. This example cloud has a single nova-compute unit:

Model      Controller  Cloud/Region      Version  SLA          Timestamp
openstack  maas-one    maas-one/default  2.9.0    unsupported  13:32:43Z

App           Version  Status  Scale  Charm         Store       Channel  Rev  OS      Message
ceph-osd               active      0  ceph-osd      charmstore  stable   310  ubuntu  Unit is ready (1 OSD)
nova-compute  23.0.0   active      1  nova-compute  charmstore  stable   327  ubuntu  Unit is ready
ntp           3.5      active      1  ntp           charmstore  stable    45  ubuntu  chrony: Ready
ovn-chassis   20.12.0  active      1  ovn-chassis   charmstore  stable    14  ubuntu  Unit is ready

Unit              Workload  Agent  Machine  Public address  Ports    Message
nova-compute/0*   active    idle   0        10.0.0.222               Unit is ready
  ntp/0*          active    idle            10.0.0.222      123/udp  chrony: Ready
  ovn-chassis/0*  active    idle            10.0.0.222               Unit is ready

Machine  State    DNS         Inst id  Series  AZ       Message
0        started  10.0.0.222  node1    focal   default  Deployed

Display the name of the current compute host:

openstack host list

+---------------------+-----------+----------+
| Host Name           | Service   | Zone     |
+---------------------+-----------+----------+
| juju-616a7f-0-lxd-3 | conductor | internal |
| juju-616a7f-0-lxd-3 | scheduler | internal |
| node1.maas          | compute   | nova     |
+---------------------+-----------+----------+

Scale out

Use the add-unit command to scale out the nova-compute application. Multiple units can be added with the use of the -n option.

Note

If the node has specific hardware-related requirements (e.g. storage) it will need to be manually attended to first (within MAAS) and then targeted with the --to option.

The new unit can also be placed on an existing Juju machine (co-located with another application). In this case, if the --to option is used it will refer to the machine ID.

Here we add a single unit onto a new machine (MAAS node):

juju add-unit --to node4.maas nova-compute

The status output should eventually look similar to:

Model      Controller  Cloud/Region      Version  SLA          Timestamp
openstack  maas-one    maas-one/default  2.9.0    unsupported  14:05:36Z

App           Version  Status  Scale  Charm         Store       Channel  Rev  OS      Message
ceph-osd      16.2.0   active      1  ceph-osd      charmstore  stable   310  ubuntu  Unit is ready (1 OSD)
nova-compute  23.0.0   active      2  nova-compute  charmstore  stable   327  ubuntu  Unit is ready
ntp           3.5      active      2  ntp           charmstore  stable    45  ubuntu  chrony: Ready
ovn-chassis   20.12.0  active      2  ovn-chassis   charmstore  stable    14  ubuntu  Unit is ready

Unit              Workload  Agent  Machine  Public address  Ports    Message
ceph-osd/0        active    idle   0        10.0.0.222               Unit is ready (1 OSD)
nova-compute/0*   active    idle   0        10.0.0.222               Unit is ready
  ntp/0*          active    idle            10.0.0.222      123/udp  chrony: Ready
  ovn-chassis/0*  active    idle            10.0.0.222               Unit is ready
nova-compute/1    active    idle   3        10.0.0.241               Unit is ready
  ntp/1           active    idle            10.0.0.241      123/udp  chrony: Ready
  ovn-chassis/1   active    idle            10.0.0.241               Unit is ready

Machine  State    DNS         Inst id  Series  AZ       Message
0        started  10.0.0.222  node1    focal   default  Deployed
3        started  10.0.0.241  node4    focal   default  Deployed

Verification

Verify that the new compute node is functional by creating a VM on it.

First confirm that the new compute host is known to the cloud:

openstack host list

+---------------------+-----------+----------+
| Host Name           | Service   | Zone     |
+---------------------+-----------+----------+
| juju-616a7f-0-lxd-3 | conductor | internal |
| juju-616a7f-0-lxd-3 | scheduler | internal |
| node1.maas          | compute   | nova     |
| node4.maas          | compute   | nova     |
+---------------------+-----------+----------+

Then create a VM by targeting the new host, in this case ‘node4.maas’. Note that a minimum Nova API Microversion is required (the cloud admin role is needed to specify this):

openstack --os-compute-api-version 2.74 server create \
   --image focal-amd64 --flavor m1.micro --key-name admin-key \
   --network int_net --host node4.maas \
   focal-2

Confirm that the new node is being used (information only available to the cloud admin by default):

openstack server show focal-2 | grep hypervisor

| OS-EXT-SRV-ATTR:hypervisor_hostname | node4.maas