AWS ParallelClusterのクラスターサイズ設定とAuto Scalingグループの関係を調べてみた

AWS ParallelClusterでAWS Batch以外のジョブスケジューラ(Slurmなど)を使用すると、コンピューティングフリートはAuto Scalingグループで管理されます。ジョブの需要に合わせてAuto Scalingグループを設定することで、TCOを削減できます。 本記事では、ParallelCluster設定ファイルとAuto Scalingグループのフリートサイズの対応関係を紹介します。
2020.08.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWS ParallelClusterで slurm/sge/torque のような伝統的なジョブスケジューラーを用いると、コンピューティングフリートはAuto Scalingグループで管理されます。 フリートサイズをジョブの需要に連動させることで、elasticにクラスターサイズをスケールアウト・インさせ、TCO を抑制することができます。

本記事では、コンピューティングフリートサイズに絞って、ParallelClusterの設定とAuto Scalingグループの関係を紹介します。

AWS ParallelClusterとAuto Scalingグループの対応表

AWS ParallelCluster では、設定ファイルの[Cluster]セクションでコンピューティングフリートのサイズを定義します。

Auto Scaling グループとの関係は次の表の通りです。

ParallelCluster 意味 デフォルト Auto Scalingグループ 備考
initial_queue_size クラスターでコンピューティングノードとして起動する Amazon EC2 インスタンスの最初の数を設定します。 2 希望する容量(desired capacity) maintain_initial_size=trueの場合は1以上の値を設定
max_queue_size クラスターで起動可能な最大数の Amazon EC2 インスタンスの最大数を設定します。 10 最大キャパシティ(maximum)
maintain_initial_size 従来のスケジューラ (SGE、Slurm、および Torque) の Auto Scaling グループの最初のサイズを維持します。 false 最小キャパシティ(minimum) maintain_initial_size = trueの場合は initial_queue_size の値、falseの場合は0

フリート起動後、Auto Scaling グループの「希望する容量(desired capacity)」は、ジョブの需要によって「最小キャパシティ(minimum)」から「最大キャパシティ(maximum) 」の間の値を動的に動きます。

参考 : AWS ParallelCluster Auto Scaling - AWS ParallelCluster

具体例

例1:未入力の場合

ParallelCluster側の設定値は入力必須ではありません。指定しなかった場合はデフォルト値が設定されます。

ParallelCluster 設定値 ASG 設定値
initial_queue_size ブランク desired capacity 2
max_queue_size ブランク maximum 10
maintain_initial_size ブランク minimum 0

例2:maintain_initial_size = false の場合

ParallelCluster側で何か値を設定すると、Auto Scaling グループの対応する値が設定されます。

maintain_initial_size = falseのため、「最小キャパシティ(minimum)」は0です。

ParallelCluster 設定値 ASG 設定値
initial_queue_size 4 desired capacity 4
max_queue_size 8 maximum 8
maintain_initial_size false minimum 0

例3: maintain_initial_size = true の場合

maintain_initial_size = true にすると、initial_queue_size で指定した値が Auto Scalingグループの「最小キャパシティ(minimum)」に設定されます。

ParallelCluster 設定値 ASG 設定値
initial_queue_size 4 desired capacity 4
max_queue_size 8 maximum 8
maintain_initial_size true minimum 4

例4:固定台数を起動する場合

オンプレのように固定台数を起動したい場合、initial_queue_sizemax_queue_size に同じ値を設定し、maintain_initial_size = true にし、Auto Scalingグループの設定で desired capacity = maximum = minimum となるようにします。

ParallelCluster 設定値 ASG 設定値
initial_queue_size 4 desired capacity 4
max_queue_size 4 maximum 4
maintain_initial_size true minimum 4

コンピューティングフリートを一時停止する場合

$ pcluster stop CLUSTER_NAME を実行すると、コンピューティングフリートを停止し、マスターノードを実行中のままにします。 この時、Auto Scaling グループの desired capacity/maximum/minimum はすべて 0 になります。

ASG 設定値
desired capacity 0
maximum 0
minimum 0

$ pcluster start CLUSTER_NAMEをすると、ParallelCluster の設定に従って Auto Scaling グループが更新され、コンピューティングフリートが再構築されます。

夜間・週末はクラスターを使わないような場合は、クラスターを一時的に stop/start することもご検討ください。

$ pcluster update でフリートのサイズ変更は可能

ParallelCluster の更新処理は注意が必要です。

設定値によっては

  • クラスターの再作成
  • 一度コンピューティングフリートの停止

といった運用が求められるものがあります。

今回紹介した、コンピューティングフリートのサイズに関連する3つの値に関しては、クラスターを起動させたままオンラインで変更可能です(Update policy: This setting can be changed during an update.)。

まとめ

AWS ParallelClusterのクラスターサイズ設定とAuto Scalingグループの関係について紹介しました。

ポイントは次の通りです。

  • ジョブスケジューラーにslurm/sge/torqueを使用する場合、コンピューティングフリートはAuto Scalingグループで管理されます
  • フリートサイズ(Auto Scalingグループのキャパシティ)は設定ファイル[cluster]セクションの次の3つの値で定義します
    • initial_queue_size
    • max_queue_size
    • maintain_initial_size
  • これら値は $ pcluster update でオンライン変更可能です

それでは。

参考