この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
ParallelClusterのEBSボリュームに gp3, io2 Block Express(プレビュー) を選択できるようになりました。
- ParallelCluster 2.10.1 がリリースされ新しいEBSボリュームタイプに対応!
- ヘッドノードから NFSで共有されるボリューム のEBSの選択肢が増えました
- ヘッドノードの ルートボリューム のEBSはgp2しか今のところ選択できません
AWS ParallelCluster 2.10.1 Release
2020年12月23日にリリースされました。年の瀬なので今までのリリースタイミングを振り返ってみてみましょう。可視化すると2020年は昨年に比べるとアップデートが多かったことがよくわかります。
Release AWS ParallelCluster v2.10.1 · aws/aws-parallelcluster
ヘッドノードの標準共有ストレージ
gp3, io2 Block Expressを活かせるのはヘッドノードからNFSで共有されるストレージを利用する場合です。デフォルトでヘッドノードの/shared
ディレクトリがコンピュートノードと共有されるため、ParallelClusterではもっとも手軽な共有ストレージです。
やってみた
最新のpclusterコマンドを準備します。
> pip3 install aws-parallelcluster
> pcluster version
2.10.1
コンフィグ作成
io2 Block Expressはプレビューなので、gp3を性能違いで2個アタッチする設定を作ります。
ParallelClusterのgp3のデフォルト設定値は無料枠内の最大パフォーマンス設定でした。より高いIOPS、スループットを求める場合はParallelClusterのコンフィグで指定するだけで簡単に変更・ヘッドノードにアタッチも可能です。その分、容量、IOPS、スループットに応じた追加料金が発生します。
設定 | デフォルト値 |
---|---|
volume_iops | 3000 |
volume_throughput | 125 |
サンプルコンフィグ
注目ポイント
external_ebs
設定でデフォルト値のEBSを/shared
にマウントexternal_ebs2
設定でデフォルト値の2倍性能のEBSを/mnt
にマウント
下記の項目は環境に依存します。構築する環境に合わせて適時変更してください。
- aws_region_name
- key_name
- vpc_id
- master_subnet_id
- compute_subnet_id
single-cluster
[aws]
aws_region_name = us-east-1
[global]
cluster_template = default
update_check = true
sanity_check = true
[aliases]
ssh = ssh {CFN_USER}@{MASTER_IP} {ARGS}
[cluster default]
key_name = sandbox-key-useast1
base_os = alinux2
scheduler = slurm
vpc_settings = custom
# Instance Type
master_instance_type = c6g.large
# Queue
queue_settings = standard-spot
# Shared EBS
ebs_settings = external_ebs, external_ebs2
# Tag
tags = { "Name" : "Single-Cluster" }
# --- VPC Setting ---
[vpc custom]
vpc_id = vpc-07edfc27679c9ca80
master_subnet_id = subnet-0ab2754446b2f87a4
compute_subnet_id = subnet-0ab2754446b2f87a4
use_public_ips = false
# --- EBS Setting ---
[ebs external_ebs]
shared_dir = /shared
volume_type = gp3
volume_size = 50
[ebs external_ebs2]
shared_dir = /mnt
volume_type = gp3
volume_size = 50
volume_iops = 6000
volume_throughput = 250
# --- ComputeNode Setting ---
[queue standard-spot]
compute_resource_settings = standard-spot
placement_group = DYNAMIC
compute_type = spot
[compute_resource standard-spot]
instance_type = c6g.2xlarge
max_count = 32
ヘッドノードから確認
サンプルコンフィグからクラスターを作成しました。ヘッドノードにログインして確認します。
50GBのディスク2個確認できました。
[ec2-user@ip-10-1-11-128 ~]$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 616K 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/nvme0n1p1 xfs 25G 12G 14G 47% /
/dev/nvme0n1p128 vfat 10M 3.7M 6.3M 38% /boot/efi
/dev/nvme1n1 ext4 50G 53M 47G 1% /shared
/dev/nvme2n1 ext4 50G 53M 47G 1% /mnt
tmpfs tmpfs 387M 0 387M 0% /run/user/0
tmpfs tmpfs 387M 0 387M 0% /run/user/1000
/shared, /mnt
ともにNFSで共有されています。
[ec2-user@ip-10-1-11-128 ~]$ showmount -e
Export list for ip-10-1-11-128:
/opt/slurm 10.1.0.0/16
/home 10.1.0.0/16
/mnt 10.1.0.0/16
/shared 10.1.0.0/16
マネジメントコンソールから確認
ヘッドノードのインスタンスにはルートボリュームの他に2個EBSがアタッチされています。
IOPS、スループット未指定のEBSはデフォルト値で、値を指定したものは指定通りgp3のEBSがアタッチされています。
ルートボリュームのボリュームタイプは今のところParallelClusterのコンフィグで指定できません。 従来どおりgp2 で作成されていました。
おわりに
NFSマウントでのデフォルト提供される共有ストレージがもっとも手軽なので楽です。しかし、多数のコンピュートノードからアクセスがあるとヘッドノードのネットワーク帯域がボトルネックになる可能性があります。ヘッドノードのインスタンスタイプの見直しや、FSx for Lustreの利用などワークロードに応じた共有ストレージをご検討いただければと思います。
以上、網走の大村でした。
参考
[cluster] section - AWS ParallelCluster
[ebs] section - AWS ParallelCluster