Instance Pools
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.
- If an Instance Pool is targeted by a Network Load Balancer’s Service, it cannot be deleted.
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" \
--ipv6 "true"
--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
- IPv6 (boolean)
- 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
- Create an Instance Pool in the portal
- Instance Pools API documentation