Overview

Exoscale Instance Pools are a service to provision groups of identical Compute instances automatically. You can define a number of instances in the pool and the service will keep the required number up and running for you in order to achieve:

  • High availability: using an Instance Pool ensures that the target quantity of instances is running.
  • Elasticity: Instance Pools can be scaled up and down dynamically so the number of instances matches the actual load for better cost efficiency.

Getting Started

Before getting started with Instance Pools, please note the following aspects and restrictions:

  • Instance Pools and their managed Compute instances cannot span multiple Exoscale zones, and cannot be migrated to another zone after they are created.
  • Instance Pool member instances might have different types. Updating the instance type applies only to new members. Existing members remain untouched.
  • If an Instance Pool is referenced by a Network Load Balancer service, it cannot be deleted.

You can create an Instance Pool from the Instance Pools section in the Portal under COMPUTE in the main navigation. You can also use the CLI.

Here is an example of Instance Pool creation using the CLI:

$ exo compute instance-pool create web \
    --zone ch-gva-2 \
    --size 3 \
    --description "Web servers" \
    --instance-type medium \
    --template "Linux Ubuntu 20.04 LTS 64-bit" \
    --security-group web \
    --ssh-key admin \
    --ipv6
 ✔ Creating Instance Pool "web"... 33s
┼──────────────────────┼──────────────────────────────────────┼
│ ID                   │ ab8fbe95-72d4-0703-fcae-6401540d86ff │
│ Name                 │ web                                  │
│ Description          │ Web servers                          │
│ Instance Type        │ standard.medium                      │
│ Template             │ Linux Ubuntu 20.04 LTS 64-bit        │
│ Zone                 │ ch-gva-2                             │
│ Anti-Affinity Groups | n/a                                  │
│ Security Groups      │ web                                  │
│ Private Networks     │ n/a                                  │
│ Elastic IPs          │ n/a                                  │
│ IPv6                 │ true                                 │
│ SSH Key              │ admin                                │
│ Size                 │ 3                                    │
│ Disk Size            │ 50 GiB                               │
│ Instance Prefix      │ pool                                 │
│ State                │ running                              │
│ Labels               │ n/a                                  │
│ Instances            │ pool-ab8fb-xbedt                     │
│                      │ pool-ab8fb-obain                     │
│                      │ pool-ab8fb-cjrfw                     │
┼──────────────────────┼──────────────────────────────────────┼

Note

Instance Pool size is constrained by your organization’s resource quotas. If you want to scale an Instance Pool up, make sure your account’s instance quota allows you to do so prior to attempt scaling up. You can request a quota increase if necessary.

Note

If an Instance Pool needs to be deployed to a dedicated hypervisor, specify the --deploy-target flag.

Managing Instance Pools

In addition to normal CRUD operations, the following actions are available:

  • scale: scales an Instance Pool to a desired number of instances
  • evict: evicts specific members of an Instance Pool, shrinking its size.

Retrieve Instance Pool information

You can access an expanded view of an instance pool to retrieve its properties. Click on on the instance pool name in the instance pools list view on the Portal under COMPUTE, or use the command exo compute instance-pool show in the CLI:

$ exo compute instance-pool show --zone ch-gva-2 web
┼──────────────────────┼──────────────────────────────────────┼
│    INSTANCE POOL     │                                      │
┼──────────────────────┼──────────────────────────────────────┼
│ ID                   │ ab8fbe95-72d4-0703-fcae-6401540d86ff │
│ Name                 │ web                                  │
│ Description          │ Web servers                          │
│ Instance Type        │ standard.medium                      │
│ Template             │ Linux Ubuntu 20.04 LTS 64-bit        │
│ Zone                 │ ch-gva-2                             │
│ Anti-Affinity Groups | n/a                                  │
│ Security Groups      │ web                                  │
│ Private Networks     │ n/a                                  │
│ Elastic IPs          │ n/a                                  │
│ IPv6                 │ true                                 │
│ SSH Key              │ admin                                │
│ Size                 │ 3                                    │
│ Disk Size            │ 50 GiB                               │
│ Instance Prefix      │ pool                                 │
│ State                │ running                              │
│ Labels               │ n/a                                  │
│ Instances            │ pool-ab8fb-xbedt                     │
│                      │ pool-ab8fb-obain                     │
│                      │ pool-ab8fb-cjrfw                     │
┼──────────────────────┼──────────────────────────────────────┼

Update an Instance Pool’s properties

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

  • Name
  • Description
  • Deploy Target
  • IPv6 support
  • User Data
  • Labels
  • Managed Compute instances prefix
  • Managed Compute instances template
  • Managed Compute instances type
  • Managed Compute instances Anti-Affinity Groups
  • Managed Compute instances Elastic IPs
  • Managed Compute instances Private Networks
  • Managed Compute instances Security Groups
  • Managed Compute instances prefix
  • Managed Compute instances SSH key
  • Managed Compute instances Storage volume size

To update an instance pool, click on the instance pool name on the instance pools list in the Portal, then click on the UPDATE POOL button in the top right of the header.

In the CLI, use the exo compute instance-pool update command:

$ exo compute instance-pool update web --zone ch-gva-2 --disk-size 20
 ✔ Updating Instance Pool "web"... 6s
┼──────────────────────┼──────────────────────────────────────┼
│    INSTANCE POOL     │                                      │
┼──────────────────────┼──────────────────────────────────────┼
│ ID                   │ ab8fbe95-72d4-0703-fcae-6401540d86ff │
│ Name                 │ web                                  │
│ Description          │ Web servers                          │
│ Service Offering     │ Medium                               │
│ Template             │ Linux Ubuntu 20.04 LTS 64-bit        │
│ Zone                 │ ch-gva-2                             │
│ Anti-Affinity Groups | group1                               │
│ Security Groups      │ web                                  │
│ Private Networks     │ n/a                                  │
│ Elastic IPs          │ n/a                                  │
│ IPv6                 │ true                                 │
│ SSH Key              │ admin                                │
│ Size                 │ 3                                    │
│ Disk Size            │ 20 GiB                               │
│ Instance Prefix      │ pool                                 │
│ State                │ running                              │
│ Labels               │ n/a                                  |
│ Instances            │ pool-ab8fb-xbedt                     │
│                      │ pool-ab8fb-obain                     │
│                      │ pool-ab8fb-cjrfw                     │
┼──────────────────────┼──────────────────────────────────────┼

Note

When updating Instance Pool properties related to its managed Compute instances (such as template, type or storage volume size), the new value will be taken into account only for newly created instances. Current instances in the pool will not be affected by the change. These instances will need to be destroyed manually, so that the Instance Pool manager can replace them with up-to-date versions.

Note

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

Delete an Instance Pool

To delete an Instance Pool, click on the instance pool name on the instance pools list in the Portal, then click on the DELETE POOL button in the top right of the header.

You can use the exo compute instance-pool delete command in the CLI.

Warning

Deleting an Instance Pool also deletes its managed Compute instances.

Labels

Instance Pool supports labels that will also be propagated to the member instances.

The Instance Pool lifecycle

An Instance Pool’s 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’s 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’s scaling request, deleting Compute instances to meet the requested pool size.
DESTROYING The Instance Pool is being destroyed.

Instance Pool prefixes

By default, Instance Pool-managed Compute instances are named as:

pool-<first letters of the ID of the managing Instance Pool>-<random unique instance ID>.

This naming pattern can be customized by passing the --instance-prefix parameter during an Instance Pool creation or update. For example, if you pass the string applications to --instance-prefix, pool will be replaced by applications in the instance names.

Going Further

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

Pricing

This service is offered free of charge, only the resources consumed as a byproduct of running Instance Pools (such as Compute instances, storage, egress network traffic) are charged at our regular rates.

Resources