Quickstart#
This getting started guide provides the first steps for onboarding to the ClusterWareAI ™ platform. Use it to create a minimal ClusterWareAI cluster capable of running parallel jobs. The introductory cluster includes:
One head node server that manages cluster administration activities.
Two provisioned compute node servers, also known as worker nodes, that run end user applications.
The Quickstart assumes you are familiar with administering Red Hat RHEL or CentOS servers.
Tip
See Basic Cluster Architecture if you are new to cluster administration and want to learn more about head nodes, compute nodes, and how ClusterWareAI works.
Before You Begin: Quickstart Prerequisites#
Before you begin, make sure your environment has a minimum of two x86_64 servers, preferably three. One server becomes the ClusterWareAI head node and the remaining servers become ClusterWareAI compute nodes. This Quickstart uses three servers.
Head Node: A virtual machine running Red Hat RHEL 8.7 or later or CentOS Stream 8 or later. See Supported Distributions and Features for a full list of Linux distribution options. The head node requires a minimum of:
4 GB RAM
16 GB storage
An Ethernet controller connected to a private cluster network to communicate with the compute nodes.
An Ethernet controller connected to the external network (public internet) to access the ClusterWareAI repository.
Access to a repository for the base operating system (OS) so that the ClusterWareAI software can install additional packages.
Compute Nodes: Virtual machines (recommended for this Quickstart) or bare metal servers (recommended for production) with a minimum of:
4 GB RAM
An Ethernet controller connected to the same private cluster network as the head node.
BIOS configured to PXE boot by default using either Legacy or UEFI mode.
These are the minimum requirements. See Required and Recommended Components for production recommendations.
Create Administrator#
Start by creating a new administrator user on the server you plan to use as your
head node. ClusterWareAI cluster administrators require root privileges. Rather
than logging in as root, create a dedicated administrator account with
sudo privileges. This administrator becomes the first ClusterWareAI user
during the installation process.
The example commands create an administrator account named admin1. Replace
admin1 with a username appropriate for your environment.
On the head node, create the administrator account:
useradd admin1
Set a password for the administrator account:
passwd admin1
Grant the administrator account passwordless full root
sudoprivileges:echo "admin1 ALL=(root) NOPASSWD: ALL" >> /etc/sudoers
Switch to the new administrator account:
su - admin1
Generate an SSH key pair for the administrator account:
ssh-keygen
The SSH key pair is used for passwordless SSH authentication during cluster administration. Accept the default location unless your organization's security policies require a different location.
All remaining Quickstart steps are completed using the administrator user account you just created.
Install the ClusterWareAI Software#
Next, create a cluster configuration file and install the ClusterWareAI software on the head node. During installation, the ClusterWareAI software creates the initial boot image and boot configuration that are used to provision (create and boot) the compute nodes.
Create Cluster Configuration File#
On the head node, create a cluster configuration text file to use when configuring your cluster. The cluster configuration file should identify the private cluster network, the IP address on the network for the first compute node, and a list of MAC addresses to use as compute nodes.
For example:
cat <<-EOF >/tmp/cluster-conf
iprange 10.54.60.0 # starting IP address of node 0
node 52:54:00:a6:f3:3c # node 0 MAC address
node 40:8d:5c:fa:ea:c3 # node 1 MAC address
EOF
Install the Software Package#
Install the clusterware-installer package on the head node:
sudo dnf install clusterware-installer
The clusterware-installer package contains the cw-install script,
which installs the ClusterWareAI software on the head node and completes initial
configuration.
Run the Installer#
There are two options when running the ClusterWareAI install script as part of this Quickstart:
If you want your compute node OS image to match your head node OS, run the ClusterWareAI installer with only your configuration file as an argument:
cw-install --config /tmp/cluster-conf
To use a different OS or distribution version on your compute nodes, or if your head node is running Red Hat RHEL 8, specify the installation ISO as part of the install command:
cw-install --config /tmp/cluster-conf --os-iso <ISO-file>
Where
<ISO-file>is the path or URL to a supported compute node OS installation ISO. For example:cw-install --config /tmp/cluster-conf --os-iso rhel-9.6-x86_64-dvd.iso
In most environments, the ClusterWareAI software repository is accessed through
the head node's second Ethernet controller that is connected to the external
network. If a ClusterWareAI software repository is not already configured, the
cw-install installer prompts you for your repository credentials and creates
/etc/yum.repos.d/clusterware.repo.
After the installation completes:
The
DefaultImageimage is created and contains the initial compute node file system image.The
DefaultBootboot configuration is created. It referencesDefaultImageand includes boot-time information for compute nodes.Two compute nodes,
n0andn1, are created and assigned to boot usingDefaultBoot.admin1is added as a Full Admin user in the ClusterWareAI software.
Verify the Installation#
Verify the installation succeeded by booting the compute nodes and confirming that the ClusterWareAI software can monitor node status.
Reboot both compute nodes to apply the
DefaultBootboot configuration andDefaultImageimage.Monitor compute node provisioning by checking the node status from the ClusterWareAI software on the head node. The
cw-nodectltool is used when working with compute nodes:cw-nodectl status --refresh
The
statusargument shows the current node status. Adding--refreshautomatically updates the table with any state changes. Initially, the nodes should display a status similar to:Node status [ date & time ] ------------------------------------------------------------------------ n[0-1] new
As provisioning progresses, each node transitions from
newtobootingand finally toupwhen the nodes are fully booted and ready. The transition tobootingtakes a minute or more while the boot process completes hardware initialization, PXE boot provisioning, and early software initialization. The final transition toupcan take another minute or more.Note
If the nodes do not boot successfully, see Failing PXE Network Boot.
Exit the node status table with
CTRL+C.After the nodes boot, display detailed node information:
cw-nodectl ls -L
Running the command without specifying a compute node displays information about all compute nodes. For example:
$ cw-nodectl ls -L Nodes n0 attributes _boot_config: DefaultBoot description: last_modified: 2026-06-05 02:38:29 UTC (13:46:48 ago) last_modified_by: admin1 last_modified_on: de988a0a9082415481a93ef4047790b7 domain: cluster.local hardware bios_date: 04/01/2014 bios_vendor: SeaBIOS bios_version: rel-1.16.0-0-gd239552c-rebuilt.opensuse.org boot_style: rwram cpu_arch: x86_64 cpu_count: 2 cpu_model: AMD EPYC-Rome Processor last_modified: 2026-06-05 02:18:57 UTC (14:06:20 ago) last_modified_on: de988a0a9082415481a93ef4047790b7 mac: 52:54:00:a6:f3:3c mode: BIOS product_name: None product_uuid: bf286b06-41fd-50f7-aca0-5bf8e0ca0c2a product_version: pc-q35-7.1 ram_total: 7.7 GiB (8025724 KiB) storage /dev/vda size: 1024.0 MiB (1073741824 bytes) /dev/vdb size: 1024.0 KiB (1048576 bytes) vendor: KubeVirt hostname: n0 index: 0 ip: 10.54.60.0 last_modified: 2026-06-05 02:18:57 UTC (14:06:20 ago) last_modified_on: head1-rocky9 mac: 52:54:00:a6:f3:3c name: n0 power_uri: none type: compute n1 attributes _boot_config: DefaultBoot description: last_modified: 2026-06-05 02:38:29 UTC (13:46:48 ago) last_modified_by: admin1 last_modified_on: de988a0a9082415481a93ef4047790b7 domain: cluster.local hardware bios_date: 04/01/2014 bios_vendor: SeaBIOS bios_version: rel-1.16.0-0-gd239552c-rebuilt.opensuse.org boot_style: rwram cpu_arch: x86_64 cpu_count: 2 cpu_model: AMD EPYC-Rome Processor last_modified: 2026-06-05 02:18:57 UTC (14:06:20 ago) last_modified_on: de988a0a9082415481a93ef4047790b7 mac: 40:8d:5c:fa:ea:c3 mode: BIOS product_name: None product_uuid: bf286b06-41fd-50f7-aca0-5bf8e0ca0c2a product_version: pc-q35-7.1 ram_total: 7.7 GiB (8025724 KiB) storage /dev/vda size: 1024.0 MiB (1073741824 bytes) /dev/vdb size: 1024.0 KiB (1048576 bytes) vendor: KubeVirt hostname: n1 index: 1 ip: 10.54.60.1 last_modified: 2026-06-05 02:18:57 UTC (14:06:20 ago) last_modified_on: head1-rocky9 mac: 40:8d:5c:fa:ea:c3 name: n1 power_uri: none type: computeYou can also display details for a single node or a set of nodes using the
-i <nodes>argument. For example, the following command shows a subset of details for node n0:cw-nodectl -i n0 ls -l
Tip
You can also monitor compute node provisioning from the ClusterWareAI graphical user interface (GUI). Compute node status is available from the Overview and Nodes pages. See ClusterWareAI Graphical User Interface for details.
Configure Boot Image and Job Scheduler#
After initial installation, it is common to customize a compute node image by installing a job scheduler and additional software packages required for your end user workloads. The next sections create a customized compute node image with the Slurm job scheduler and an OpenMPI software stack installed.
Create a Custom Image#
The DefaultImage image and DefaultBoot boot configuration should be
preserved as a baseline for future customizations. Start by cloning both so you
can modify the copies instead.
Clone the default image:
cw-imgctl -i DefaultImage clone name=NewImage
Clone the default boot configuration:
cw-bootctl -i DefaultBoot clone name=NewBoot
As a clone of
DefaultBoot,NewBootis associated withDefaultImage.Associate
NewBootwithNewImage:cw-bootctl -i NewBoot update image=NewImage
Configure all compute nodes to use
NewBootinstead ofDefaultBoot:cw-nodectl --all set _boot_config=NewBoot
Install and Configure Slurm#
Slurm is one of the compute node job schedulers supported by the ClusterWareAI platform. Slurm is commonly used for batch workloads, such as AI training, scientific simulations, or data analysis tasks.
Note
In a production cluster, the Slurm controller is installed on a separate server. This Quickstart installs the Slurm controller on the head node for simplicity.
Configure head node hostname resolution by adding the head node to
/etc/hostsand restarting theclusterware-dnsmasqservice. For example, if the head node uses the private cluster network IP address10.54.0.60:Add the head node to
/etc/hosts:echo "10.54.0.60 $(hostname)" | sudo tee -a /etc/hosts
Restart the
clusterware-dnsmasqservice:sudo systemctl restart clusterware-dnsmasq
Slurm and other job schedulers require that all nodes in the cluster are able to resolve the hostnames of all other nodes as well as the scheduler server hostname. The ClusterWareAI software provides a DNS server in the
clusterware-dnsmasqpackage.On the head node, install Slurm and explicitly enable the ClusterWareAI software repository, which was disabled during the install process.
On Red Hat RHEL or CentOS 8:
sudo dnf install slurm-cw --enablerepo=cw* --enablerepo=powertools
On Red Hat RHEL or CentOS 9:
sudo dnf install slurm-cw --enablerepo=cw* --enablerepo=crb
Initialize Slurm:
slurm-cw.setup init
Add the Slurm client software to
NewImage:slurm-cw.setup update-image NewImage
Reboot the compute nodes to apply the image update:
cw-nodectl --all reboot
Monitor the compute nodes until they return to the
upstate:cw-nodectl status --refresh
Exit the node status table with
CTRL+Cwhen all nodes are up.
Verify the Slurm Installation#
Make sure the Slurm services are running as expected and that the compute nodes are managed by Slurm.
Check the job scheduler status:
slurm-cw.setup status
Both the Slurm daemon and the
mungeservice should be running.If the Slurm daemon or
mungeservice is not running:Restart the cluster services:
slurm-cw.setup cluster-restart
Check the job scheduler status again:
slurm-cw.setup status
Display the Slurm partition and node information:
sinfo
Install OpenMPI in the Image#
Install OpenMPI and add an example OpenMPI application in NewImage.
Add the administrator account and its SSH public key to
NewImage:/opt/scyld/clusterware-tools/bin/sync-uids -i NewImage --create-homes \ --users admin1 --sync-key admin1=/home/admin1/.ssh/id_rsa.pubOpenMPI uses SSH to enable multi-threaded communication between compute nodes. SSH requires matching user IDs (UID) and group IDs (GID) and passwordless key-based authentication.
Open
NewImagein a chroot environment:cw-modimg -i NewImage --freshen --chroot --no-discard --overwrite --upload
Install OpenMPI from within the chroot environment:
dnf install openmpi4.0
Configure access to Slurm and OpenMPI for the
admin1account:echo "module load slurm" >> /home/admin1/.bashrc echo "module load openmpi" >> /home/admin1/.bashrc
Build an example OpenMPI application.
Change to the OpenMPI examples directory:
cd /opt/scyld/openmpi/*/gnu/examples
Install
make:dnf install make
Load the OpenMPI environment module:
module load openmpi
Build the
hello_cexample application:make hello_c
Copy the application to the
admin1home directory:cp hello_c /home/admin1/hello_c
Exit the chroot environment:
exit
Reboot the Compute Nodes#
Apply the updated image by rebooting the compute nodes.
Reboot the compute nodes to load the updated image:
cw-nodectl --all reboot
Monitor the compute nodes until they return to the
upstate:cw-nodectl status --refresh
Exit the node status table with
CTRL+Cwhen all nodes are up.
Verify the Software Stack#
Verify that the new image was deployed to the compute node by using Slurm to execute programs on the compute node.
Load the Slurm environment module:
module load slurm
Verify that Slurm can run a command on both compute nodes:
srun -N 2 hostname
Use Slurm to run one instance of the OpenMPI example application on each compute node:
srun -N 2 hello_c
Next Steps#
You now have a basic functional cluster with two compute nodes. You also created a new boot configuration and compute node image and deployed the image with additional software to your compute nodes.
The following are additional areas you may want to explore:
Interacting with Compute Nodes: Use the
cw-nodectltool to view and manage sets of compute nodes, set node attributes, and more.Boot Configurations: Learn more about boot configuration options, including compute node boot style options.
Images: Additional details about how images are stored and deployed to compute nodes.
Attribute Groups: Use attribute groups to apply the same attributes to a set of compute nodes, such as the node boot style, boot configuration, or your own custom attributes.
Configure Job Schedulers: The ClusterWareAI software supports Slurm and OpenPBS job schedulers.
Configure Kubernetes: Use the ClusterWareAI software to manage and monitor worker nodes for supported Kubernetes distributions.
ClusterWareAI Health Monitoring System (CHMS): Add health checks to compute nodes to be alerted automatically about common issues, such as system errors or network connectivity problems.