

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 從 AWS ParallelCluster 2.x 移至 3.x
<a name="moving-from-v2-to-v3"></a>

下列各節說明從 AWS ParallelCluster 2.x 移至 3.x 時會發生的情況，包括從一個版本到另一個版本的變更。

## 自訂引導操作
<a name="custom_bootstrap_actions"></a>

透過 AWS ParallelCluster 3，您可以使用 和 [`Scheduling`](Scheduling-v3.md)/ [`SlurmQueues`](Scheduling-v3.md#Scheduling-v3-SlurmQueues)區段中的 `OnNodeStart`(`pre_install`第 2 AWS ParallelCluster 版中的 ) 和 `OnNodeConfigured`(`post_install`第 2 AWS ParallelCluster 版中的 ) 參數，為前端節點[`HeadNode`](HeadNode-v3.md)和運算節點指定不同的自訂引導操作指令碼。如需詳細資訊，請參閱[自訂引導操作](custom-bootstrap-actions-v3.md)。

 為 AWS ParallelCluster 2 開發的自訂引導操作指令碼必須調整為可用於 AWS ParallelCluster 3：
+ 我們不建議使用 `/etc/parallelcluster/cfnconfig`和 `cfn_node_type` 來區分頭部和運算節點。反之，我們建議您在 [`HeadNode`](HeadNode-v3.md)和 [`Scheduling`](Scheduling-v3.md) / 中指定兩個不同的指令碼[`SlurmQueues`](Scheduling-v3.md#Scheduling-v3-SlurmQueues)。
+ 如果您想要繼續載入`/etc/parallelcluster/cfnconfig`以供引導操作指令碼使用，請注意 的值已從 "MasterServer" `cfn_node_type`變更為 "HeadNode" （請參閱：[包容性語言](#inclusive_language))。
+ 在 AWS ParallelCluster 2 上，引導操作指令碼的第一個輸入引數是指令碼的 S3 URL，並已保留。在 AWS ParallelCluster 3 中，只有組態中設定的引數會傳遞至指令碼。

**警告**  
正式不支援使用透過 `/etc/parallelcluster/cfnconfig` 檔案提供的內部變數。在未來版本中，可能會移除此檔案。

## AWS ParallelCluster 2.x 和 3.x 使用不同的組態檔案語法
<a name="pcluster_use_different_config_file_syntax"></a>

 ******** 

AWS ParallelCluster 3.x 組態使用 YAML 語法。您可以在 找到完整的參考[組態檔案](configuration-v3.md)。

除了需要 YAML 檔案格式之外， AWS ParallelCluster 3.x 中也已更新許多組態區段、設定和參數值。在本節中，我們會記下 AWS ParallelCluster 組態的重要變更，以及說明每個 版本之間這些差異的side-by-side範例 AWS ParallelCluster。

**啟用和停用超執行緒的多個排程器佇列組態範例**

AWS ParallelCluster 2：

```
[cluster default]
queue_settings = ht-enabled, ht-disabled
...

[queue ht-enabled]
compute_resource_settings = ht-enabled-i1
disable_hyperthreading = false

[queue ht-disabled]
compute_resource_settings = ht-disabled-i1
disable_hyperthreading = true

[compute_resource ht-enabled-i1]
instance_type = c5n.18xlarge
[compute_resource ht-disabled-i1]
instance_type = c5.xlarge
```

AWS ParallelCluster 3：

```
...
Scheduling:
  Scheduler: slurm
  SlurmQueues:
    - Name: ht-enabled
      Networking:
        SubnetIds:
          - {{compute_subnet_id}}
      ComputeResources:
        - Name: ht-enabled-i1
          DisableSimultaneousMultithreading: true
          InstanceType: c5n.18xlarge     
    - Name: ht-disabled
      Networking:
        SubnetIds:
          - {{compute_subnet_id}}
      ComputeResources:
        - Name: ht-disabled-i1
          DisableSimultaneousMultithreading: false
          InstanceType: c5.xlarge
```

**新的 FSx for Lustre 檔案系統組態範例**

AWS ParallelCluster 2：

```
[cluster default]
fsx_settings = fsx
...

[fsx fsx]
shared_dir = /shared-fsx
storage_capacity = 1200
imported_file_chunk_size = 1024
import_path = s3://{{amzn-s3-demo-bucket}}
export_path = s3://{{amzn-s3-demo-bucket}}/export_dir
weekly_maintenance_start_time = 3:02:30
deployment_type = PERSISTENT_1
data_compression_type = LZ4
```

AWS ParallelCluster 3：

```
...
SharedStorage:
  - Name: fsx
    MountDir: /shared-fsx
    StorageType: FsxLustre
    FsxLustreSettings:
      StorageCapacity: 1200
      ImportedFileChunkSize: 1024
      ImportPath: s3://{{amzn-s3-demo-bucket}}
      ExportPath: s3://{{amzn-s3-demo-bucket}}/export_dir
      WeeklyMaintenanceStartTime: "3:02:30"
      DeploymentType: PERSISTENT_1
      DataCompressionType: LZ4
```

**掛載現有 FSx for Lustre 檔案系統的叢集組態範例**

AWS ParallelCluster 2：

```
[cluster default]
fsx_settings = fsx
...

[fsx fsx]
shared_dir = /shared-fsx
fsx_fs_id = {{fsx_fs_id}}
```

AWS ParallelCluster 3：

```
...
SharedStorage:
  - Name: fsx
    MountDir: /shared-fsx
    StorageType: FsxLustre
    FsxLustreSettings:
      FileSystemId: {{fsx_fs_id}}
```

 **具有 Intel HPC 平台規格軟體堆疊的叢集範例** 

AWS ParallelCluster 2：

```
[cluster default]
enable_intel_hpc_platform = true
...
```

AWS ParallelCluster 3：

```
...
AdditionalPackages:
  IntelSoftware:
    IntelHpcPlatform: true
```

備註：
+  Intel HPC 平台規格軟體的安裝受適用 [Intel 最終使用者授權合約](https://software.intel.com/en-us/articles/end-user-license-agreement)的條款和條件的約束。

 **自訂 IAM 組態範例，包括：執行個體描述檔、執行個體角色、執行個體的其他政策，以及與叢集相關聯的 lambda 函數角色** 

AWS ParallelCluster 2：

```
[cluster default]
additional_iam_policies = arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess,arn:aws:iam::aws:policy/AmazonDynamoDBReadOnlyAccess
ec2_iam_role = {{ec2_iam_role}}
iam_lambda_role = {{lambda_iam_role}}
...
```

AWS ParallelCluster 3：

```
...
Iam:
  Roles:
    CustomLambdaResources: {{lambda_iam_role}}
HeadNode:
  ...
  Iam:
    InstanceRole: {{ec2_iam_role}}
Scheduling:
  Scheduler: slurm
  SlurmQueues:
    - Name: queue1
      ...
      Iam:
        InstanceProfile: {{iam_instance_profile}}
    - Name: queue2
      ...
      Iam:
        AdditionalIamPolicies:
          - Policy: arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
          - Policy: arn:aws:iam::aws:policy/AmazonDynamoDBReadOnlyAccess
```

備註：
+ 對於 AWS ParallelCluster 2，IAM 設定會套用至叢集的所有執行個體，`additional_iam_policies`且無法與 搭配使用`ec2_iam_role`。
+ 對於 AWS ParallelCluster 3，您可以對頭部和運算節點有不同的 IAM 設定，甚至為每個運算佇列指定不同的 IAM 設定。
+ 對於 AWS ParallelCluster 3，您可以使用 IAM 執行個體描述檔做為 IAM 角色的替代方案。 `InstanceProfile``InstanceRole`或 `AdditionalIamPolicies` 無法一起設定。

**自訂引導操作的範例**

AWS ParallelCluster 2：

```
[cluster default]
s3_read_resource = arn:aws:s3:::{{amzn-s3-demo-bucket}}/*
pre_install = s3://{{amzn-s3-demo-bucket}}/scripts/pre_install.sh
pre_install_args = 'R curl wget'
post_install = s3://{{amzn-s3-demo-bucket}}/scripts/post_install.sh
post_install_args = "R curl wget"
...
```

AWS ParallelCluster 3：

```
...
HeadNode:
  ...
  CustomActions:
    OnNodeStart:
      Script: s3://{{amzn-s3-demo-bucket}}/scripts/pre_install.sh
      Args:
        - R
        - curl
        - wget
    OnNodeConfigured:
      Script: s3://{{amzn-s3-demo-bucket}}/scripts/post_install.sh
      Args: ['R', 'curl', 'wget']
  Iam:
    S3Access:
      - BucketName: {{amzn-s3-demo-bucket}}
Scheduling:
  Scheduler: slurm
  SlurmQueues:
    - Name: queue1
      ...
      CustomActions:
        OnNodeStart:
          Script: s3://{{amzn-s3-demo-bucket}}/scripts/pre_install.sh
          Args: ['R', 'curl', 'wget']
        OnNodeConfigured:
          Script: s3://{{amzn-s3-demo-bucket}}/scripts/post_install.sh
          Args: ['R', 'curl', 'wget']
      Iam:
        S3Access:
          - BucketName: {{amzn-s3-demo-bucket}}
```

 **具有 S3 儲存貯體資源讀取和寫入存取權的叢集範例 ** 

AWS ParallelCluster 2：

```
[cluster default]
s3_read_resource = arn:aws:s3:::{{amzn-s3-demo-bucket}}/read_only/*
s3_read_write_resource = arn:aws:s3:::{{amzn-s3-demo-bucket}}/read_and_write/*
...
```

AWS ParallelCluster 3：

```
...
HeadNode:
  ...
  Iam:
    S3Access:
      - BucketName: {{amzn-s3-demo-bucket}}
        KeyName: read_only/
        EnableWriteAccess: False
      - BucketName: {{amzn-s3-demo-bucket}}
        KeyName: read_and_write/
        EnableWriteAccess: True
Scheduling:
  Scheduler: slurm
  SlurmQueues:
    - Name: queue1
      ...
      Iam:
        S3Access:
          - BucketName: {{amzn-s3-demo-bucket}}
            KeyName: read_only/
            EnableWriteAccess: False
          - BucketName: {{amzn-s3-demo-bucket}}
            KeyName: read_and_write/
            EnableWriteAccess: True
```

## 包容性語言
<a name="inclusive_language"></a>

AWS ParallelCluster 3 在「主要」使用的位置使用「主節點」一詞 AWS ParallelCluster 2。這包含下列項目：
+ 在 AWS Batch 任務環境中匯出的變數已變更：從 `MASTER_IP`變更為 `PCLUSTER_HEAD_NODE_IP`。
+ 所有 CloudFormation 輸出從 變更為 `Master*` `HeadNode*`。
+ 所有 NodeType 和標籤從 變更為 `Master` `HeadNode`。

## 排程器支援
<a name="scheduler_support"></a>

AWS ParallelCluster 3.x 不支援網格引擎 (SGE) 和扭力排程器。

 AWS Batch 命令 `awsbhosts`、`awsbkill`、`awsbout`、`awsbstat`、 `awsbqueues`和 `awsbsub`會以單獨的 `aws-parallelcluster-awsbatch-cli` PyPI 套件形式發佈。此套件由 安裝在前端節點 AWS ParallelCluster 上。您仍然可以從叢集的前端節點使用這些 AWS Batch 命令。不過，如果您想要從前端節點以外的位置使用 AWS Batch 命令，您必須先安裝 `aws-parallelcluster-awsbatch-cli` PyPI 套件。

## AWS ParallelCluster CLI
<a name="parallelcluster_cli"></a>

 AWS ParallelCluster 命令列界面 (CLI) 已變更。有關新語法的說明，請參閱 [AWS ParallelCluster CLI 命令](commands-v3.md)。CLI 的輸出格式是 [JSON](https://json.org/) 字串。

 **設定新的叢集** 

相較於 AWS ParallelCluster 2， `pcluster configure`命令包含不同的參數 in AWS ParallelCluster 3。如需詳細資訊，請參閱[`pcluster configure`](pcluster.configure-v3.md)。

另請注意，組態檔案語法已從 AWS ParallelCluster 2 變更。如需叢集組態設定的完整參考，請參閱 [叢集組態檔案](cluster-configuration-file-v3.md)。

 **建立新的叢集** 

AWS ParallelCluster `pcluster create`命令已取代 2 的[`pcluster create-cluster`](pcluster.create-cluster-v3.md)命令。

請注意，在沒有 `-nw`選項的情況下，in AWS ParallelCluster 2.x 的預設行為是等待叢集建立事件，而 AWS ParallelCluster 3.x 命令會立即傳回。您可以使用 監控叢集建立的進度[`pcluster describe-cluster`](pcluster.describe-cluster-v3.md)。

An AWS ParallelCluster 3 組態檔案包含單一叢集定義，因此不再需要 `-t` 參數。

以下是範例組態檔案。

```
# AWS ParallelCluster v2
$ pcluster create \
    -r {{REGION}} \
    -c {{V2_CONFIG_FILE}} \
    -nw \
    -t {{CLUSTER_TEMPLATE}} \
    {{CLUSTER_NAME}}

# AWS ParallelCluster v3
$ pcluster create-cluster \
    --region {{REGION}} \
    --cluster-configuration {{V3_CONFIG_FILE}} \
    --cluster-name {{CLUSTER_NAME}}
```

 **列出叢集** 

`pcluster list` AWS ParallelCluster 2.x 命令必須以 [`pcluster list-clusters`](pcluster.list-clusters-v3.md)命令取代。

 注意：您需要 AWS ParallelCluster v2 CLI 來列出使用 2 AWS ParallelCluster.x 版本 建立的叢集。如需如何使用 AWS ParallelCluster 虛擬環境安裝多個版本的 [AWS ParallelCluster 在虛擬環境中安裝 （建議）](install-v3-virtual-environment.md)，請參閱 。

```
# AWS ParallelCluster v2
$ pcluster list -r {{REGION}}

# AWS ParallelCluster v3
$ pcluster list-clusters --region {{REGION}}
```

 **啟動和停止叢集** 

`pcluster start` 和 `pcluster stop` AWS ParallelCluster 2.x 命令必須以 [`pcluster update-compute-fleet`](pcluster.update-compute-fleet-v3.md)命令取代。

 啟動運算機群：

```
# AWS ParallelCluster v2
$ pcluster start \
    -r {{REGION}} \
    {{CLUSTER_NAME}}

# AWS ParallelCluster v3 - Slurm fleets
$ pcluster update-compute-fleet \
    --region {{REGION}} \
    --cluster-name {{CLUSTER_NAME}} \
    --status {{START_REQUESTED}}

# AWS ParallelCluster v3 - AWS Batch fleets
$ pcluster update-compute-fleet \
    --region {{REGION}} \
    --cluster-name {{CLUSTER_NAME}} \
    --status {{ENABLED}}
```

 停止運算機群：

```
# AWS ParallelCluster v2
$ pcluster stop \
    -r {{REGION}} \
    {{CLUSTER_NAME}}

# AWS ParallelCluster v3 - Slurm fleets
$ pcluster update-compute-fleet \
    --region {{REGION}} \
    --cluster-name {{CLUSTER_NAME}} \
    --status {{STOP_REQUESTED}}

# AWS ParallelCluster v3 - AWS Batch fleets
$ pcluster update-compute-fleet \
    --region {{REGION}} \
    --cluster-name {{CLUSTER_NAME}} \
    --status {{DISABLED}}
```

 **連線至叢集** 

`pcluster ssh` AWS ParallelCluster 2.x 命令在 AWS ParallelCluster 3.x 中具有不同的參數名稱。請參閱 [`pcluster ssh`](pcluster.ssh-v3.md)。

連線至叢集：

```
# AWS ParallelCluster v2
$ pcluster ssh \
    -r {{REGION}} \
    {{CLUSTER_NAME}} \
    -i {{~/.ssh/id_rsa}}

# AWS ParallelCluster v3
$ pcluster ssh \
    --region {{REGION}} \
    --cluster-name {{CLUSTER_NAME}} \
    -i {{~/.ssh/id_rsa}}
```

## IMDS 組態更新
<a name="imds-update"></a>

從 3.0.0 版開始，根據預設， AWS ParallelCluster 引入了將對前端節點 IMDS （和執行個體描述檔登入資料） 的存取限制為超級使用者子集的支援。如需詳細資訊，請參閱[`Imds` 屬性](HeadNode-v3.md#HeadNode-v3-Imds.properties)。