Placement Groups
Create and manage spread and cluster placement groups to control how Spinifex places EC2 instances across physical hosts for fault isolation or low latency.
ec2placementspreadcluster
Overview
Placement groups control how Spinifex distributes instances across physical hosts. Two strategies are supported:
- Spread — One instance per physical host, maximising fault isolation
- Cluster — All instances on the same host, minimising latency
The partition strategy is not supported.
Supported operations:
create-placement-group— Create a new groupdescribe-placement-groups— Query groups with optional filtersdelete-placement-group— Remove an empty group
Prerequisites
- A running Spinifex cluster (see Setting Up Your Cluster)
- AWS CLI configured with the
spinifexprofile:
bash
export AWS_PROFILE=spinifex
Create
bash
aws ec2 create-placement-group \
--group-name my-spread-group \
--strategy spread
bash
aws ec2 create-placement-group \
--group-name my-cluster-group \
--strategy cluster
Launch Into a Placement Group
bash
aws ec2 run-instances \
--image-id $SPINIFEX_AMI \
--instance-type t3.small \
--key-name spinifex-key \
--placement GroupName=my-spread-group \
--count 3
Describe
bash
aws ec2 describe-placement-groups
aws ec2 describe-placement-groups --group-names my-spread-group
aws ec2 describe-placement-groups --group-ids pg-abc123
aws ec2 describe-placement-groups \
--filters Name=strategy,Values=spread
Delete
The group must have no running instances before it can be deleted:
bash
aws ec2 terminate-instances --instance-ids $INSTANCE_ID
aws ec2 delete-placement-group --group-name my-spread-group
Troubleshooting
InsufficientInstanceCapacity Error
Not enough distinct physical hosts for a spread launch. Reduce --count or terminate existing instances to free host slots:
bash
spx admin nodes list
Cannot Delete Placement Group
The group still has running instances. Terminate them first:
bash
aws ec2 describe-instances \
--filters Name=placement-group-name,Values=my-spread-group
aws ec2 terminate-instances --instance-ids $INSTANCE_ID