AWS ParallelCluster クラスターを生み出したCloudFormationのスタックを直接削除してもよいのか
AWS ParallelCluster はpcluster
コマンドからクラスターの作成、削除などの管理操作を行います。クラスター環境の構築自体はCloudFormationからリソースが構築されています。つまり、クラスターを作成するとCloudFormationのスタックが生まれます。スタックを直接削除してクラスターを削除しても問題ないのか試した結果を紹介します。
検証結果
- CloudFormationのスタック削除しても問題はみられない
pcluster
コマンドから削除しても、スタックを直接削除してもCloudWatch Logsのロググループは残る- ログを残す必要なければロググループの削除も検討
- ログ保持期間はデフォルトで14日間
- ログは削除されてもロググループは残り続ける
検証環境
削除操作に使うParallelClusterのバージョンは3.0.0です。
項目 | 値 |
---|---|
AWS ParallelCluster | 3.0.0 |
やってみた
作成済みクラスターが2つ存在しています。pcluster
コマンドから削除する通常の方法と、スタック直接削除する方法を試してみます。
現在のクラスター一覧です。openfoam-amd-cluster
と、sample-cluster
の2つ存在しています。
pcluster list-clusters --region ap-northeast-1
{ "clusters": [ { "clusterName": "openfoam-amd-cluster", "cloudformationStackStatus": "CREATE_COMPLETE", "cloudformationStackArn": "arn:aws:cloudformation:ap-northeast-1:123456789012:stack/openfoam-amd-cluster/35b153f0-2819-11ec-bbfb-0ab148f27221", "region": "ap-northeast-1", "version": "3.0.0", "clusterStatus": "CREATE_COMPLETE" }, { "clusterName": "sample-cluster", "cloudformationStackStatus": "CREATE_COMPLETE", "cloudformationStackArn": "arn:aws:cloudformation:ap-northeast-1:123456789012:stack/sample-cluster/0a6058c0-181c-11ec-a3f5-0efee4c0f8ad", "region": "ap-northeast-1", "version": "3.0.0", "clusterStatus": "CREATE_COMPLETE" } ] }
スタックを直接削除
clusterName
と同じ名前でスタックが作成されています。
$ aws cloudformation describe-stacks | jq '.Stacks[].StackName' "openfoam-amd-cluster" "sample-cluster"
スタックを直接削除します。
$ aws cloudformation delete-stack --stack-name openfoam-amd-cluster (戻り値なし)
スタックの削除を確認するのが難しいのですが、該当のスタック名が存在しなければ削除と判断します。
$ aws cloudformation describe-stacks --stack-name openfoam-amd-cluster An error occurred (ValidationError) when calling the DescribeStacks operation: Stack with id openfoam-amd-cluster does not exis
現在のクラスター一覧を確認します。openfoam-amd-cluster
のクラスターの表示がありません。スタックを直接削除しても情報が残ったりはしませんでした
pcluster list-clusters --region ap-northeast-1
{ "clusters": [ { "clusterName": "sample-cluster", "cloudformationStackStatus": "CREATE_COMPLETE", "cloudformationStackArn": "arn:aws:cloudformation:ap-northeast-1:123456789012:stack/sample-cluster/0a6058c0-181c-11ec-a3f5-0efee4c0f8ad", "region": "ap-northeast-1", "version": "3.0.0", "clusterStatus": "CREATE_COMPLETE" } ] }
通常の削除方法
pcluster delte-cluster
コマンドを使用します。
pcluster delete-cluster --cluster-name sample-cluster --region ap-northeast-1
{ "cluster": { "clusterName": "sample-cluster", "cloudformationStackStatus": "DELETE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:ap-northeast-1:123456789012:stack/sample-cluster/0a6058c0-181c-11ec-a3f5-0efee4c0f8ad", "region": "ap-northeast-1", "version": "3.0.0", "clusterStatus": "DELETE_IN_PROGRESS" } }
しばらく時間を置いてからクラスター一覧を確認しました。クラスター情報は一切ないのでクラスターが削除されたことを確認できました。
pcluster list-clusters --region ap-northeast-1
{ "clusters": [] }
delete-clusterについて
delete-cluster
コードを確認するとスタックを削除しており、スタック直接削除と同様の操作に見受けられた。あと気付いたことはCloudWatch Logsのロググループは削除されずに残ること。ロググループには主にヘッドノードのSlurmなどのログが保存されます。
- aws-parallelcluster/cfn.py at 9230c81b7b4482126ed924b0f965ff1ed4587500 · aws/aws-parallelcluster
- aws-parallelcluster/cfn_stacks_factory.py at 9230c81b7b4482126ed924b0f965ff1ed4587500 · aws/aws-parallelcluster
コマンドリファレンスを確認してもロググループを残すか、削除するかの選択オプションは存在していませんでした。
クラスター削除後にCloudWatch Logsのロググループを確認すると以下の様にクラスター名のロググループは存在し続けています。クラスター削除後でもログは確認できるようになっていました。
クラスターの数だけロググループは増えていくためクラスター削除後にロググループを残しておくか、削除するかを検討した方がよいでしょう。また、ログのデフォルト保持期間は14日のため、保持期間経過後にロググループを削除する分には特に支障はないかと思います。
まとめ
pcluster delte-cluster
コマンドでクラスター削除するのがお行儀のよい方法- CloudFormationのスタックを削除してもクラスターは削除できる
- CloudWatch Logsのロググループは残る
おわりに
CloudFormationのスタック削除方法はAWS CLIの手順を載せました。実際はコマンドを打つのがめんどくさいか、pcluster
コマンドがインストールされていない環境だけど不要なクラスター削除したいという状況ではないでしょうか。マネージメントコンソールからスタック削除が一番手軽なクラスター削除方法だと思っています。スタックを直接削除するとlist-cluster
で何かしら情報が残らないかを心配していたのですが杞憂でした。