Placement Groups
Create and manage spread and cluster placement groups for hardware-level instance placement control.
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
Instructions
Prerequisites
Ensure the AWS profile is set:
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