AWS ParallelCluster 3.0.1 の更新内容とUbuntu固有のエラーが解消されたので確認してみた

AWS ParallelCluster 3.0.0 リリースから約1.5か月ぶりのアップデートの紹介。
2021.10.30

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

AWS ParallelCluster 3.0.1がリリースされました。v3.0.0からのマイクロアップデートです。v3.0.0で悩まされたエラーが修正されたので動作確認を交えてアップデート内容を紹介します。

個人的な注目ポイント

アップデート詳細は以下のリンクをご確認ください。

機能強化

  • pcluster3-config-converterコマンド追加により、ParallelCluster 2系から3系へコンフィグファイルの変換が可能に!
    • ParallelCluster 2.x時代のコンフィグをv3.xでは利用できなかったのでありがたい機能追加
  • pclusterコマンド操作に--region引数が必須だったのですが、~/.aws/configを参照するようになり省略可能に!
    • ParallelCluster 2系では--regionを省略できたのに3.0.0では必須でした

変更点

  • SysVinitサポート終了、Systemdのみサポート

バグフィックス

クラスターを作成して動作確認

エラーが修正されたとのことで以前と同じコンフィグを使ってParallelCluster 3.0.1版のクラスターを作成してみます。

項目
AWS ParallelCluster 3.0.1
Job Scheduler Slurm
OS Ubuntu 20.04 LTS
CPU AMD
Head Node c5a.large
Compute Node c5a.4xlarge(16vCPU)

pclusterコマンドの準備

venvでバージョン管理しつつ、pclusterコマンドの最新バージョンをインストールします。fishシェルを使っているためactivateの拡張子が.fishになっています。

python3 -m venv pclusterVersion/301
source ~/pclusterVersion/301/bin/activate.fish
pip3 install aws-parallelcluster
pcluster version

実行結果

{
  "version": "3.0.1"
}

コンフィグファイル

以前と同じコンフィグからクラスターを作成します。

openfoam-amd.yml

Region: ap-northeast-1
Image:
  Os: ubuntu2004
HeadNode:
  InstanceType: c5a.large
  Networking:
    ElasticIp: false
    SubnetId: subnet-035be95eeaa091603
  Ssh:
    KeyName: sandbox-key
  LocalStorage:
    RootVolume:
      Size: 50
      Encrypted: false
      VolumeType: gp3
      Iops: 3000
      Throughput: 125
  Iam:
    S3Access:
      - BucketName: blog-parallelcluster-postinstall
        EnableWriteAccess: False
    AdditionalIamPolicies:
      - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
Scheduling:
  Scheduler: slurm
  SlurmQueues:
    - Name: cpu-spot
      ComputeResources:
        - Name: c5a4xlarge
          InstanceType: c5a.4xlarge
          MinCount: 0
          MaxCount: 20
      ComputeSettings:
        LocalStorage:
          RootVolume:
            Size: 35
            Encrypted: false
            VolumeType: gp3
            Iops: 3000
            Throughput: 125
      CapacityType: SPOT
      Networking:
         SubnetIds:
           - subnet-035be95eeaa091603
         PlacementGroup:
           Enabled: true
      Iam:
        S3Access:
          - BucketName: blog-parallelcluster-postinstall
            KeyName: read_only/
            EnableWriteAccess: False
        AdditionalIamPolicies:
          - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
    - Name: high-cpu-spot
      ComputeResources:
        - Name: c5a24xlarge
          InstanceType: c5a.24xlarge
          MinCount: 0
          MaxCount: 10
      ComputeSettings:
        LocalStorage:
          RootVolume:
            Size: 35
            Encrypted: false
            VolumeType: gp3
            Iops: 3000
            Throughput: 125
      CapacityType: SPOT
      Networking:
         SubnetIds:
           - subnet-035be95eeaa091603
         PlacementGroup:
           Enabled: true
      Iam:
        S3Access:
          - BucketName: blog-parallelcluster-postinstall
            KeyName: read_only/
            EnableWriteAccess: False
        AdditionalIamPolicies:
          - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

クラスター作成

クラスターを作成します。コマンド流用したので--region引数を省略せずに付けてしまいました。

> pcluster create-cluster --cluster-name openfoam-amd-cluster301 --region ap-northeast-1 --cluster-configuration openfoam-amd.yml

作成されたクラスターを確認します。list-clusterオプションには--region引数なしで実行してみました。3.0.1版のクラスターが完成しています。

> pcluster list-clusters
{
  "clusters": [
    {
      "clusterName": "openfoam-amd-cluster301",
      "cloudformationStackStatus": "CREATE_COMPLETE",
      "cloudformationStackArn": "arn:aws:cloudformation:ap-northeast-1:123456789012:stack/openfoam-amd-cluster301/4b4708c0-3784-11ec-850d-0ad518499f05",
      "region": "ap-northeast-1",
      "version": "3.0.1",
      "clusterStatus": "CREATE_COMPLETE"
    }
  ]
}

3.0.0ではUbuntu 18.04と、20.04のヘッドノードの場合、停止開始または再起動すると必要なサービスが起動しない不具合を抱えていました。ですので、ヘッドノードを一度停止開始しました。

再起動後のヘッドノードに接続して確認します。supervisord.serviceactive(running)で起動しています。不具合の内容はこのサービスが起動してこないことでした。

$ systemctl status supervisord.service
● supervisord.service - Supervisor process control system for UNIX
     Loaded: loaded (/etc/systemd/system/supervisord.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-10-30 04:15:15 UTC; 35min ago
       Docs: http://supervisord.org
   Main PID: 574 (supervisord)
      Tasks: 4 (limit: 4631)
     Memory: 91.9M
     CGroup: /system.slice/supervisord.service
             ├─574 /opt/parallelcluster/pyenv/versions/3.7.10/envs/cookbook_virtualenv/bin/python3.7 /opt/parallelcluster/pyenv>
             ├─925 /opt/parallelcluster/pyenv/versions/3.7.10/envs/node_virtualenv/bin/python3.7 /opt/parallelcluster/pyenv/ver>
             └─941 /opt/parallelcluster/pyenv/versions/3.7.10/envs/cookbook_virtualenv/bin/python /opt/parallelcluster/pyenv/ve>

不具合が修正されていることを確認できました。

アップデートに関連する動作確認結果

おわりに

UbuntuユーザはぜひParallelCluster 3.0.1をご利用または、3.0.0からの乗り換えをご検討ください。 v3.0.0でUbuntuが使えないわけではありませんが、ワークアラウンド用の追加設定が不要ですので最新の3.0.1を是非!

新機能のpcluster3-config-converterコマンドは試すと長くなりそうですので別の機会に試して紹介したいと思います。