mirror of
https://github.com/mulgadc/spinifex.git
synced 2026-10-19 10:52:04 +00:00
122 lines
2.8 KiB
Markdown
122 lines
2.8 KiB
Markdown
---
|
|
title: "Placement Groups"
|
|
description: "Create and manage spread and cluster placement groups for hardware-level instance placement control."
|
|
category: "Compute"
|
|
tags:
|
|
- ec2
|
|
- placement
|
|
- spread
|
|
- cluster
|
|
resources:
|
|
- title: "Spinifex Repository"
|
|
url: "https://github.com/mulgadc/spinifex"
|
|
- title: "AWS Placement Groups"
|
|
url: "https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html"
|
|
---
|
|
|
|
# Placement Groups
|
|
|
|
> Create and manage spread and cluster placement groups for hardware-level instance placement control.
|
|
|
|
## Table of Contents
|
|
|
|
- [Overview](#overview)
|
|
- [Create](#create)
|
|
- [Launch Into a Placement Group](#launch-into-a-placement-group)
|
|
- [Describe](#describe)
|
|
- [Delete](#delete)
|
|
- [Troubleshooting](#troubleshooting)
|
|
- [InsufficientInstanceCapacity Error](#insufficientinstancecapacity-error)
|
|
- [Cannot Delete Placement Group](#cannot-delete-placement-group)
|
|
|
|
---
|
|
|
|
## 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 group
|
|
- `describe-placement-groups` — Query groups with optional filters
|
|
- `delete-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
|
|
```
|