Overview

Instance Pools is an Exoscale service allowing users to provision groups of identical Compute instances automatically. You can define a number of instances in the pool, and the service keeps the required number of instances up and running for you in order to achieve:

  • High availability: using an Instance Pool ensures that the target quantity of Compute instances is running.
  • Elasticity: Instance Pools can be scaled up and down dynamically, allowing the number of instances to match actual load and be more cost-efficient.

Getting Started

Before getting started with Instance Pools, please be aware of the following restrictions:

  • Instance Pools and their managed Compute instances cannot span multiple Exoscale zones, and cannot be migrated to another zone once created.
  • Instances Pool members have the same type (a.k.a. service offering): it is currently not possible to change the instance type on an existing Instance Pool.
  • Instance Pool members are named automatically, it is currently not possible to change an instance’s name. Instances are named pool-<first letters of the ID of the managing Instance Pool>-<random unique instance ID>
  • It is currently not possible to attach an Elastic IP to an Instance Pool.
  • It is currently not possible to use an Anti-Affinity Group with an Instance Pool.

You can create an Instance Pool either from the Compute > Instance Pools section in the Exoscale portal or using the exo instancepool create CLI command. Here is an example of Instance Pool creation using the CLI:

$ exo instancepool create web \
    --zone ch-gva-2 \
    --size 3 \
    --description "Web servers" \
    --service-offering "Medium" \
    --template "Linux Ubuntu 19.10 64-bit" \
    --security-group "web" \
    --keypair "admin"

┼──────────────────┼──────────────────────────────────────┼
│ ID               │ ab8fbe95-72d4-0703-fcae-6401540d86ff │
│ Name             │ web                                  │
│ Description      │ Web servers                          │
│ Service Offering │ Medium                               │
│ Template         │ Linux Ubuntu 19.10 64-bit            │
│ Zone             │ ch-gva-2                             │
│ Security Groups  │ web                                  │
│ Privnets         │ n/a                                  │
│ SSH Key          │ admin                                │
│ Size             │ 3                                    │
│ Disk Size        │ 50 GiB                               │
│ State            │ scaling-up                           │
│ Instances        │ n/a                                  │
┼──────────────────┼──────────────────────────────────────┼

Note

Instance Pool size is constrained by your organization’s resource limits. If you want to scale an Instance Pool up, make sure your account’s Compute instance limit allows you to do so prior to attempt scaling up and reach out to our support if necessary.

Managing Instance Pools

This section describes all the supported operations on an Instance Pool.

Note

Only a subset of actions are supported on Instance Pool members (stop/destroy).

Retrieve an Instance Pool information

To retrieve its properties, you can access the expanded view of an existing Instance Pool by clicking on its name in the list accessible from the Compute > Instance Pools section in the Exoscale portal or using the exo instancepool show CLI command. Here is an example of Instance Pool retrieval using the CLI:

$ exo instancepool show --zone ch-gva-2 web
┼──────────────────┼──────────────────────────────────────┼
│ ID               │ ab8fbe95-72d4-0703-fcae-6401540d86ff │
│ Name             │ web                                  │
│ Description      │ Web servers                          │
│ Service Offering │ Medium                               │
│ Template         │ Linux Ubuntu 19.10 64-bit            │
│ Zone             │ ch-gva-2                             │
│ Security Groups  │ web                                  │
│ Private Networks │ n/a                                  │
│ SSH Key          │ admin                                │
│ Size             │ 3                                    │
│ Disk Size        │ 50 GiB                               │
│ State            │ running                              │
│ Instances        │ pool-ab8fb-xbedt                     │
│                  │ pool-ab8fb-obain                     │
│                  │ pool-ab8fb-cjrfw                     │
┼──────────────────┼──────────────────────────────────────┼

Update an Instance Pool properties

The following properties of an Instance Pool can be updated in-place:

  • Name
  • Description
  • Size
  • Managed Compute instances template
  • Managed Compute instances storage volume size

To update its properties, you can access the expanded view of an existing Instance Pool by clicking on its name in the list accessible from the Compute > Instance Pools section in the Exoscale portal then click on the Edit pool button, or using the exo instancepool update CLI command. Here is an example of Instance Pool update using the CLI:

$ exo instancepool update --zone ch-gva-2 web --size 2
┼──────────────────┼──────────────────────────────────────┼
│ ID               │ ab8fbe95-72d4-0703-fcae-6401540d86ff │
│ Name             │ web                                  │
│ Description      │ Web servers                          │
│ Service Offering │ Medium                               │
│ Template         │ Linux Ubuntu 19.10 64-bit            │
│ Zone             │ ch-gva-2                             │
│ Security Groups  │ web                                  │
│ Private Networks │ n/a                                  │
│ SSH Key          │ admin                                │
│ Size             │ 1                                    │
│ Disk Size        │ 50 GiB                               │
│ State            │ scaling-down                         │
│ Instances        │ pool-ab8fb-xbedt                     │
│                  │ pool-ab8fb-obain                     │
┼──────────────────┼──────────────────────────────────────┼

Note

When updating Instance Pool properties relating to the managed Compute instances (e.g. the instance template to use when creating or the instances storage volume size, except for the Instance Pool size), the new value is only taken into account for Compute instances created after the change: currently members are not affected by the change, meaning for example that if you change the instance template you will have to recycle the Instance Pool members (i.e. destroy a Compute instance manually and wait for the Instance Pool manager to replace it with a new one with up-to-date properties).

Note

In the event of an Instance Pool down-scaling, the excess of managed Compute instances are deleted starting with the oldest ones. This feature can be leveraged to quickly recycle the Instance Pool members by temporarily scaling up the size of the pool to double its size, and once the new Compute instances are operational scale down the pool to its original size to automatically get rid of the stale Compute instances.

Delete an Instance Pool

To delete an an Instance Pool, click on the Destroy Pool icon located on the same line as its name in the list accessible from the Compute > Instance Pools section in the Exoscale portal, or use the exo instancepool delete CLI command.

Warning

Deleting an Instance Pool also deletes its Compute instances.

Instance Pools lifecycle

Instance Pools lifecycle can be described by the following states:

State Description
creating The Instance Pool is being provisioned for the first time
scaling up The Instance Pool is being scaled up following its creation or a user scaling request, creating Compute instances to meet the requested pool size
running The Instance Pool is in a stable state, all of its managed Compute instances are running
scaling down The Instance Pool is being scaled down following a user scaling request, deleting Compute instances to meet the requested pool size
destroying The Instance Pool is being destroyed

Going Further

  • If you intend to deploy a cluster using Instance Pools, you can leverage the Exoscale Private Networks functionality to benefit from high performance and low latency connectivity between your Instance Pool members.
  • Provision Instance Pools using the Exoscale Terraform provider.

Pricing

This service is offered free of charge, only the resources consumed as a by-product of running Instance Pools (e.g. Compute instances, storage, egress network traffic) are charged at the usual rates.

Resources