This section explains how to deploy Cloud Native Qumulo (CNQ) on AWS by creating the persistent storage and the cluster compute and cache resources with CloudFormation. It also provides information about post-deployment actions and optimization.

For an overview of CNQ on AWS, its prerequisites, and limits, see How Cloud Native Qumulo Works.

The aws-cloudformation-cnq-<x.y>.zip file (the version in the file name corresponds to the provisioning scripts, not the version of Qumulo Core) contains comprehensive CloudFormation templates that let you deploy S3 buckets and then create a CNQ cluster with 4 to 24 instances that adhere to the AWS Well-Architected Framework and have fully elastic compute and capacity.

Prerequisites

This section explains the prerequisites to deploying CNQ on AWS.

  • To allow your Qumulo instance to report metrics to Qumulo, your AWS VPC must have outbound Internet connectivity through a NAT gateway or a firewall. Your instance shares no file data during this process.

  • The following features require specific versions of Qumulo Core:

    Feature Minimum Qumulo Core Version
    • Adding S3 buckets to increase persistent storage capacity
    • Increasing the soft capacity limit for an existing CNQ cluster
    7.2.1.1
    7.2.0.2
    Creating persistent storage 7.1.3 with version 4.0 of the deployment scripts
  • Before you configure your CloudFormation template, you must sign in to the AWS Management Console.

    A custom IAM role or user must include the following AWS services:

    • cloudformation:*
    • ec2:*
    • elasticloadbalancing:*
    • iam:*
    • kms:*
    • lambda:*
    • logs:*
    • resource-groups:*
    • route53:*
    • s3:*
    • secretsmanager:*
    • sns:*
    • ssm:*
    • sts:*

How the CNQ Provisioner Works

The CNQ Provisioner is an m5.large EC2 instance that configures your Qumulo cluster and any additional AWS environment requirements.

The Provisioner stores all necessary state information in AWS Systems Manager (Application Management > Parameter Store) and shuts down automatically when it completes its tasks.

Step 1: Deploying Cluster Persistent Storage

This section explains how to deploy the S3 buckets that act as persistent storage for your Qumulo cluster.

Part 1: Prepare the Required Files

  1. Log in to Nexus and click Downloads > Cloud Native Qumulo Downloads.

  2. On the AWS tab and, in the Download the required files section, select the Qumulo Core version that you want to deploy and then download the corresponding CloudFormation template, Debian package, and host configuration file.

  3. Create a new S3 bucket and, within your S3 bucket prefix, create the qumulo-core-install directory.

  4. Within this directory, create another directory with the Qumulo Core version as its name. For example:

    my-s3-bucket-name/my-s3-bucket-prefix/qumulo-core-install/7.2.3.2
    
  5. Copy qumulo-core.deb and host_configuration.tar.gz into the directory named after the Qumulo Core version (in this example, it is 7.2.3.2).

  6. Decompress aws-cloudformation-cnq-<x.y>.zip locally and copy it to your S3 bucket prefix.

  7. Find the URL to templates/persistent-storage.template.yaml. For example:

    https://my-bucket.s3.us-west-2.amazonaws.com/my-s3-bucket-prefix/templates/persistent-storage.template.yaml
    

Part 2: Create the CloudFormation Stack

  1. Log in to the AWS CloudFormation console.

  2. On the Stacks page, in the upper right, click Create stack > With new resources (standard).

  3. On the Create stack page, in the Specify template section, click Amazon S3 URL, enter the URL to persistent-storage.template.yaml, and then click Next.

  4. On the Specify stack details page, take the following steps:

    1. Enter a Stack name, for example my-storage-stack.

    2. For S3 bucket name, enter the name of the S3 bucket that you used to prepare your files.

    3. For S3 key prefix, enter your S3 bucket prefix.

    4. For S3 bucket region, enter the same AWS region as the one for your S3 bucket.

    5. Click Next.

  5. On the Configure stack options page, read and accept the two acknowledgements, and then click Next.

  6. On the Review and create page, click Submit.

    CloudFormation creates resources for the stack and displays the CREATE_COMPLETE status for each resource.

Step 2: Deploying Cluster Compute and Cache Resources

This section explains how to deploy compute and cache resources for a Qumulo cluster by using a Ubuntu AMI and the Qumulo Core .deb installer.

  1. Configure your VPC to use the gateway VPC endpoint for S3.

  2. In the S3 bucket that hosts your deployment files, find the URL to templates/cnq-standard.template.yaml. For example:

    https://my-bucket.s3.us-west-2.amazonaws.com/my-s3-bucket-prefix/templates/cnq-standard.template.yaml
    
  3. Log in to the AWS CloudFormation console.

  4. On the Stacks page, in the upper right, click Create stack > With new resources (standard).

  5. On the Create stack page, in the Specify template section, click Amazon S3 URL, enter the URL to cnq-standard-template.yaml, and then click Next.

  6. On the Specify stack details page, take the following steps:

    1. In the Provide a stack name section, enter a Stack name, for example my-compute-cache-stack.

    2. In the Parameters section, under Cloud Native Qumulo, take the following steps:

      1. For S3 bucket name, enter the name of the S3 bucket that you used to prepare your files.

      2. For S3 key prefix, enter your S3 bucket prefix.

      3. For S3 bucket region, enter the same AWS region as the one for your S3 bucket.

      4. Select an EC2 key pair.

      5. For Environment type, select either Dev or Prod.

    3. Under AWS network configuration, take the following steps:

      1. Select a VPC ID.

      2. Enter CIDR #1 for the Qumulo security group.

      3. (Optional) Enter CIDR #2 for the Qumulo security group.

      4. Select the Private subnet ID(s).

    4. Under Qumulo file data platform configuration, take the following steps:

      1. For the Stack name from the persistent storage CloudFormation deployment, enter the name of the stack that you used to create your persistent storage.

      2. For Hot or Cold cluster, select an S3 storage class.

      3. Select the Qumulo EC2 instance type.

      4. Enter the Number of Qumulo EC2 instances.

        This number determines the number of nodes in your Qumulo cluster.

      5. Enter the Total number of Floating IPs for the Qumulo Cluster.

      6. Enter the Qumulo software version, Qumulo cluster name, and the Qumulo cluster administrator password.

    5. Click Next.

  7. On the Configure stack options page, read and accept the two acknowledgements, and then click Next.

  8. On the Review and create page, click Submit.

    CloudFormation creates resources for the stack and displays the CREATE_COMPLETE status for each resource.

  9. To log in to your cluster’s Web UI, use the endpoint from the the QumuloPrivateIP key on the Outputs tab for this stack and the username and password that you have configured.

    You can use the Web UI to create and manage NFS exports, SMB shares, snapshots, and continuous replication relationships You can also join your cluster to Active Directory, configure LDAP, and perform many other operations.

  10. Mount your Qumulo file system by using NFS or SMB and your cluster’s DNS name or IP address.

Step 3: Performing Post-Deployment Actions

This section describes the common actions you can perform on a CNQ cluster after deploying it.

Adding a Node to an Existing Cluster

  1. Log in to the AWS CloudFormation console.
  2. On the Stacks page, select your compute and cache deployment stack and then, in the upper right, click Update.
  3. On the Update stack page, click Use existing template and then click Next.
  4. On the Specify stack details page, enter a new value for Number of Qumulo EC2 instances and then click Next.
  5. On the Configure stack options page, in the Stack failure options section, click Roll back all stack resources, read and accept the two acknowledgements, and then click Next.
  6. On the Review <my-stack-name> page, click Submit.

    CloudFormation creates resources for the stack and displays the CREATE_COMPLETE status for each resource.

  7. To ensure that the Provisioner shut downs automatically, review the /qumulo/my-stack-name/last-run-status parameter in AWS Systems Manager (Application Management > Parameter Store).
  8. To check that the cluster is healthy, log in to the Web UI.

Removing a Node from an Existing Cluster

Removing a node from an existing cluster is a two-step process:

  1. Remove the node from your cluster’s quorum.
  2. Tidy up your AWS resources.

Step 1: Remove the Node from the Cluster’s Quorum

You must perform this step while the cluster is running.

  1. Copy the remove-nodes.sh script from the aws-cloudformation-cnq-<x.y>/utilities directory to a machine running in your VPC that has the AWS CLI tools installed (for example, an AWS Linux 2 AMI).

  2. Run the remove-nodes.sh script and specify the AWS region, the unique deployment name, the current node count, and the final node count.

    In the following example, we reduce a cluster from 6 to 4 nodes.

    ./remove-nodes.sh \
      --region us-west-2 \
      --qstackname my-unique-deployment-name \
      --currentnodecount 6 \
      --finalnodecount 4
    
  3. Review the nodes to be removed and then enter y.

  4. Enter the administrator password for your cluster.

    The script removes the nodes and displays:

    • Confirmation that your cluster formed a new quorum

    • Confirmation that the new quorum is active

    • The new total number of nodes in the quorum

    • The EC2 identifiers for the removed nodes

    • The endpoint for your cluster’s Web UI

    {"monitor_uri": "/v1/node/state"}
         --Waiting for new quorum
         --New quorum formed
         --Quorum is ACTIVE
         --Validating quorum
         --4 Nodes in Quorum
         --REMOVED: EC2 ID=i-0ab12345678c9012d >> Qumulo node_id=5
         --REMOVED: EC2 ID=i-9dc87654321b0987a >> Qumulo node_id=6
    **Verify the cluster is healthy in the Qumulo UI at https://203.0.113.10
    ...
    
  5. To check that the cluster is healthy, log in to the Web UI.

Step 2: Tidy Up Your AWS Resources

  1. On the Stacks page, select your compute and cache deployment stack and then, in the upper right, click Update.
  2. On the Update stack page, click Use existing template and then click Next.
  3. On the Specify stack details page, enter a lower value for Number of Qumulo EC2 instances (for example, 4) and then click Next.
  4. On the Configure stack options page, in the Stack failure options section, click Roll back all stack resources, read and accept the two acknowledgements, and then click Next.
  5. On the Review <my-stack-name> page, click Submit.

    The node and the infrastructure associated with the node are removed.

  6. To check that the cluster is healthy, log in to the Web UI.

Increasing the Soft Capacity Limit for an Existing Cluster

Increasing the soft capacity limit for an existing cluster is a two-step process:

  1. Configure new persistent storage parameters.
  2. Configure new compute and cache deployment parameters.

Step 1: Set New Persistent Storage Parameters

  1. On the Stacks page, select your persistent storage stack and then, in the upper right, click Update.
  2. On the Update stack page, click Use existing template and then click Next.
  3. On the Specify stack details page, enter a higher value for QSoftCapacityLimit and then click Next.
  4. On the Configure stack options page, in the Stack failure options section, click Roll back all stack resources, read and accept the two acknowledgements, and then click Next.
  5. On the Review <my-stack-name> page, click Submit.

    CloudFormation updates resources for the stack and displays the CREATE_COMPLETE status for each resource.

Step 2: Update Existing Compute and Cache Resource Deployment

  1. On the Stacks page, select your compute and cache deployment stack and then, in the upper right, click Update.
  2. On the Update stack page, click Use existing template and then click Next.
  3. On the Specify stack details page click Next.
  4. On the Configure stack options page, in the Stack failure options section, click Roll back all stack resources, read and accept the two acknowledgements, and then click Next.
  5. On the Review <my-stack-name> page, click Submit.

    CloudFormation updates resources for the stack and displays the CREATE_COMPLETE status for each resource.

    When the Provisioner shuts down automatically, this process is complete.

Scaling Your Existing CNQ on AWS Cluster

You can scale an existing CNQ on AWS cluster by changing the EC2 instance type. This is a three-step process:

  1. Create a new deployment in a new CloudFormation stack and join the new EC2 instances to a quorum.
  2. Remove the existing EC2 instances.
  3. Clean up your S3 bucket policies.

Step 1: Create a New Deployment in a New Terraform Workspace

  1. Log in to the AWS CloudFormation console.
  2. On the Stacks page, in the upper right, click Create stack > With new resources (standard).
  3. On the Create stack page, in the Specify template section, click Amazon S3 URL, enter the URL to your CloudFormation template, and then click Next.
  4. On the Specify stack details page, to use the same S3 buckets as before, enter the same Stack name as the one you used for the persistent storage stack name and then review the information in the Parameters section:

    1. For QReplacementCluster, click Yes.
    2. For QExistingDeploymentUniqueName, enter the current stack name.
    3. For QInstanceType, enter the EC2 instance type.
    4. (Optional) To change the number of nodes, enter the QNodeCount
    5. Click Next.
  5. On the Configure stack options page, read and accept the two acknowledgements, and then click Next.

  6. On the Review and create page, click Submit.

  7. To ensure that the Provisioner shut downs automatically, review the /qumulo/my-stack-name/last-run-status parameter in AWS Systems Manager (Application Management > Parameter Store).
  8. To check that the cluster is healthy, log in to the Web UI.

Step 2: Remove the Existing EC2 Instances

  1. To delete the previous CloudFormation stack, on the Stacks page, select the stack name for your previous deployment and then, in the upper right, click Delete.
  2. To ensure that the stack is deleted correctly, watch the deletion process.

    The previous EC2 instances are deleted.

Step 3: Clean Up S3 Bucket Policies

  1. On the Stacks page, select the newly created stack and then, in the upper right, click Update.
  2. On the Update stack page, click Use existing template and then click Next.
  3. On the Specify stack details page, for QReplacementCluster, click No.
  4. On the Configure stack options page, in the Stack failure options section, click Roll back all stack resources, read and accept the two acknowledgements, and then click Next.
  5. On the Review <my-stack-name> page, click Submit.

    CloudFormation updates resources for the stack and displays the CREATE_COMPLETE status for each resource.

Deleting an Existing Cluster

Deleting a cluster is a two-step process:

  1. Delete your Cloud Native Qumulo resources.
  2. Delete your persistent storage.
  1. Back up your data safely.
  2. Disable termination protection for your CloudFormation stack.
  3. To update your stack, do the following:
    1. On the Stacks page, select the existing stack and then, in the upper right, click Update.
    2. On the Update stack page, click Use existing template and then click Next.
    3. On the Specify stack details page, click Next.
    4. On the Configure stack options page, read and accept the two acknowledgements, and then click Next.
    5. On the Review <my-stack-name> page, click Rollback on failure and then click Submit.
  4. Delete your CloudFormation stack.