プレイスメントグループを触る機会があったのでいろいろ試してみます。
インスタンスを追加する
いま、tty6335-placement-group というプレイスメントグループがあります。パーティションプレイスメントグループでパーティションの数は4に設定してあります。
aws ec2 describe-placement-groups --group-names tty6335-placement-group { "PlacementGroups": [ { "GroupName": "tty6335-placement-group", "State": "available", "Strategy": "partition", "PartitionCount": 4, "GroupId": "pg-030602a1033a2a342", "GroupArn": "arn:aws:ec2:ap-northeast-1:XXXXXXXXXX:placement-group/tty6335-placement-group" } ] }
現在、1個のEC2インスタンスがこのプレイスメントグループに所属しています。
aws ec2 describe-instances --filters "Name=placement-group-name,Values=tty6335-placement-group" --query "Reservations[].Instances[].{InstanceName: Tags[?Key=='Name'] | [0].Value, InstanceID: InstanceId, PartitionNumber: Placement.PartitionNumber}" --output json | jq '.[] | {InstanceName, InstanceID, PartitionNumber}' { "InstanceName": "tty6335-01", "InstanceID": "i-045841fef0680d94c", "PartitionNumber": 1 }
プレイスメントグループ新しくEC2インスタンスを追加します。 AWSコンソールからは操作できないらしいです。 また、追加するEC2インスタンスは停止状態である必要があります。
aws ec2 modify-instance-placement --instance-id i-0c50ce345733f7726 --group-name tty6335-placement-group` { "Return": true }
新しくプレイスメントグループにEC2インスタンスが追加されました。
あれ、PartitionNumberがnullになってる?
aws ec2 describe-instances --filters "Name=placement-group-name,Values=tty6335-placement-group" --query "Reservations[].Instances[].{InstanceName: Tags[?Key=='Name'] | [0].Value, InstanceID: InstanceId, PartitionNumber: Placement.PartitionNumber}" --output json | jq '.[] | {InstanceName, InstanceID, PartitionNumber}' { "InstanceName": "tty6335-01", "InstanceID": "i-045841fef0680d94c", "PartitionNumber": 1 } { "InstanceName": "tty6335-02", "InstanceID": "i-0c50ce345733f7726", "PartitionNumber": null }
新しく追加したEC2インスタンスを起動するとPartitionNumberに数字が入ります。今回作成したEC2は同一VPC、同一サブネット内に作成したので同じPartitionNumberが振られています。
aws ec2 start-instances --instance-ids i-0c50ce345733f7726
aws ec2 describe-instances --filters "Name=placement-group-name,Values=tty6335-placement-group" --query "Reservations[].Instances[].{InstanceName: Tags[?Key=='Name'] | [0].Value, InstanceID: InstanceId, PartitionNumber: Placement.PartitionNumber}" --output json | jq '.[] | {InstanceName, InstanceID, PartitionNumber}' { "InstanceName": "tty6335-01", "InstanceID": "i-045841fef0680d94c", "PartitionNumber": 1 } { "InstanceName": "tty6335-02", "InstanceID": "i-0c50ce345733f7726", "PartitionNumber": 1 }
PartitionNumberが入りました。
インスタンスを脱退させる
インスタンスを停止してから、プレイスメントグループから脱退させます。AWSコンソールからは操作できないので、CLIで操作します。
aws ec2 stop-instances --instance-ids i-0c50ce345733f7726
group-nameが空の状態でコマンドを実行します。
aws ec2 modify-instance-placement --instance-id i-0c50ce345733f7726 --group-name "" { "Return": true }
プレイスメントグループからインスタンスが脱退しました。
aws ec2 describe-instances --filters "Name=placement-group-name,Values=tty6335-placement-group" --query "Reservations[].Instances[].{InstanceName: Tags[?Key=='Name'] | [0].Value, InstanceID: InstanceId, PartitionNumber: Placement.PartitionNumber}" --output json | jq '.[] | {InstanceName, InstanceID, PartitionNumber}' { "InstanceName": "tty6335-01", "InstanceID": "i-045841fef0680d94c", "PartitionNumber": 1 }