Scale a Cluster

This article explains how to vertically scale an Exasol cluster on Amazon Web Services (AWS).

Vertical scaling refers to increasing or decreasing the compute power and RAM in a cluster. In an Exasol cluster deployed on AWS, vertical scaling is done by changing the EC2 instance type using the Exasol Administration API. For more information, see Choose EC2 Instance Type.

This procedure is carried out using the 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 downtime 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

The following examples use curl on a Linux terminal. You can also use other interfaces and languages to execute the curl commands.

Placeholder values in the examples are styled as Bash variables, for example: $NODE_IP. Replace these placeholders with your own values.

The option --insecure or -k tells curl to bypass the TLS certificate check. This option allows you to connect to a HTTPS server that does not have a valid certificate. Only use this option if certificate verification is not possible and you trust the server.

  1. To get information about the database, send a GET request to the /api/v1/databases endpoint.

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

    The response includes the database ID, name, and version. Additional details are included 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 --insecure -X "GET" \
    "https://$NODE_IP:4444/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 --insecure -X "PUT" \
    "https://$NODE_IP:4444/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://$NODE_IP:4444/api/v1/databases/$DATABASE_ID/clusters/$CLUSTER_ID" \
-H "accept: application/json" \
-H "Authorization: Basic $AUTH_TOKEN"
  

In the response the instance type is shown in the instanceModel parameter:

# server response (example):   
{
"status": "running",
"name": "MY_DATABASE",
"id": "MY_DATABASE",
"type": "main",
"instanceModel": "c5d.4xlarge",
"region": "eu-west-1",
"totalNodes": 2,
"activeNodes": 2,
"hasSharedNodes": false,
"ram": 27968
}