Appendix A. Appendix
A.1. Scaling Copy linkLink copied to clipboard!
To scale HCI nodes up or down, the same principles (and for the most part, methods) for scaling Compute or Ceph Storage nodes apply. Be mindful of the following caveats:
A.1.1. Scaling Up Copy linkLink copied to clipboard!
To scale up HCI nodes in a pure HCI environment, use the same methods for scaling up Compute nodes. See Adding Additional Nodes (from Director Installation and Usage) for details.
The same methods apply for scaling up HCI nodes in a mixed HCI environment. When you tag new nodes, remember to use the right flavor (in this case, osdcompute
). See Section 3.2.3, “Creating and Assigning a New Flavor”.
A.1.2. Scaling Down Copy linkLink copied to clipboard!
The process for scaling down HCI nodes (in both pure and mixed HCI environments) can be summarized as follows:
Disable and rebalance the Ceph OSD services on the HCI node. This step is necessary because the director does not automatically rebalance the Red Hat Ceph Storage cluster when you remove HCI or Ceph Storage nodes.
See Scaling Down and Replacing Ceph Storage Nodes (from Red Hat Ceph Storage for the Overcloud). Do not follow the steps here for removing the node, as you will need to migrate instances and disable the Compute services on the node first.
- Migrate the instances from the HCI nodes. See Migrating Instances for instructions.
- Disable the Compute services on the nodes to prevent them from being used to spawn new instances.
- Remove the node from the overcloud.
For the third and fourth step (disabling Compute services and removing the node), see Removing Compute Nodes from Director Installation and Usage.
A.2. Upstream Tools Copy linkLink copied to clipboard!
Heat templates, environment files, scripts, and other resources relevant to hyper-convergence in OpenStack are available from the following upstream Github repository:
https://github.com/RHsyseng/hci/tree/master/custom-templates
This repository features the scripts in Section A.2.1, “Compute CPU and Memory Calculator” and Section A.2.2, “Custom Script to Configure NUMA Pinning for Ceph OSD Services”.
To use these scripts, clone the repository directly to your undercloud:
git clone https://github.com/RHsyseng/hci
$ git clone https://github.com/RHsyseng/hci
A.2.1. Compute CPU and Memory Calculator Copy linkLink copied to clipboard!
The Section 4.1, “Reserve CPU and Memory Resources for Compute” section explains how to determine suitable values for reserved_host_memory_mb
and cpu_allocation_ratio
on hyper-converged nodes. You can also use the following Python script (also available from the repository in Section A.2, “Upstream Tools”) to perform the computations for you:
A.2.2. Custom Script to Configure NUMA Pinning for Ceph OSD Services Copy linkLink copied to clipboard!
The Configure Ceph NUMA Pinning section describes the creation of a script that pins the Ceph OSD services to an available NUMA socket. This script, ~/templates/numa-systemd-osd.sh
, should:
- Take the network interface used for Ceph network traffic
-
Use
lstopo
to determine that interface’s NUMA socket -
Configure
numactl
to start the OSD service with a NUMA policy that prefers the NUMA node of the Ceph network’s interface - Restart each Ceph OSD daemon sequentially so that the service runs with the new NUMA option
The numa-systemd-osd.sh
script will also attempt to install NUMA configuration tools. As such, the overcloud nodes must also be registered with Red Hat, as described in Registering the Nodes (from Red Hat Ceph Storage for the Overcloud).
The following script does all of these for Mixed HCI deployments, assuming that the hostname of each hyper-converged node uses either ceph
or osd-compute
. Edit the top-level IF
statement accordingly if you are customizing the hostnames of hyper-converged nodes:
- 1
- The top-level
IF
statement assumes that the hostname of each hyper-converged node contains eitherceph
orosd-compute
. Edit theIF
statement accordingly if you are customizing the hostnames of hyper-converged nodes.Likewise, on a Pure HCI deployment all Compute nodes are hyper-converged. As such, on a Pure HCI deployment change the top-level
IF
statement to:if [[ `hostname` = *"compute"* ]]; then
if [[ `hostname` = *"compute"* ]]; then
Copy to Clipboard Copied! Toggle word wrap Toggle overflow