|
| 1 | +# Sycomp Intelligent Data Storage Platform Blueprint |
| 2 | + |
| 3 | +This document provides instructions on how to use a blueprint to deploy or expand a `Sycomp Intelligent Data Storage Platform` cluster and enable a `SLURM` cluster to access the data via `NFS` on Google Cloud Platform (GCP) |
| 4 | +using the Google Cluster Toolkit. |
| 5 | + |
| 6 | +The directory contains four example blueprints that can be used to deploy or expand a `Sycomp Storage` cluster: |
| 7 | + |
| 8 | +- sycomp-storage.yaml |
| 9 | + |
| 10 | + Blueprint used to deploy a `Sycomp Storage` cluster consisting of 3 storage servers. |
| 11 | + |
| 12 | +- sycomp-storage-expansion.yaml |
| 13 | + |
| 14 | + Blueprint used to expand the `Sycomp Storage` cluster to 4 storage servers. |
| 15 | + |
| 16 | +- sycomp-storage-ece.yaml |
| 17 | + |
| 18 | + Blueprint used to deploy a `Sycomp Storage` cluster consisting of 7 storage servers using `ECE` (Erasure Code Edition) software RAID. |
| 19 | + |
| 20 | +- sycomp-storage-slurm.yaml |
| 21 | + |
| 22 | + Blueprint used to deploy a `SLURM` cluster and a `Sycomp Storage` cluster with three servers. The `SLURM` compute nodes are configured as `NFS` clients and have the ability to use the Sycomp Storage filesystem. |
| 23 | + |
| 24 | +## Prerequisites |
| 25 | + |
| 26 | +1. Google Cloud SDK is installed and configured. |
| 27 | +2. The Google Cloud Cluster Toolkit is set up [Set up Cluster Toolkit](https://cloud.google.com/cluster-toolkit/docs/setup/configure-environment). |
| 28 | +3. You have a Google Cloud project and the required permissions to create VPCs, and Compute Engine instances. |
| 29 | +4. The following APIs must be enabled in your project: |
| 30 | + - Compute Engine API (`compute.googleapis.com`) |
| 31 | +5. You have an SSH key pair (`~/.ssh/id_rsa` and `~/.ssh/id_rsa.pub` or similar). If you don't have one, you can generate it using `ssh-keygen -t rsa`. |
| 32 | +6. You have a valid **Customer Token** provided by Sycomp. |
| 33 | +7. You have a valid **Project access token** provided by Sycomp. |
| 34 | + |
| 35 | +> **_NOTE:_** To get a customer and project access token, contact Sycomp (sycompstorage@sycomp.com). |
| 36 | +> |
| 37 | +> **_NOTE:_** To avoid repeatedly entering passwords, you can set `credential.helper` in git. |
| 38 | +
|
| 39 | +```shell |
| 40 | +git config credential.helper cache |
| 41 | +``` |
| 42 | + |
| 43 | +## Configuration |
| 44 | + |
| 45 | +Before deploying you need to edit the blueprint yaml files and replace the placeholder values. |
| 46 | + |
| 47 | +Required parameter updates for each blueprint: |
| 48 | + |
| 49 | +- **`vars` block:** |
| 50 | + - `project_id`: Your Google Cloud project ID. |
| 51 | + - `deployment_name`: A unique name for this deployment (e.g., `sycomp-storage`). |
| 52 | + - `region`: The region where you want to deploy the cluster. |
| 53 | + - `zone`: The zone where you want to deploy the cluster. |
| 54 | + |
| 55 | +- **`network1` module settings:** |
| 56 | + - `source`: `modules/network/vpc` is the default and deploys the cluster in a newly created network. To use an existing network, change `source` to `modules/network/pre-existing-vpc`. |
| 57 | + - `network_name`: A name for the new VPC network (e.g., `sycomp-net`). |
| 58 | + - `subnetwork_name`: A name for the new subnetwork (e.g., `sycomp-subnet`). |
| 59 | + - `allowed_ssh_ip_ranges`: A list of IP address ranges in CIDR format that |
| 60 | + are allowed to connect via SSH. **You must include the IP address of the |
| 61 | + machine you are running the deployment from.** For example: `["1.2.3.0/24"]`. |
| 62 | + |
| 63 | +- **`sycomp-scale-gcp` module settings:** |
| 64 | + - `security.ssh.ssh_user_name`: The username for SSH access to the management node (e.g., `sycomp`). |
| 65 | + - `security.ssh.private_key`: The file path to your SSH private key (e.g., `~/.ssh/id_rsa`). |
| 66 | + - `security.ssh.public_key`: The file path to your SSH public key (e.g., `~/.ssh/id_rsa.pub`). |
| 67 | + - `security.customer_token.token`: Your Sycomp Customer Token. To get a customer token, contact Sycomp (`sycompstorage@sycomp.com`). |
| 68 | + - `name_prefix` (Optional): By default, `sycomp-scale-gcp` sets the value of `name_prefix` based on the `deployment_name`. Since `name_prefix` only accepts **alphanumeric** characters (letters and numbers), `sycomp-scale-gcp` automatically **removes any non-alphanumeric characters** (such as hyphens and underscores) before assigning the value. For example, a `deployment_name` of `sycomp-storage-1` would result in a `name_prefix` of `sycompstorage1`. |
| 69 | + - **`scale_config`** (Optional): |
| 70 | + - `scale_node_count`: The number of nodes in the Sycomp Storage cluster. Default is `3`. |
| 71 | + - `scale_volumes`: Configuration for the data disks. Default is 4 disks of 250GiB each per storage node. |
| 72 | + |
| 73 | +- **`sycomp-scale-expansion` module settings:** |
| 74 | + - `name_prefix`: Must match the `name_prefix` of the cluster to be expanded. Note: if not set explicitly, `name_prefix` is derived from `deployment_name` by removing non-alphanumeric characters. You can find the correct value for an existing cluster by checking its Terraform outputs or by inspecting resource names in the Google Cloud Console. |
| 75 | + - `add_scale_nodes`: The number of nodes to be added. |
| 76 | + |
| 77 | +## Deployment |
| 78 | + |
| 79 | +Once the blueprint file (e.g., `sycomp-storage.yaml`) is configured, you can deploy the cluster from the blueprint by following these steps from your terminal. |
| 80 | + |
| 81 | +1. **Authenticate with Google Cloud:** |
| 82 | + |
| 83 | + ```bash |
| 84 | + gcloud auth login |
| 85 | + gcloud auth application-default login |
| 86 | + ``` |
| 87 | + |
| 88 | +2. **Create the deployment directory:** |
| 89 | + |
| 90 | + ```bash |
| 91 | + # Replace <blueprint-filename> with the specific blueprint filename (e.g., sycomp-storage.yaml). |
| 92 | + gcluster create community/examples/sycomp/<blueprint-filename> |
| 93 | + ``` |
| 94 | + |
| 95 | + This command will create a new directory named after your `deployment_name` (e.g., `sycomp-storage`). |
| 96 | + |
| 97 | +3. **Deploy the resources:** |
| 98 | + |
| 99 | + ```bash |
| 100 | + # The terraform init command will prompt for a username and password. |
| 101 | + # Enter any username and use the project access token from Sycomp as the password. |
| 102 | + # To get a project access token, contact Sycomp (sycompstorage@sycomp.com). |
| 103 | + # |
| 104 | + # Replace <deployment_name> with the `deployment_name` from your blueprint (e.g., "sycomp-storage"). |
| 105 | + terraform -chdir=<deployment_name>/primary init |
| 106 | + gcluster deploy <deployment_name> |
| 107 | + ``` |
| 108 | + |
| 109 | + This process will take several minutes as it provisions the Sycomp Storage cluster nodes. |
| 110 | + |
| 111 | +## Cleanup |
| 112 | + |
| 113 | +To remove all resources created by this blueprint, run the following command: |
| 114 | + |
| 115 | +```bash |
| 116 | +gcluster destroy <deployment_name> |
| 117 | +``` |
0 commit comments