From 6d0db33fc8ddb9feea8aa9a81535ca18471a7c99 Mon Sep 17 00:00:00 2001 From: Thomas Leung Date: Wed, 19 Aug 2026 20:15:45 +0000 Subject: [PATCH 1/2] New Multi-cluster sample --- .../multi-cluster-slurm-example/README.md | 328 ++++++++++++++++++ .../multi-cluster-slurm-example/cluster.yaml | 127 +++++++ .../img/slurm-multi-cluster.png | Bin 0 -> 122972 bytes .../munge-multi.service | 14 + .../multi-cluster-slurm-example/testjob.sh | 10 + 5 files changed, 479 insertions(+) create mode 100644 cluster-toolkit-examples/multi-cluster-slurm-example/README.md create mode 100644 cluster-toolkit-examples/multi-cluster-slurm-example/cluster.yaml create mode 100644 cluster-toolkit-examples/multi-cluster-slurm-example/img/slurm-multi-cluster.png create mode 100644 cluster-toolkit-examples/multi-cluster-slurm-example/munge-multi.service create mode 100644 cluster-toolkit-examples/multi-cluster-slurm-example/testjob.sh diff --git a/cluster-toolkit-examples/multi-cluster-slurm-example/README.md b/cluster-toolkit-examples/multi-cluster-slurm-example/README.md new file mode 100644 index 0000000..b46963e --- /dev/null +++ b/cluster-toolkit-examples/multi-cluster-slurm-example/README.md @@ -0,0 +1,328 @@ +# Deploying a Multi-Cluster HPC Environment with Slurm + +## Overview + +There are lots HPC sites with on-prem environment considering cloud cluster for different resource need, +you use the Cloud Cluster Toolkit to deploy cluster with steps to setup Multi-Cluster configuration between +on-premise cluster and cloud cluster. +For an overview of Slurm Workload Manager, visit https://slurm.schedmd.com/ + +### Learning objectives + +With this sample, you learn how to: +* Use Cloud Shell to configure a Cloud Slurm cluster with Cluster Toolkit +* Run the deployment script with yaml files to configure the cloud cluster +* Configure the multi-cluster configuration at both cluster controllers +* Execute a sample job from on-premise cluster to cloud cluster and examine the results + + +NOTE: This example is based on instructions provided at https://cloud.google.com/hpc-toolkit/docs/quickstarts/slurm-cluster. + +## Introduction of Slurm Multi-Cluster + +Offers the ability to target job submission commands to other clusters. users can submit jobs to one or many clusters and receive status from those remote clusters. + +Reference Architecture of Slurm Multi-Cluster +![slurm-multi-cluster.png](img/slurm-multi-cluster.png) + +### Infrastructure prerequisites : + +* Network Routing +A fundamental requirement for this configuration is unrestricted route between on-premises and cloud network traffic. Constant communication between the submission node and compute hosts is essential. +We recommend establishing Dedicated Interconnect and configuring subnet routing before beginning the setup. While HA VPN is suitable for short-term or Proof of Concept (POC) scenarios, customers should transition to a Dedicated Interconnect for long-term production use. + +* DNS - cloud to on-prem setup: +DNS is another important part of the network setup. In order to have the on-prem controllers / servers able to resolve naming of any GCP instance dynamically. customer internal DNS service must point all traffic to *.c.[PROJECT_ID].internal to GCP. This will have to be done for every project created in GCP. This work shall have to be coordinated with the customer Network team. + + Customers may currently have DNS services operating within their on-prem enterprise. Within GCP, Virtual Private Cloud networks on GCP support an internal DNS service that allows instances in the same network to access each other by internal DNS names. Internal A records for virtual machine (VM) instances are created in a DNS zone for .internal. PTR records for VMs are created in corresponding reverse zones. As the customer manages the VM instances, GCP automatically creates, updates, and removes these DNS records. + + In addition to the above, GCP has the capability to run private DNS zones within project boundaries and applied to specific VPCs. Private Zones are an extension of Google’s DNS service. The Private Zones have several functions, to host private zones with GCP, to create forwarding zones (inbound/outbound), and create DNS peering zones. Private zones are only visible from one or more VPC networks that you specify + +* Firewall Requirements + + Port 6817 - slurmctld \ + Port 6818 - slurmd \ + Port 6819 - slurmdbd \ + All ports are Bidirectional between clusters + +### Slurm Burst to Cloud + +* Keep 2 clusters running all the time. On-premise cluster and Cloud cluster (auto-scaling) +* Slurm-native functionality, implemented by SchedMD +* SchedMD official multi-cluster link + +### Well suited for “Multi-cluster” use case + +* High availability HPC service +* Login and launch jobs the same way. Users are used to "single" cluster +* Full function Slurm cluster at On-premise and Cloud environment. + +## Set up Cloud Cluster Toolkit + +1. To clone the Cloud Cluster Toolkit, from Cloud Shell run the following command to clone the GitHub repository. + + git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git + + +2. Go to the main working directory. + + cd cluster-toolkit/ + + +3. To build the Cloud Cluster Toolkit binary from source, from Cloud Shell run the following command. + + make + + +4. To verify the build, from Cloud Shell run the following command. + + ./gcluster --version + + +5. Enable GCS API - storage.googleapis.com + + gcloud services enable storage.googleapis.com + + +6. Enable subnetwork Private Google Access for Filestore: + + gcloud compute networks subnets update default \ + --region=us-central1 \ + --enable-private-ip-google-access + + gcloud auth login + gcloud auth application-default login + + + + The output shows you the version of the Cloud Cluster Toolkit that you are using. + + +## Create the cluster cluster + +Once the instance deployment has been finalized : + +1. Download the cluster.yaml from this folder into your Cloud Shell. Make sure you are still in the cluster-toolkit directory. + +2. Create the Cloud cluster: + + Update the project id in the cluster.yaml file to the GCP project id. + + + vi cluster.yaml + + + Deploy the Cloud cluster: + + + ./gcluster deploy cluster.yaml --auto-approve + + + Note: You will be asked to install terraform 1.12.2 and packer + + Wait for about 15 mins, Cloud cluster should be completed. + +3. SSH into both controllers of Cloud Cluster A and On-premise Cluster B. + + On the __Products & Services__ menu, click __Compute Engine__ and then select __VM instances__. + Or use this link: [https://console.cloud.google.com/compute/instances](https://console.cloud.google.com/compute/instances) + + Find the virtual machine with the name *clustera_controller*. + + On the right hand side of the page, click __SSH__ + + Make sure there are two windows ssh into cloud clustera_controller and on-premise clusterb controller. + +## Task 3: Setup Multi-Cluster Slurm for both Cloud Cluster A and On-premise Cluster B + +1. create a shared munge key for cross-cluster authentication + + In the Cloud ClusterA-controller window: + Run the following commands to set up the munge.key.multi at Cloud ClusterA. + + + sudo dd if=/dev/urandom bs=1 count=1024 | sudo tee /etc/munge/munge.key.multi > /dev/null + sudo chmod 400 /etc/munge/munge.key.multi + sudo chown munge:munge /etc/munge/munge.key.multi + + + Copy the key to the On-premise ClusterB controller + + +2. Setup the munge.key.multi at On-premise ClusterB + + In the On-premise ClusterB controller window: + Set up the munge.key.multi at On-premise ClusterB. + + copy the munge.key.multi to /etc/munge/munge.key.multi + + + sudo chown munge:munge /etc/munge/munge.key.multi + sudo chmod 400 /etc/munge/munge.key.multi + + +3. Tell both controllers to use the same munge keys for authentication: + + Run the following command at BOTH Cloud ClusterA and On-premise ClusterB controllers + + + sudo munged --socket=/var/run/munge/munge.socket.multi \ + --key-file=/etc/munge/munge.key.multi \ + --pid-file=/var/run/munge/munged.multi.pid + + +4. Create the file munge-multi.service at BOTH Cloud ClusterA and On-premise Cluster B controllers: + + Run the following command at BOTH Cloud ClusterA and On-premise ClusterB controllers + + + cd ~ + gcloud storage cp gs://{{{project_0.project_id}}}-student-assets/munge-multi-service munge-multi.service + sudo cp munge-multi.service /etc/systemd/system/munge-multi.service + + +5. Restart the munge service: + + Run the following command at BOTH Cloud ClusterA and On-premise ClusterB controllers + + + sudo systemctl daemon-reload + sudo systemctl enable --now munge-multi + + +6. Configure the Cloud Clustera-controller + + Update the 2 files on Cloud ClusterA : + + + sudo vi /etc/slurm/slurm.conf + + + Update the content as shown below accordingly, DO NOT COPY and PASTE, since duplicated parameters will trigger errors. + + + #Updating this line: + AccountingStorageHost=localhost + + #Adding the following lines: + AccountingStoragePort=6819 + AccountingStorageExternalHost=clusterb-controller:6819 + AccountingStoragePass=/var/run/munge/munge.socket.multi + + + + sudo vi /etc/slurm/slurmdbd.conf + + + Update the content as shown below accordingly, DO NOT COPY and PASTE, since duplicated parameters will trigger errors. + + + AuthType=auth/munge + #Adding the following line: + AuthInfo=socket=/var/run/munge/munge.socket.multi + + DbdHost=clustera-controller + #Adding the following lines: + DbdPort=6819 + StorageLoc=slurm_acct_db + + +7. Configure the On-premise ClusterB + + Update the 2 files on On-premise Clusterb_controller : + + + sudo vi /etc/slurm/slurm.conf + + + + AccountingStorageType=accounting_storage/slurmdbd + #Update the following line: + AccountingStorageHost=localhost + + #Adding the following lines: + AccountingStoragePort=6819 + AccountingStorageExternalHost=clustera-controller:6819 + AccountingStoragePass=/var/run/munge/munge.socket.multi + + + + sudo vi /etc/slurm/slurmdbd.conf + + + + AuthType=auth/munge + #Adding the following line: + AuthInfo=socket=/var/run/munge/munge.socket.multi + + DbdHost=clusterb-controller + #Adding the following line: + DbdPort=6819 + + StorageType=accounting_storage/mysql + StorageHost=localhost + #Adding the following line: + StorageLoc=slurm_acct_db + + +8. Restart the Service on BOTH Cloud ClusterA and On-premise ClusterB + + Run the following command at BOTH ClusterA and ClusterB controllers + + + sudo systemctl restart slurmdbd + sleep 5 + sudo /usr/local/bin/scontrol reconfigure + + +## Task 4: Verify Multi-Cluster Slurm Cross-Registration + +1. Show the clusters: + Run the following command on ClusterA controller: + + + sacctmgr show cluster + + + Sample Output:\ + clustera 127.0.0.1 6820 11264\ + clusterb x.x.x.x 6820 11264 + + Run the following command on ClusterB controller: + + + sacctmgr show cluster + + + Sample Output:\ + clustera 127.0.0.1 6820 11264\ + clusterb x.x.x.x 6820 11264 + + Run the following command on ClusterA controller: + + sinfo -M clusterb + + + Sample Output:\ + CLUSTER: clusterb\ + PARTITION AVAIL TIMELIMIT NODES STATE NODELIST\ + clusterb* up infinite 4 idle~ clusterb-debugbnodeset-[0-3]\ + compute up infinite 20 idle~ clusterb-computebnodese-[0-19] + +2. Submit a job from Cloud ClusterA to On-premise ClusterB: + + Run the following command on Cloud ClusterA controller: + + Use the sample testjob.sh file as a sample. + + sbatch -M clusterb testjob.sh + + + After about 5 mins, you will see slurmtest_*.out file in the directory. This job runs on on-premise ClusterB. + +## Congratulations! + +Great job! You've successfully set up the Mutli-Cluster Slurm Cluster. \ No newline at end of file diff --git a/cluster-toolkit-examples/multi-cluster-slurm-example/cluster.yaml b/cluster-toolkit-examples/multi-cluster-slurm-example/cluster.yaml new file mode 100644 index 0000000..746218c --- /dev/null +++ b/cluster-toolkit-examples/multi-cluster-slurm-example/cluster.yaml @@ -0,0 +1,127 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- + +blueprint_name: clustera + +vars: + project_id: + deployment_name: clustera + region: us-central1 + zone: us-central1-a + +# Documentation for each of the modules used below can be found at +# https://github.com/GoogleCloudPlatform/hpc-toolkit/blob/main/modules/README.md + +deployment_groups: +- group: primary + modules: + # Source is an embedded module, denoted by "modules/*" without ./, ../, / + # as a prefix. To refer to a local module, prefix with ./, ../ or / + - id: network + #source: modules/network/vpc + source: modules/network/pre-existing-vpc + settings: + project_id: $(vars.project_id) + region: us-central1 + network_name: default + subnetwork_name: default + + # Private Service Access (PSA) requires the compute.networkAdmin role which is + # included in the Owner role, but not Editor. + # PSA is a best practice for Filestore instances, but can be optionally + # removed by deleting the private_service_access module and any references to + # the module by Filestore modules. + # https://cloud.google.com/vpc/docs/configure-private-services-access#permissions + - id: private_service_access + source: modules/network/private-service-access + use: [network] + + - id: homefs + source: modules/file-system/filestore + use: [network, private_service_access] + settings: + local_mount: /home + + - id: debug_a_nodeset + source: community/modules/compute/schedmd-slurm-gcp-v6-nodeset + use: [network] + settings: + node_count_dynamic_max: 4 + machine_type: n2-standard-2 + allow_automatic_updates: false + + - id: debug_a_partition + source: community/modules/compute/schedmd-slurm-gcp-v6-partition + use: + - debug_a_nodeset + settings: + partition_name: debug + exclusive: false # allows nodes to stay up after jobs are done + is_default: true + + - id: compute_a_nodeset + source: community/modules/compute/schedmd-slurm-gcp-v6-nodeset + use: [network] + settings: + node_count_dynamic_max: 20 + bandwidth_tier: gvnic_enabled + allow_automatic_updates: false + + - id: compute_a_partition + source: community/modules/compute/schedmd-slurm-gcp-v6-partition + use: + - compute_a_nodeset + settings: + partition_name: compute + + - id: h3_a_nodeset + source: community/modules/compute/schedmd-slurm-gcp-v6-nodeset + use: [network] + settings: + node_count_dynamic_max: 20 + # Note that H3 is available in only specific zones. https://cloud.google.com/compute/docs/regions-zones + machine_type: h3-standard-88 + # H3 does not support pd-ssd and pd-standard + # https://cloud.google.com/compute/docs/compute-optimized-machines#h3_disks + disk_type: pd-balanced + bandwidth_tier: gvnic_enabled + allow_automatic_updates: false + + - id: h3_a_partition + source: community/modules/compute/schedmd-slurm-gcp-v6-partition + use: + - h3_a_nodeset + settings: + partition_name: h3 + + - id: slurm_login + source: community/modules/scheduler/schedmd-slurm-gcp-v6-login + use: [network] + settings: + machine_type: n2-standard-4 + enable_login_public_ips: true + + - id: slurm_controller + source: community/modules/scheduler/schedmd-slurm-gcp-v6-controller + use: + - network + - debug_a_partition + - compute_a_partition + - h3_a_partition + - homefs + - slurm_login + settings: + enable_controller_public_ips: true \ No newline at end of file diff --git a/cluster-toolkit-examples/multi-cluster-slurm-example/img/slurm-multi-cluster.png b/cluster-toolkit-examples/multi-cluster-slurm-example/img/slurm-multi-cluster.png new file mode 100644 index 0000000000000000000000000000000000000000..f4be75106bcfc42e32fd6b62105f32b5433d7370 GIT binary patch literal 122972 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 literal 0 HcmV?d00001 diff --git a/cluster-toolkit-examples/multi-cluster-slurm-example/munge-multi.service b/cluster-toolkit-examples/multi-cluster-slurm-example/munge-multi.service new file mode 100644 index 0000000..f3d5504 --- /dev/null +++ b/cluster-toolkit-examples/multi-cluster-slurm-example/munge-multi.service @@ -0,0 +1,14 @@ +[Unit] +Description=Munge Multi-Cluster Authentication +After=network.target + +[Service] +Type=forking +ExecStart=/usr/sbin/munged --socket=/var/run/munge/munge.socket.multi \ + --key-file=/etc/munge/munge.key.multi \ + --pid-file=/var/run/munge/munged.multi.pid +User=munge +Group=munge + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/cluster-toolkit-examples/multi-cluster-slurm-example/testjob.sh b/cluster-toolkit-examples/multi-cluster-slurm-example/testjob.sh new file mode 100644 index 0000000..4cef527 --- /dev/null +++ b/cluster-toolkit-examples/multi-cluster-slurm-example/testjob.sh @@ -0,0 +1,10 @@ +#!/bin/bash +#SBATCH --job-name=slurmtest # Name of the job +#SBATCH --output=slurmtest_%j.out # Standard output log (%j is replaced by the Job ID) +#SBATCH --error=slurmtest_%j.err # Standard error log +#SBATCH --time=00:01:00 # Time limit (hh:mm:ss) - set to 1 minute +#SBATCH --ntasks=1 # Number of tasks (processes) +#SBATCH --cpus-per-task=1 # Number of CPU cores per task + +# Print the hostname of the machine executing the job +hostname \ No newline at end of file From a3a22f8fdbf4798112f610c607c89696ee8d66aa Mon Sep 17 00:00:00 2001 From: Thomas Leung Date: Fri, 28 Aug 2026 18:45:17 +0000 Subject: [PATCH 2/2] Update the format --- .../multi-cluster-slurm-example/README.md | 156 ++++++++---------- 1 file changed, 71 insertions(+), 85 deletions(-) diff --git a/cluster-toolkit-examples/multi-cluster-slurm-example/README.md b/cluster-toolkit-examples/multi-cluster-slurm-example/README.md index b46963e..4cc323d 100644 --- a/cluster-toolkit-examples/multi-cluster-slurm-example/README.md +++ b/cluster-toolkit-examples/multi-cluster-slurm-example/README.md @@ -60,46 +60,33 @@ DNS is another important part of the network setup. In order to have the on-pre ## Set up Cloud Cluster Toolkit 1. To clone the Cloud Cluster Toolkit, from Cloud Shell run the following command to clone the GitHub repository. - +```bash git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git - +``` 2. Go to the main working directory. - +```bash cd cluster-toolkit/ - +``` 3. To build the Cloud Cluster Toolkit binary from source, from Cloud Shell run the following command. - +```bash make - +``` 4. To verify the build, from Cloud Shell run the following command. - +```bash ./gcluster --version - - -5. Enable GCS API - storage.googleapis.com - - gcloud services enable storage.googleapis.com - - -6. Enable subnetwork Private Google Access for Filestore: - - gcloud compute networks subnets update default \ - --region=us-central1 \ - --enable-private-ip-google-access - +``` + +5. Authentication with the user account provided with the Qwiklab. +```bash gcloud auth login gcloud auth application-default login - +``` - The output shows you the version of the Cloud Cluster Toolkit that you are using. - + ## Create the cluster cluster @@ -111,21 +98,20 @@ Once the instance deployment has been finalized : Update the project id in the cluster.yaml file to the GCP project id. - +```bash vi cluster.yaml - +``` - Deploy the Cloud cluster: +3. Deploy the Cloud cluster: - +```bash ./gcluster deploy cluster.yaml --auto-approve - - - Note: You will be asked to install terraform 1.12.2 and packer +``` - Wait for about 15 mins, Cloud cluster should be completed. +Note: You will be asked to install terraform 1.12.2 and packer +Wait for about 15 mins, Cloud cluster should be completed. -3. SSH into both controllers of Cloud Cluster A and On-premise Cluster B. +4. SSH into both controllers of Cloud Cluster A and On-premise Cluster B. On the __Products & Services__ menu, click __Compute Engine__ and then select __VM instances__. Or use this link: [https://console.cloud.google.com/compute/instances](https://console.cloud.google.com/compute/instances) @@ -143,14 +129,13 @@ Once the instance deployment has been finalized : In the Cloud ClusterA-controller window: Run the following commands to set up the munge.key.multi at Cloud ClusterA. - +```bash sudo dd if=/dev/urandom bs=1 count=1024 | sudo tee /etc/munge/munge.key.multi > /dev/null sudo chmod 400 /etc/munge/munge.key.multi sudo chown munge:munge /etc/munge/munge.key.multi - - - Copy the key to the On-premise ClusterB controller +``` +Copy the key to the On-premise ClusterB controller 2. Setup the munge.key.multi at On-premise ClusterB @@ -159,51 +144,50 @@ Once the instance deployment has been finalized : copy the munge.key.multi to /etc/munge/munge.key.multi - +```bash sudo chown munge:munge /etc/munge/munge.key.multi sudo chmod 400 /etc/munge/munge.key.multi - +``` 3. Tell both controllers to use the same munge keys for authentication: Run the following command at BOTH Cloud ClusterA and On-premise ClusterB controllers - +```bash sudo munged --socket=/var/run/munge/munge.socket.multi \ --key-file=/etc/munge/munge.key.multi \ --pid-file=/var/run/munge/munged.multi.pid - +``` 4. Create the file munge-multi.service at BOTH Cloud ClusterA and On-premise Cluster B controllers: Run the following command at BOTH Cloud ClusterA and On-premise ClusterB controllers - +```bash cd ~ gcloud storage cp gs://{{{project_0.project_id}}}-student-assets/munge-multi-service munge-multi.service sudo cp munge-multi.service /etc/systemd/system/munge-multi.service - +``` 5. Restart the munge service: Run the following command at BOTH Cloud ClusterA and On-premise ClusterB controllers - +```bash sudo systemctl daemon-reload sudo systemctl enable --now munge-multi - +``` 6. Configure the Cloud Clustera-controller Update the 2 files on Cloud ClusterA : - +```bash sudo vi /etc/slurm/slurm.conf - - - Update the content as shown below accordingly, DO NOT COPY and PASTE, since duplicated parameters will trigger errors. +``` +Update the content as shown below accordingly, DO NOT COPY and PASTE, since duplicated parameters will trigger errors. - +```bash #Updating this line: AccountingStorageHost=localhost @@ -211,15 +195,15 @@ Once the instance deployment has been finalized : AccountingStoragePort=6819 AccountingStorageExternalHost=clusterb-controller:6819 AccountingStoragePass=/var/run/munge/munge.socket.multi - +``` - +```bash sudo vi /etc/slurm/slurmdbd.conf - +``` - Update the content as shown below accordingly, DO NOT COPY and PASTE, since duplicated parameters will trigger errors. +Update the content as shown below accordingly, DO NOT COPY and PASTE, since duplicated parameters will trigger errors. - +```bash AuthType=auth/munge #Adding the following line: AuthInfo=socket=/var/run/munge/munge.socket.multi @@ -228,17 +212,17 @@ Once the instance deployment has been finalized : #Adding the following lines: DbdPort=6819 StorageLoc=slurm_acct_db - +``` 7. Configure the On-premise ClusterB Update the 2 files on On-premise Clusterb_controller : - +```bash sudo vi /etc/slurm/slurm.conf - - - +``` +Here is the content to be updated: +```bash AccountingStorageType=accounting_storage/slurmdbd #Update the following line: AccountingStorageHost=localhost @@ -247,13 +231,16 @@ Once the instance deployment has been finalized : AccountingStoragePort=6819 AccountingStorageExternalHost=clustera-controller:6819 AccountingStoragePass=/var/run/munge/munge.socket.multi - +``` + +Let's update teh slurmdbd.conf file: - +```bash sudo vi /etc/slurm/slurmdbd.conf - +``` +Here is the content to be updated: - +```bash AuthType=auth/munge #Adding the following line: AuthInfo=socket=/var/run/munge/munge.socket.multi @@ -266,47 +253,47 @@ Once the instance deployment has been finalized : StorageHost=localhost #Adding the following line: StorageLoc=slurm_acct_db - +``` 8. Restart the Service on BOTH Cloud ClusterA and On-premise ClusterB Run the following command at BOTH ClusterA and ClusterB controllers - +```bash sudo systemctl restart slurmdbd sleep 5 sudo /usr/local/bin/scontrol reconfigure - +``` ## Task 4: Verify Multi-Cluster Slurm Cross-Registration 1. Show the clusters: Run the following command on ClusterA controller: - +```bash sacctmgr show cluster - +``` - Sample Output:\ +Sample Output:\ clustera 127.0.0.1 6820 11264\ clusterb x.x.x.x 6820 11264 - Run the following command on ClusterB controller: +Run the following command on ClusterB controller: - +```bash sacctmgr show cluster - +``` - Sample Output:\ +Sample Output:\ clustera 127.0.0.1 6820 11264\ clusterb x.x.x.x 6820 11264 - Run the following command on ClusterA controller: - +Run the following command on ClusterA controller: +```bash sinfo -M clusterb - +``` - Sample Output:\ +Sample Output:\ CLUSTER: clusterb\ PARTITION AVAIL TIMELIMIT NODES STATE NODELIST\ clusterb* up infinite 4 idle~ clusterb-debugbnodeset-[0-3]\ @@ -314,14 +301,13 @@ Once the instance deployment has been finalized : 2. Submit a job from Cloud ClusterA to On-premise ClusterB: - Run the following command on Cloud ClusterA controller: - + Run the following command on Cloud ClusterA controller, Use the sample testjob.sh file as a sample. - +```bash sbatch -M clusterb testjob.sh - +``` - After about 5 mins, you will see slurmtest_*.out file in the directory. This job runs on on-premise ClusterB. +After about 5 mins, you will see slurmtest_*.out file in the directory. This job runs on on-premise ClusterB. ## Congratulations!