AWS ParallelCluster クラスターを生み出したCloudFormationのスタックを直接削除してもよいのか

2021.11.09

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などのログが保存されます。

コマンドリファレンスを確認してもロググループを残すか、削除するかの選択オプションは存在していませんでした。

クラスター削除後にCloudWatch Logsのロググループを確認すると以下の様にクラスター名のロググループは存在し続けています。クラスター削除後でもログは確認できるようになっていました。

クラスターの数だけロググループは増えていくためクラスター削除後にロググループを残しておくか、削除するかを検討した方がよいでしょう。また、ログのデフォルト保持期間は14日のため、保持期間経過後にロググループを削除する分には特に支障はないかと思います。

まとめ

  • pcluster delte-clusterコマンドでクラスター削除するのがお行儀のよい方法
  • CloudFormationのスタックを削除してもクラスターは削除できる
  • CloudWatch Logsのロググループは残る

おわりに

CloudFormationのスタック削除方法はAWS CLIの手順を載せました。実際はコマンドを打つのがめんどくさいか、pclusterコマンドがインストールされていない環境だけど不要なクラスター削除したいという状況ではないでしょうか。マネージメントコンソールからスタック削除が一番手軽なクラスター削除方法だと思っています。スタックを直接削除するとlist-clusterで何かしら情報が残らないかを心配していたのですが杞憂でした。