Scale a Cluster

This section describes how to scale up or scale down an Exasol cluster on Amazon Web Services (AWS) by changing the instance type through the Exasol Administration API.

Changing the instance type will stop and restart the specified cluster. Changing the instance type for the main cluster will result in a system down time of at least several minutes.

Prerequisites

If you are scaling the main cluster, all worker clusters must be shut down first. For more information, see Stop a Cluster.

Procedure

This procedure can be carried out using the Administration API.

The examples in this procedure are written using Bash on a Linux terminal. You can also use other interfaces and languages to execute the curl commands.

Placeholder values are styled as Bash variables, starting with the dollar sign ($) and using UPPERCASE characters. Replace the placeholders with your own values before executing the curl command.

If you already know the database and cluster names, you can skip the first two steps and go directly to step 3.

  1. Get information about the database by sending a GET request to the /api/v1/databases endpoint. For example:

    curl -k -X "GET" \
    "https://$EXASOL_IP/api/v1/databases" \
    -H "accept: application/json" \
    -H "Authorization: Basic $AUTH_TOKEN"

    The response will include the following:

    • Database ID
    • Database name
    • Database version
    • Provider type
    • Number of clusters in the database
    • Number of clusters running
    • Volumes

    Additional database parameters and hardware details may be included in the response depending on the configuration and platform.

  2. To find cluster information, send a GET request to the /api/v1/databases/DATABASE_ID/clusters endpoint. For example:

    curl -k -X "GET" \
    "https://$EXASOL_IP/api/v1/databases/$DATABASE_ID/clusters" \
    -H "accept: application/json" \
    -H "Authorization: Basic $AUTH_TOKEN"
  3. To change the instance type, send a PUT request to the /api/v1/databases/DATABASE_ID/clusters/CLUSTER_ID/scale endpoint. Replace the instance type in the example below with the desired instance type. For example:

    curl -k -X "PUT" \
    "https://$EXASOL_IP/api/v1/databases/$DATABASE_ID/clusters/$CLUSTER_ID/scale" \
    -H "accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Basic $AUTH_TOKEN" \
    -d '{
    "instanceType": "c5d.4xlarge"
    }'

Verification

To check which instance type is currently used for the nodes in a cluster, send a GET request to the /api/v1/databases/DATABASE_ID/clusters/CLUSTER_ID endpoint.

# REST call:
curl -k -X "GET" \
"https://$EXASOL_IP/api/v1/databases/$DATABASE_ID/clusters/$CLUSTER_ID" \
-H "accept: application/json" \
-H "Authorization: Basic $AUTH_TOKEN"
  

The response looks like:

# server response (example):   
{
  "status": "running",
  "name": "Exasol",
  "id": "Exasol",
  "type": "main",
  "volumeID": "DataVolume1",
  "instanceModel": "c5d.4xlarge",
  "region": "eu-west-1",
  "memorySize": 27968,
  "storageRedundancy": 2,
  "totalNodes": 2,
  "activeNodes": 2,
  "hasSharedNodes": false,
  "auditing": false,
  "version": "8.0.7"
}