VAST on Cloud

Prev Next

VAST on Cloud enables you to spin up virtual VAST Clusters as ephemeral or persistent cloud resources on a permanent or on-demand basis.  It is ideal for providing a wide range of data services in the cloud for both permanent and short-term jobs. With VAST on Cloud, you get access to enterprise-class, high-performance File, Object, and Database capabilities, benefitting from the powerful VAST data reduction capabilities. When needed, you can leverage the VAST DataSpace to transfer data between your cloud and on-prem clusters.

VAST on Cloud (VoC) clusters are provisioned using a cloud service called the Multi-Cluster Manager, which you deploy using VAST Data's template in the AWS CloudFormation service. Each VoC cluster is installed and configured with a management access IP, and with VIP pools pre-configured for replication and protocol access, enabling you to start running your workloads quickly.

We recommend using the global snapshot clone feature to instantly replicate data from your on-premises cluster to a VAST on Cloud cluster, and to use async replication to periodically replicate your output to your on-premises cluster. This makes the data instantly available for your workloads. Follow the sections below to create a VAST on Cloud cluster and start working. 

Once your cluster is installed in the cloud, you can use a global snapshot clone with background sync to fully copy the data to the cloud, or without background sync in which case only the metadata is copied and data is read from the source on demand. You can alternatively replicate the data using VAST async replication. The method described below uses a global snapshot clone with or without background sync. 

Limitations

  • VoC clusters are supported only if the instance type (which is set during the creation procedure) is On-demand and Resiliency (another setting in the cluster creation procedure) is enabled.

    Note

    Spot instances with resiliency disabled may be preferred for the purpose of a PoC or a demo, provided risk of data loss is acceptable.

  • In the event of downtime, data is rebuilt while the cluster comes back online. Recovery from any subsequent failure that may occur during the rebuild is not guaranteed.

  • VAST on Cloud clusters do not support expansion or OS upgrade.

  • Ongoing changes on a data path that you cloned using a global snapshot clone are not synced with the VAST on Cloud cluster. The data you work with is sourced from the specific snapshot that you clone.

Prerequisites

  • For deploying an instance of the Multi-Cluster Manager:

    • AWS account with a Virtual Private Cloud (VPC) with at least two availability zones for private networks, connected to the internet with NAT gateway.

    • If you would like your Multi-cluster Manager to manage VoC instances on different AWS regions, a peering connection between the VPCs must be established prior to the deployment of the VoC instance.

  • For deploying VoC instances: 

    • A VPC with at least one availability zone for private networks, connected to the internet with NAT gateway

    • To support replication between an on-premises cluster and a VoC cluster, a direct-connect or VPN connection established from the VPC to the on-premises network. 

  • An AWS account with the following security policies: 

    • For deploying Multi-Cluster Manager, both of the following:

      {
          "Version": "2012-10-17",
          "Statement": [
              {
                  "Sid": "CloudFromationCreator",
                  "Effect": "Allow",
                  "Action": [
                      "cloudformation:UpdateStack",
                      "cloudformation:CreateStack"
                  ],
                  "Resource": "*"
              },
              {
                  "Sid": "CloudFromationEditor",
                  "Effect": "Allow",
                  "Action": [
                      "cloudformation:DeleteStack",
                      "cloudformation:DescribeStackEvents"
                  ],
                  "Resource": "arn:aws:cloudformation:*:*:stack/*/*",
                  "Condition": {
                      "StringEquals": {
                          "aws:ResourceTag/VoC:component": "mcvms"
                      }
                  }
              },
              {
                  "Sid": "AWSLambdaCreator",
                  "Effect": "Allow",
                  "Action": [
                      "lambda:CreateFunction",
                      "lambda:TagResource",
                      "lambda:GetFunction"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:ResourceTag/VoC:component": "mcvms"
                      }
                  }
              },
              {
                  "Sid": "RollPass",
                  "Effect": "Allow",
                  "Action": [
                      "iam:PassRole"
                  ],
                  "Resource": "*"
              },
              {
                  "Effect": "Allow",
                  "Action": "iam:TagRole",
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:RequestTag/VoC:component": "mcvms"
                      }
                  }
              },
              {
                  "Sid": "AWSLambdaEditor",
                  "Effect": "Allow",
                  "Action": [
                      "lambda:UpdateFunctionCode",
                      "lambda:UpdateFunctionConfiguration",
                      "lambda:DeleteFunction",
                      "lambda:InvokeFunction"
                  ],
                  "Resource": "arn:aws:lambda:*:*:function:*",
                  "Condition": {
                      "StringEquals": {
                          "aws:ResourceTag/VoC:component": "mcvms"
                      }
                  }
              },
              {
                  "Sid": "EC2InstanceCreatorWithTag",
                  "Effect": "Allow",
                  "Action": [
                      "ec2:RunInstances",
                      "ec2:CreateVolume"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:ResourceTag/VoC:component": "mcvms"
                      }
                  }
              },
              {
                  "Sid": "EC2InstanceEditor",
                  "Effect": "Allow",
                  "Action": [
                      "ec2:AttachVolume",
                      "ec2:DeleteVolume",
                      "ec2:TerminateInstances",
                      "ec2:TerminateInstances"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:ResourceTag/VoC:component": "mcvms"
                      }
                  }
              },
              {
                  "Sid": "DescribeComponants",
                  "Effect": "Allow",
                  "Action": [
                      "ec2:DescribeKeyPairs",
                      "ec2:DescribeSecurityGroups",
                      "ec2:DescribeSubnets",
                      "ec2:DescribeVpcs",
                      "autoscaling:DescribeLaunchConfigurations",
                      "elasticloadbalancing:DescribeLoadBalancers",
                      "rds:DescribeDBSecurityGroups",
                      "cloudformation:DescribeStacks",
                      "iam:GetRole",
                      "iam:PutRolePolicy",
                      "iam:AddRoleToInstanceProfile",
                      "elasticloadbalancing:DescribeTargetGroups",
                      "elasticloadbalancing:DescribeListeners",
                      "ec2:CreateSecurityGroup",
                      "rds:CreateDBSubnetGroup",
                      "elasticloadbalancing:CreateTargetGroup",
                      "rds:DescribeDBSubnetGroups",
                      "kms:DescribeKey",
                      "kms:CreateGrant",
                      "secretsmanager:CreateSecret",
                      "rds:DescribeDBInstances",
                      "elasticloadbalancing:CreateListener",
                      "iam:GetInstanceProfile",
                      "ec2:RunInstances",
                      "ec2:DescribeLaunchTemplates",
                      "ec2:DescribeLaunchTemplateVersions",
                      "ec2:CreateLaunchTemplateVersion",
                      "iam:DeleteInstanceProfile",
                      "iam:AttachRolePolicy",
                      "iam:ListRolePolicies",
                      "ec2:ModifyLaunchTemplate",
                      "autoscaling:DescribeAutoScalingGroups",
                      "autoscaling:DescribeScalingActivities",
                      "autoscaling:DescribeAutoScalingInstances",
                      "iam:CreateInstanceProfile",
                      "ec2:DescribeInstances",
                      "ec2:CreateTags",
                      "rds:ListTagsForResource"
                  ],
                  "Resource": "*"
              },
              {
                  "Sid": "SecurityGroupTagCreator",
                  "Effect": "Allow",
                  "Action": [
                      "ec2:CreateTags"
                  ],
                  "Resource": "arn:aws:ec2:*:*:security-group/*",
                  "Condition": {
                      "StringEquals": {
                          "aws:RequestTag/VoC:component": "mcvms"
                      }
                  }
              },
              {
                  "Sid": "SecurityGroupTagCreator2",
                  "Effect": "Allow",
                  "Action": [
                      "ec2:RevokeSecurityGroupEgress",
                      "ec2:RevokeSecurityGroupIngress"
                  ],
                  "Resource": "arn:aws:ec2:*:*:security-group/*"
              },
              {
                  "Sid": "InstanceProfileEditor",
                  "Effect": "Allow",
                  "Action": [
                      "iam:DeleteInstanceProfile",
                      "iam:RemoveRoleFromInstanceProfile"
                  ],
                  "Resource": "arn:aws:iam::*:instance-profile/*VocInstanceProfile*"
              },
              {
                  "Sid": "LaunchTemplateTagCreator",
                  "Effect": "Allow",
                  "Action": [
                      "ec2:CreateTags"
                  ],
                  "Resource": "arn:aws:ec2:*:*:launch-template/*",
                  "Condition": {
                      "StringEquals": {
                          "aws:RequestTag/VoC:component": "mcvms"
                      }
                  }
              },
              {
                  "Sid": "LaunchTemplateTagCreatorForASG",
                  "Effect": "Allow",
                  "Action": [
                      "ec2:CreateTags"
                  ],
                  "Resource": "arn:aws:autoscaling:*:*:autoScalingGroup:*:autoScalingGroupName/*McVmsASG*"
              },
              {
                  "Sid": "SecurityGroupEditor",
                  "Effect": "Allow",
                  "Action": [
                      "ec2:CreateSecurityGroup",
                      "ec2:AuthorizeSecurityGroupIngress",
                      "ec2:AuthorizeSecurityGroupEgress",
                      "ec2:RevokeSecurityGroupIngress",
                      "ec2:RevokeSecurityGroupEgress",
                      "ec2:CreateSecurityGroup",
                      "ec2:DeleteSecurityGroup"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:ResourceTag/VoC:component": "mcvms"
                      }
                  }
              },
              {
                  "Sid": "RolePolicyCreator",
                  "Effect": "Allow",
                  "Action": [
                      "iam:CreateRole",
                      "iam:CreatePolicy",
                      "iam:AttachRolePolicy",
                      "iam:GetRolePolicy"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:RequestTag/VoC:component": "mcvms"
                      }
                  }
              },
              {
                  "Sid": "ASGRoleAttacher",
                  "Effect": "Allow",
                  "Action": [
                      "iam:AttachRolePolicy",
                      "iam:PutRolePolicy"
                  ],
                  "Resource": "arn:aws:autoscaling:*:*:autoScalingGroup:*:autoScalingGroupName/*-McVmsASG-*"
              },
              {
                  "Sid": "RolePolicyEditor",
                  "Effect": "Allow",
                  "Action": [
                      "iam:DetachRolePolicy",
                      "iam:DeletePolicy",
                      "iam:DetachRolePolicy",
                      "iam:DeleteRole",
                      "iam:DetachRolePolicy",
                      "iam:DeleteRolePolicy",
                      "iam:AttachRolePolicy",
                      "iam:GetRolePolicy"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:ResourceTag/VoC:component": "mcvms"
                      }
                  }
              },
              {
                  "Sid": "DBSecurityGroupCreator",
                  "Effect": "Allow",
                  "Action": [
                      "rds:CreateDBSecurityGroup",
                      "rds:AddTagsToResource",
                      "secretsmanager:TagResource"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:RequestTag/VoC:component": "mcvms"
                      }
                  }
              },
              {
                  "Sid": "DBInstanceCreator",
                  "Effect": "Allow",
                  "Action": [
                      "rds:CreateDBInstance"
                  ],
                  "Resource": "*"
              },
              {
                  "Sid": "DBSecurityGroupEditor",
                  "Effect": "Allow",
                  "Action": [
                      "rds:AuthorizeDBSecurityGroupIngress",
                      "rds:RevokeDBSecurityGroupIngress",
                      "rds:DeleteDBSecurityGroup",
                      "rds:DeleteDBInstance",
                      "rds:ModifyDBInstance",
                      "rds:AddTagsToResource"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:ResourceTag/VoC:component": "mcvms"
                      }
                  }
              },
              {
                  "Sid": "DBInstanceDeleter",
                  "Effect": "Allow",
                  "Action": [
                      "rds:DeleteDBInstance"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:ResourceTag/VoC:component": "mcvms"
                      }
                  }
              },
              {
                  "Sid": "DBSubNetGroupDeleter",
                  "Effect": "Allow",
                  "Action": [
                      "rds:DeleteDBSubnetGroup"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:ResourceTag/VoC:component": "mcvms"
                      }
                  }
              }
          ]
      }
      
      
      {
          "Version": "2012-10-17",
          "Statement": [
              {
                  "Sid": "AutoScalingGroupCreator",
                  "Effect": "Allow",
                  "Action": [
                      "autoscaling:CreateAutoScalingGroup",
                      "autoscaling:CreateLaunchConfiguration",
                      "elasticloadbalancing:CreateLoadBalancer",
                      "elasticloadbalancing:CreateTargetGroup",
                      "elasticloadbalancing:CreateListener",
                      "autoscaling:UpdateAutoScalingGroup",
                      "ec2:CreateLaunchTemplate",
                      "elasticloadbalancing:AddTags"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:RequestTag/VoC:component": "mcvms"
                      }
                  }
              },
              {
                  "Sid": "AutoScalingGroupEditor",
                  "Effect": "Allow",
                  "Action": [
                      "autoscaling:DeleteAutoScalingGroup",
                      "autoscaling:DeleteLaunchConfiguration",
                      "ec2:DeleteLaunchTemplate",
                      "autoscaling:DeleteLaunchConfiguration",
                      "elasticloadbalancing:CreateTargetGroup",
                      "ec2:CreateLaunchTemplateVersion",
                      "ec2:ModifyLaunchTemplate",
                      "elasticloadbalancing:DeleteLoadBalancer",
                      "autoscaling:UpdateAutoScalingGroup"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:ResourceTag/VoC:component": "mcvms"
                      }
                  }
              },
              {
                  "Sid": "LoadBalancerListenerDeleter",
                  "Effect": "Allow",
                  "Action": [
                      "elasticloadbalancing:DeleteListener"
                  ],
                  "Resource": "arn:aws:elasticloadbalancing:*:*:listener/net/LB-*/*/*"
              },
              {
                  "Sid": "LoadBalancerTargetGroupDeleter",
                  "Effect": "Allow",
                  "Action": [
                      "elasticloadbalancing:DeleteTargetGroup"
                  ],
                  "Resource": "arn:aws:elasticloadbalancing:*:*:targetgroup/TG-*/*"
              }
          ]
      }
    • For deploying VoC:

      {
          "Version": "2012-10-17",
          "Statement": [
              {
                  "Sid": "CloudFromationCreator",
                  "Effect": "Allow",
                  "Action": [
                      "cloudformation:CreateStack"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:ResourceTag/VoC:component": "voc"
                      }
                  }
              },
              {
                  "Sid": "CloudFromationEditor",
                  "Effect": "Allow",
                  "Action": [
                      "cloudformation:UpdateStack",
                      "cloudformation:DeleteStack",
                      "cloudformation:DescribeStackEvents"
                  ],
                  "Resource": "arn:aws:cloudformation:*:*:stack/*/*",
                  "Condition": {
                      "StringEquals": {
                          "aws:ResourceTag/VoC:component": "voc"
                      }
                  }
              },
              {
                  "Sid": "AWSLambdaCreator",
                  "Effect": "Allow",
                  "Action": [
                      "lambda:CreateFunction",
                      "lambda:TagResource",
                      "lambda:GetFunction",
                      "logs:TagResource",
                      "logs:PutRetentionPolicy",
                      "logs:CreateLogGroup"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:ResourceTag/VoC:component": "voc"
                      }
                  }
              },
              {
                  "Sid": "RollPass",
                  "Effect": "Allow",
                  "Action": [
                      "iam:PassRole"
                  ],
                  "Resource": "*"
              },
              {
                  "Effect": "Allow",
                  "Action": "iam:TagRole",
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:RequestTag/VoC:component": "voc"
                      }
                  }
              },
              {
                  "Effect": "Allow",
                  "Action": "iam:TagRole",
                  "Resource": "*"
              },
              {
                  "Sid": "AWSLambdaEditor",
                  "Effect": "Allow",
                  "Action": [
                      "lambda:UpdateFunctionCode",
                      "lambda:UpdateFunctionConfiguration",
                      "lambda:DeleteFunction",
                      "lambda:InvokeFunction"
                  ],
                  "Resource": "arn:aws:lambda:*:*:function:*",
                  "Condition": {
                      "StringEquals": {
                          "aws:ResourceTag/VoC:component": "voc"
                      }
                  }
              },
              {
                  "Sid": "EC2InstanceCreatorWithTag",
                  "Effect": "Allow",
                  "Action": [
                      "ec2:RunInstances"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:ResourceTag/VoC:component": "voc"
                      }
                  }
              },
              {
                  "Sid": "EC2InstanceEditor",
                  "Effect": "Allow",
                  "Action": [
                      "ec2:AttachVolume",
                      "ec2:DeleteVolume",
                      "ec2:TerminateInstances"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:ResourceTag/VoC:component": "voc"
                      }
                  }
              },
              {
                  "Sid": "DescribeComponants",
                  "Effect": "Allow",
                  "Action": [
                      "ec2:DescribeKeyPairs",
                      "ec2:DescribeSecurityGroups",
                      "ec2:DescribeSubnets",
                      "ec2:DescribeVpcs",
                      "autoscaling:DescribeLaunchConfigurations",
                      "cloudformation:DescribeStacks",
                      "iam:GetRole",
                      "iam:PutRolePolicy",
                      "iam:AddRoleToInstanceProfile",
                      "ec2:CreateSecurityGroup",
                      "secretsmanager:CreateSecret",
                      "iam:GetInstanceProfile",
                      "ec2:RunInstances",
                      "ec2:DescribeLaunchTemplates",
                      "ec2:DescribeLaunchTemplateVersions",
                      "ec2:CreateLaunchTemplateVersion",
                      "iam:DeleteInstanceProfile",
                      "iam:AttachRolePolicy",
                      "iam:ListRolePolicies",
                      "ec2:ModifyLaunchTemplate",
                      "autoscaling:DescribeAutoScalingGroups",
                      "autoscaling:DescribeScalingActivities",
                      "autoscaling:DescribeAutoScalingInstances",
                      "iam:CreateInstanceProfile",
                      "ec2:DescribeInstances",
                      "ec2:DescribeManagedPrefixLists",
                      "ec2:CreateNetworkInterface",
                      "ec2:DescribeNetworkInterfaces",
                      "ec2:CreateVolume",
                      "ec2:DescribeVolumes"
                  ],
                  "Resource": "*"
              },
              {
                  "Sid": "SecurityGroupTagCreator",
                  "Effect": "Allow",
                  "Action": [
                      "ec2:CreateTags"
                  ],
                  "Resource": "arn:aws:ec2:*:*:security-group/*",
                  "Condition": {
                      "StringEquals": {
                          "aws:RequestTag/VoC:component": "voc"
                      }
                  }
              },
              {
                  "Sid": "SecurityGroupTagCreator2",
                  "Effect": "Allow",
                  "Action": [
                      "ec2:RevokeSecurityGroupEgress",
                      "ec2:RevokeSecurityGroupIngress",
                      "logs:PutRetentionPolicy"
                  ],
                  "Resource": "*"
              },
              {
                  "Sid": "InstanceProfileEditor",
                  "Effect": "Allow",
                  "Action": [
                      "iam:DeleteInstanceProfile",
                      "iam:RemoveRoleFromInstanceProfile"
                  ],
                  "Resource": "arn:aws:iam::*:instance-profile/*VocInstanceProfile*"
              },
              {
                  "Sid": "LaunchTemplateTagCreator",
                  "Effect": "Allow",
                  "Action": [
                      "ec2:CreateTags"
                  ],
                  "Resource": "arn:aws:ec2:*:*:launch-template/*",
                  "Condition": {
                      "StringEquals": {
                          "aws:RequestTag/VoC:component": "voc"
                      }
                  }
              },
              {
                  "Sid": "VolumeTagCreator",
                  "Effect": "Allow",
                  "Action": [
                      "ec2:CreateTags"
                  ],
                  "Resource": "arn:aws:ec2:*:*:volume/*",
                  "Condition": {
                      "StringEquals": {
                          "aws:RequestTag/VoC:component": "voc"
                      }
                  }
              },
              {
                  "Sid": "TagInstanceComponants",
                  "Effect": "Allow",
                  "Action": [
                      "ec2:CreateTags"
                  ],
                  "Resource": [
                      "arn:aws:ec2:*:*:instance/*",
                      "arn:aws:ec2:*:*:spot-instances-request/*",
                      "arn:aws:ec2:*:*:volume/*"
                  ],
                  "Condition": {
                      "StringEquals": {
                          "aws:RequestTag/VoC:component": "voc"
                      }
                  }
              },
              {
                  "Sid": "LaunchTemplateTagCreatorForASG",
                  "Effect": "Allow",
                  "Action": [
                      "ec2:CreateTags"
                  ],
                  "Resource": [
                      "arn:aws:autoscaling:*:*:autoScalingGroup:*:autoScalingGroupName/*ASG*",
                      "arn:aws:ec2:*:*:prefix-list/*",
                      "arn:aws:ec2:*:*:network-interface/*"
                  ]
              },
              {
                  "Sid": "CreateManagedPrefixList",
                  "Effect": "Allow",
                  "Action": [
                      "ec2:CreateManagedPrefixList"
                  ],
                  "Resource": "arn:aws:ec2:*:*:prefix-list/*"
              },
              {
                  "Sid": "SecurityGroupEditor",
                  "Effect": "Allow",
                  "Action": [
                      "ec2:CreateSecurityGroup",
                      "ec2:AuthorizeSecurityGroupIngress",
                      "ec2:AuthorizeSecurityGroupEgress",
                      "ec2:RevokeSecurityGroupIngress",
                      "ec2:RevokeSecurityGroupEgress",
                      "ec2:CreateSecurityGroup",
                      "ec2:DeleteSecurityGroup",
                      "ec2:DeleteManagedPrefixList",
                      "ec2:DeleteNetworkInterface"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:ResourceTag/VoC:component": "voc"
                      }
                  }
              },
              {
                  "Sid": "RolePolicyCreator",
                  "Effect": "Allow",
                  "Action": [
                      "iam:CreateRole",
                      "iam:CreatePolicy",
                      "iam:AttachRolePolicy",
                      "iam:GetRolePolicy",
                      "iam:TagRole"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:RequestTag/VoC:component": "voc"
                      }
                  }
              },
              {
                  "Sid": "ASGRoleAttacher",
                  "Effect": "Allow",
                  "Action": [
                      "iam:AttachRolePolicy",
                      "iam:PutRolePolicy"
                  ],
                  "Resource": "arn:aws:autoscaling:*:*:autoScalingGroup:*:autoScalingGroupName/*-McVmsASG-*"
              },
              {
                  "Sid": "RolePolicyEditor",
                  "Effect": "Allow",
                  "Action": [
                      "iam:DetachRolePolicy",
                      "iam:DeletePolicy",
                      "iam:DetachRolePolicy",
                      "iam:DeleteRole",
                      "iam:DetachRolePolicy",
                      "iam:DeleteRolePolicy",
                      "iam:AttachRolePolicy",
                      "iam:GetRolePolicy"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:ResourceTag/VoC:component": "voc"
                      }
                  }
              },
              {
                  "Sid": "AutoScalingGroupCreator",
                  "Effect": "Allow",
                  "Action": [
                      "autoscaling:CreateAutoScalingGroup",
                      "autoscaling:CreateLaunchConfiguration",
                      "autoscaling:UpdateAutoScalingGroup",
                      "ec2:CreateLaunchTemplate"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:RequestTag/VoC:component": "voc"
                      }
                  }
              },
              {
                  "Sid": "AutoScalingGroupEditor",
                  "Effect": "Allow",
                  "Action": [
                      "autoscaling:DeleteAutoScalingGroup",
                      "autoscaling:DeleteLaunchConfiguration",
                      "ec2:DeleteLaunchTemplate",
                      "autoscaling:DeleteLaunchConfiguration",
                      "ec2:CreateLaunchTemplateVersion",
                      "ec2:ModifyLaunchTemplate",
                      "autoscaling:UpdateAutoScalingGroup"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:ResourceTag/VoC:component": "voc"
                      }
                  }
              },
              {
                  "Sid": "DeleteStacks",
                  "Effect": "Allow",
                  "Action": [
                      "cloudformation:DeleteStack",
                      "cloudformation:DeleteStackInstances"
                  ],
                  "Resource": "*"
              }
          ]
      }
  • An EC2 KeyPair to use for SSH access to the cluster stack

Provisioning VAST on Cloud Clusters

Create a Multi-Cluster Manager Instance

  1. Browse to the AWS Marketplace.

  2. Search for VAST Data.

  3. From the search results, select the product called VAST Data Platform .

  4. Click Continue to Subscribe.

  5. Click Continue to Configuration.

  6. On the Configure this Software page, from the Fulfillment option dropdown, select VAST Data Platform.

  7. Select the latest version from the Select a version dropdown.

  8. From the Region dropdown, select the region where you want to deploy the Multi-Cluster Manager instance. 

  9. Click Continue to Launch.

  10. On the Launch this software page, from the Choose Action dropdown, select Launch CloudFormation.

  11. Click Launch.

  12. On the Create stack page, click Next.

  13. On the Specify stack details page In the Stack name field, enter a unique name for the stack. This will be the name of the Multi-Cluster Manager instance. 

  14. Under RequiredParameters, complete the template parameters: 

    EnableCallHome

    False by default. Set to true to enable the periodic sending of logs from the MCM to VAST's support bucket. 

    KeyName

    Select an existing EC2 KeyPair to enable SSH access to the cluster. 

    SecurityGroupIds

    Specify one or more security groups. The following ports must be open in the security group(s):

    • 22 (SSH)

    • 443 (HTTPS)

    DBSubnetsGroup

    Provide a list of subnets from which to create the database subnet.

    BucketName

    Specify the name of a bucket to be used by the Multi-cluster Manager and by Vast-on-Cloud instances.

    Note

    The bucket must be assigned the following permissions (replace <region> and <bucket-name> with the region and bucket name respectively):

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "logs.<region>.amazonaws.com"
                },
                "Action": "s3:GetBucketAcl",
                "Resource": "arn:aws:s3:::<bucket-name>"
            },
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "logs.<region>.amazonaws.com"
                },
                "Action": "s3:PutObject",
                "Resource": "arn:aws:s3:::<bucket-name>/*",
                "Condition": {
                    "StringEquals": {
                        "s3:x-amz-acl": "bucket-owner-full-control"
                    }
                }
            }
        ]
    }
  15. Click Next.

  16. Review the details and click Submit.

    The process of creating the stack begins and the status of the stack is shown as CREATE_IN_PROGRESS at first. When the process is complete, the status changes to CREATE_COMPLETE.

    The CloudFormation stack output provides a link to the web user interface for the multi-cluster manager. 

Register Your Multi-Cluster Manager Instance

  1. Contact your VAST Sales Engineer and request a registration token for registering your Multi-Cluster Manager instance. You will be asked to supply your AWS account ID. This step can be performed in advance.

  2. Browse to the web user interface of the Multi-Cluster Manager instance. You can find the link in the output of the CloudFormation stack for the multi-cluster manager. 

  3. Next to the prompt to Please provide a registration token, click Click to Update.

    The Insert token to proceed dialog appears.

  4. Enter the token provided by your Sales Engineer in the Token field.

  5. Click Continue.

Creating a VAST on Cloud Cluster

  1. Browse to the web user interface of the Multi-Cluster Manager instance and click Create New Cloud Cluster

  2. Complete these fields: 

    Cluster name

    Enter a name for the cluster you are creating. 

    Regions

    Select the AWS region where you want to deploy the cluster.

    Capacity types

    Select a capacity size for the cluster (25TB or 50TB)

    Instance market type

    Select an instance type:

    • On-demand. Choose this type in most cases. The alternate option is not supported by VAST and is subject to a risk of data loss.  

    • spot . This option is available but not supported. It is sometimes preferred for PoCs, demos and the like. Choose this option only if the risk of data loss is not an issue for the use case.  

    Note

    VAST supports VoC clusters on condition that On-demand is selected for instance type and resiliency is enabled.

    Note

    If resiliency is disabled and the cluster is brought down, the data on the cluster is lost and the cluster needs to be re-installed.

    Resiliency

    Enable this setting to ensure that the VoC cluster VM is resilient. This means that the VM will come back up automatically if it goes down and rebuild its local data from persistent cloud storage resources. This feature incurs the cost of AWS storage resources to provide persistent cloud storage. 

    If this setting is disabled, data on the VoC cluster is lost if the cluster is brought down by AWS, such as if you build the stack using a spot instance and that spot is brought down during operation.  Clusters provisioned with resiliency disabled are not supported by VAST. The option is available for cases where it is preferred despite the risk of data loss, such as for PoCs and demos.

    Note

    VAST supports VoC clusters on condition that On-demand is selected for instance type and resiliency is enabled.

    Enable Similarity

    This setting is disabled by default.

    Enable this setting to enable similarity-based data reduction on the cluster. Similarity-Based Data Reduction

    Enable Callhome

    This setting is disabled by default.

    Enable this setting to enable the sending of callhome logs on the cluster. Configuring Call Home Settings

    Tags

    Optionally add AWS tags to the cluster.

    To add a tag, enter the tag key value in the Tags field and the tag value in the value field. To add another tag, click the Add button.

  3. Click Create.

    A card for the new cluster is added to the Cards tab.

  4. On the cluster's card, click Click to finish setup in AWS

    An AWS CloudFormation service opens. 

  5. In the Stack Name field, optionally customize the name of the cluster. By default, the name is pre-filled and is formed as <cluster name>-stack, where <cluster name> is the cluster name you provided in step 2.

  6. Complete the parameters for the cluster:

    VPC

    Select the Virtual Private Cloud where you want to host the cluster. 

    KeyName

    Select an existing EC2 KeyPair to enable SSH access to the cluster. 

    IgnoreNFSPermissions

    This setting is disabled by default. If enabled, the VoC cluster will ignore file permissions and allow NFS and S3 clients to access data without checking permissions. 

    This setting is provided for the event that you do not have a way to synchronize user attributes between VoC clusters and on-premise clusters. That is, when you replicate data from an on-premises cluster to the VAST on Cloud cluster, the user and group permissions will be replicated as well. However, the provider configurations are not automatically replicated. You can either connect any relevant provider(s) to the VAST on Cloud cluster or, if you will not be able to or prefer not to connect the VAST on Cloud cluster to a provider that can authorize user and group permissions for the data that you want to replicate to the cloud, you can set this to true

    This setting cannot be changed through the VoC's VMS. Therefore, choose now whether to enable this setting. 

    SubnetId

    Select the subnet in which the cluster should reside.

    SecurityGroupId / CreateNewSecurityGroup

    Either select a security group ID from the SecurityGroupId field to select an existing security group or set CreateNewSecurity to True to create a new security group. 

    The security group should have the following TCP ports open for ingress: 

    • 80 (HTTP)

    • 5551 (VMS installation monitor)

    • 443 (HTTPS)

    • 111

    • 445 (NETBIOS)

    • 2049. (NFS)

    • 6126

    • 49002 (Replication peer initialization)

    • 20106 (NSM)

    • 49001 (Replication initialization)

    • 20107 (NLM)

    • 20048 (Mount)

    All ports should be open for egress. ICMP should be open for ingress.

    SecurityRulesCIDRs

    Applicable if you selected CreateNewSecurityGroup. Specify up to ten CIDRs from which to allow inbound access.

  7. Under Capabilities, select the checkboxes.

  8. Click Create Stack.

    The process of creating the stack begins and the status of the stack is shown as CREATE_IN_PROGRESS at first. In the DataSpace instance, the cluster's card also displays "In progress". When the process is complete, the status changes to CREATE_COMPLETE.

Cloud Cluster Initial Configuration

When the cluster is created, the cluster's network configuration details for the cluster appear on the Outputs tab of the CloudFormation service.

The cluster is created with the following configuration:

Configuration

Key in CloudFormat Outputs Page

VMS Management IP 

ClusterMgmt

VIP pool for protocol access

ProtocolVips

VIP pool for replication

ReplicationVips

VMSMonitor

Links to the VMS monitor, which reports the cluster's installation progress.

Use this to monitor the initial installation progress, until the VMS is up. Then use the VMS's Activities page to continue monitoring the cluster's installation.

Managing VoC Clusters from the Multi-Cluster Manager Instance

The Multi-Cluster Manager enables you to:

  • Suspend and resume a cluster.

  • Remove a cluster.

Suspending and Resuming a VoC Cluster

To suspend a VoC cluster:

  1. On the cluster's card, click the suspend_button.png button.

  2. Click Yes to confirm the action.

    The cluster is suspended. 

To resume a suspended VoC cluster:

  1. On the cluster's card, click the resume.png button.

  2. Click Yes to confirm the action.

    The cluster is resumed. The cluster starts to service IOs after several minutes. It takes another approximately 45 minutes until it services IOs with the same performance level as it did prior to suspension. 

Deleting a VoC Cluster

  1. On the cluster's card, click the delete_voc_button.png button.

  2. Read the warning and type DELETE in all caps in the field provided.

  3. Click Yes, Delete.

    The cluster is deleted. 

Replicating Your Workload to VAST on Cloud 

In order to replicate your workload to your VAST on Cloud cluster, we recommend using a global snapshot clone because it enables instant cloning of your data, providing you with instant access to the data from your VAST on Cloud cluster.

  1. Browse to the cluster's VMS management IP, which is listed as ClusterMgmt IP in the Outputs tab of the AWS CloudFormation > Stacks page).

    Alternately, from the Multi-Cluster Manager Web UI, click the button on the cluster's card to open the cluster. 

    The VMS VAST Web UI appears. 

  2. Log into VMS with a VMS manager user name and password. 

    For the default user name and password, see Managing VAST Cluster Passwords.Managing VAST Cluster Passwords

  3. Verify on the Activities page that the cluster_deploy task is complete. If not, wait until it is complete before continuing.

  4. Create a replication peer to establish a peer relationship between the on-premises cluster and the VAST on Cloud cluster. 

    1. Verify that there is a virtual IP pool for replication on the on-premises cluster (a virtual IP pool with role replication). 

      To create a new virtual IP pool for replication, see Managing Virtual IP Pools.Managing Virtual IP Pools

    2. On either the on premises cluster or the VAST on Cloud cluster, go to the Virtual IP Pools tab of the Network Access page and record at least one of the IPs that belong to a replication virtual IP pool. 

    3. On the other cluster, go to the Replication Peers tab of the Data Protection page.

    4. Click Create Peer and fill the following fields:

      Peer Name

      Enter a name for the peer configuration. The peer configuration will be mirrored on the other cluster and have the same name on both clusters.

      For example: OnPremtoCloudRep

      Remote VIP

      Enter any one of the VIPs in the replication virtual IP pool range of the other cluster. 

      The remote virtual IP is used to establish an initial connection between the peers. Once the connection is established, the peers share their external network topology and form multiple connections between the VIPs.

      If the remote peer's replication virtual IP pool is changed after the initial peer configuration, the new VIPs are learned automatically if the new range of IPs in the modified virtual IP pool intersects with the previous IP range. However, if the new IP range does not intersect with the old range, the remote virtual IP must be modified on the local peer. 

      For example: 198.51.100.200

      Local VIP Pool

      From the drop-down, select the replication virtual IP pool configured on the local cluster.

      On the VAST on Cloud cluster, this is called replicationPool.

      Secure Mode

      Select a secure mode for the peer:

      • Secure. Replication to this peer will be encrypted over the wire with mTLS.

        Secure mode requires a certificate, key and root certificate to be uploaded to VMS for mTLS encryption. 

      • None. Replication to this peer will not be encrypted over the wire.

      Caution

      This setting cannot be changed after creating the replication peer. 

    5. Click Create

  5. On the on-premises cluster, make sure you have a suitable snapshot to clone to the VAST on Cloud cluster for the workload. You can use a snapshot that was created by a protected path if the point in time meets your needs, or you can create a snapshot of the current data. To create a single current snapshot:

    1. From the left navigation menu, select Data Protection and then Snapshots

    2. Click Create Snapshot.

    3. Complete the fields:

      Field

      Description

      Tenant

      Select a tenant where the local path that you want to capture resides. 

      Name (required)

      Enter a name for the snapshot.

      Path (required)

      Enter the path to a directory. The snapshot will include all files and folders under the specified directory at the time of taking the snapshot.

      Expiration time

      If you want to make sure the snapshot expires some time in the future, specify that time here.

      Indestructible

      Enable this setting if you want the snapshot to be indestructible. This setting protects the snapshot from accidental or malicious deletion. For more information about indestructibility, see Indestructible Backups

      Caution

      After saving the snapshot, you won't be able to delete the snapshot or disable its indestructibility without performing an authorized unlocking of the cluster's indestructibility mechanism. 

    4. Click Create.

      The snapshot is created and is listed on the Snapshots page.

  6. On the VAST on Cloud cluster, open the Global Snapshot Clones tab of the Data Protection page. 

  7. Click Create Global Snapshot Clone and complete the fields:

    Name

    Enter a name for the snapshot clone. 

    Background sync

    This is an optional setting that causes all of the snapshot data to be copied from the source to the destination after the clone is created. During the copying stage, read requests are directed to the source if the requested data is not yet copied. When the copying is complete, the clone becomes a local directory.

    Leave this setting disabled if you want to ensure that only the data required for use on the VAST on Cloud cluster is copied. By default, snapshot data will be copied only when there is a request to read data. 

    Target tenant

    The tenant on the local cluster to which you want to clone the snapshot.

    Target Path

    The local path on the target tenant to create, where you want the clone to reside. An existing path is not valid. 

    Source cluster

    Select the replication peer that you configured in step Step 4

    Source tenant

    Select the tenant on the on premises cluster where the path that you want to clone resides.

    Source path

    After selecting Source cluster, select a path on the on premises cluster that you want to clone. The dropdown offers you a selection of paths that are protected by protected paths or by manual snapshots.

    Source snapshot

    After selecting the source path, select the specific snapshot to clone. The dropdown shows you all available snapshots for the selected source path. 

  8. Click Create.

    The path that you specified as the Source path is now cloned on the VAST on Cloud cluster. The directory structure of the data that was captured by the cloned snapshot is immediately accessible to clients. If you chose to disable background sync, data will be read from the source cluster and copied on request. If you enabled background sync, all of the data will be synced to the VAST on Cloud cluster and then accessible on the VAST on Cloud cluster. 

Accessing the Cloned Data Path 

To access the cloned data path from a client:

  • Client mounts should use the protocolsPool virtual IP pool on the VAST on Cloud cluster. 

    To find the IPs in the protocols virtual IP pool, open the Virtual IP Pools tab of the Network Access page. The IP ranges included in the pool are displayed in the IP Ranges column.

  • File permissions are replicated with the data. If you set IgnoreNFSPermissions to False in the template parameters, make sure to connect the provider(s) that store the relevant user and group entries to the VAST on Cloud cluster. 

  • Configuration of view, view policy and provider may be needed to enable client access to the cloned path depending on the client's chosen access protocol. 

    Note

    The default cluster configuration provides a view of the root path of the file system, exposed to NFSv3 with no IP restrictions. So it is possible to mount the root path '/' from an NFSv3 client with no further configurations and access the cloned directory under that.

Replicate the Workload Output to the On-Premises Cluster

Replication can be used to move data from the cloud cluster to an on-premises cluster.

There are at least two ways to do this:

Configuring Replication of the Workload Output Using DataSpace from the On-Premises Cluster's VMS

  1. Connect the VoC cluster to the on-premises cluster's DataSpace page (see Connecting Clusters to DataSpace).

  2. Use the on-premises cluster's DataSpace page to configure replication with the VoC cluster as the source cluster and the on premises cluster as the destination cluster (see Configuring Async Replication from DataSpace).

Configuring Replication of the Workload Output from the VoC cluster's VMS

Create a protection policy on the VAST on Cloud cluster and then a protected path on the output folder:

  1. On the VAST on Cloud cluster, open the left navigation menu, select Data Protection and then select Protection Policies.

  2. Click Create Protection Policy.

  3. In the Add Protection Policy dialog, complete the fields:

    Field

    Description

    Policy name

    Enter a name for the protection policy.

    Peer

    Select the replication peer that you created already. 

    Snapshot prefix

    Enter a prefix for the snapshot names.

    The name of each snapshot will be <prefix>_<timestamp>, where <prefix> is the prefix specified here and <timestamp> is the time the snapshot is created, in the format yyyy-mm-ddTHH:MM:SS.SSSSSSzzz (T denotes time and doesn't represent a value, zzz is the timezone, and the time is accurate to the microsecond). For example, if the prefix is dev, a snapshot taken at 8:15 pm UTC on 20th November 2024 would be named dev_2024-11-20T20:15:06.144783UTC.

  4. If you want to make the protection policy indestructible, enable the Indestructible setting. This setting protects the policy and its snapshots from accidental or malicious deletion. For more information about indestructibility, see Indestructible Backups

    Caution

    After saving the protection policy, you won't be able to delete the policy or disable its indestructibility without performing a procedure for authorized unlocking of the cluster's indestructibility mechanism. 

    Note

    If a replication peer is configured, the indestructibility setting will be replicated to the peer.

  5. Set up one or more replication schedules:

    Note

    If you want to set up multiple schedules, click the Add Schedule button to display more scheduling fields in the dialog.

    • To set the start time, click in the Start at field. In the calendar that appears, click the start date you want and adjust the start time:

      Set_start_time.png

      Note

      When a protected path is active, it performs an initial data sync to the replication peer immediately after being created. The initial sync creates the first restore point. Therefore, the restore point created on the start date is in fact the second restore point.

    • To set a period, select a time unit from the Period dropdown and enter the number of time units in the Every field. 

      Note

      The minimum interval is 15 seconds. 

  6. Leave the Keep local copy for field blank if you want to delete snapshots immediately after they are replicated to the on premises cluster. 

    Alternatively, if you do want to retain backups on the VAST on Cloud cluster, you can set the Keep local copy for period. This is the amount of time for which local snapshots are retained on the local cluster. Select a time unit from the Period dropdown and enter the number of time units in the Keep local copy for field.

  7. Set the Keep remote copy for period. This is the amount of time restore points are retained on the on premises cluster.

    Select a time unit from the Period dropdown and enter the number of time units in the Keep remote copy for field. 

  8. Click Create.

    The protection policy is created and listed in the Protection Policies tab.

  9. On the Protected Paths tab, click Create Protected Path.

  10. In the Add Protected Path dialog, click Add Source and complete the fields:

    Tenant

    Select the tenant under which the output directory resides.

    Name

    Enter a name for the protected path.

    Path

    Enter the path to the output directory. A snapshot of this directory will be taken periodically according to the protection policy.

  11. Click Save.

  12. Click Add a Peer VIA Replication Or Global Access.

  13. In the Create Destination dialog, complete the fields: select Replication from the Capability dropdown and complete these fields:

    Protection policy

    From the dropdown, select the protection policy you created in step 8. 

    Warning

    After adding a destination to a protected path, it is not possible to change which policy is associated with the destination. All changes to a destination's snapshot schedule, replication schedule, and snapshot expiration must be done by modifying the protection policy. Those modifications affect all destinations that use the same protection policy. To work around this limitation, use one protection policy per destination.

    Cluster

    This field is filled automatically with the cluster specified as the peer in the protection policy, which should be the on-premises cluster. 

    Remote tenant

    This field appears only if the remote peer has more than one tenant. If it appears, select a tenant on the remote peer from the dropdown. The remote path will be created on the selected tenant. 

    Path

    Specify a path on the remote peer where the data should be replicated. This must be a directory that does not yet exist on the remote peer.

  14. Click Create.

    The protected path is created and listed in the Protected Paths tab. Replication will now run from the VAST on Cloud cluster to the on premises cluster on the schedule defined in the protection policy. 

Upgrading VoC Clusters

Upgrading a VoC cluster requires that the Multi-Cluster Manager is first upgraded to the required version. Therefore, to upgrade a VoC cluster, first follow the steps here to upgrade the Multi-Cluster Manager instance and then perform upgrade on the cluster.

To upgrade the Multi-Cluster Manager instance:

  1. AWS console home click CloudFormation. All the VM stacks are listed.

  2. Select the Multi-Cluster Manager's stack from the list and click Update.

  3. On the Update stack page, select Replace existing template.

  4. Under Specify template, select Amazon S3 URL.

  5. In the Amazon S3 URL field, insert the URL to the upgrade bundle (obtain this from VAST Support). For example, https://vastdata-releases.s3.eu-west-1.amazonaws.com/release_bundles/#######/release/mcvms-cf-#######.json.

  6. Click Next.

  7. In the Required Parameters page, click Next (no need to change any settings).

  8. On the Configure stack options page, click Next (no need to change any settings).

    Note

    If you encounter an error, "Failed to retrieve SNS topics", no action is needed.  

  9. In the review page, scroll down to the Capabilities section and check the box I acknowledge that AWS CloudFormation might create IAM resources.

  10. Click Submit.

    You are directed to the Stacks page, where the Multi-Cluster Manager stack is listed and you can monitor its status until the upgrade is complete.