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
