

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 从 Amazon ParallelCluster 2.x 升级到 3.x
<a name="moving-from-v2-to-v3"></a>

以下各节描述了从 Amazon ParallelCluster 2.x 迁移到 3.x 时会发生什么，包括从一个版本到另一个版本的变化。

## 自定义引导操作
<a name="custom_bootstrap_actions"></a>

使用 Amazon ParallelCluster 3，您可以使用和 [`Scheduling`](Scheduling-v3.md)/[`SlurmQueues`](Scheduling-v3.md#Scheduling-v3-SlurmQueues)部分中的（在版本 2 中）和`OnNodeStart`（`pre_install`在 Amazon ParallelCluster 版本 2 中）参数为头节点和`OnNodeConfigured`计算节点指定不同的自定义引导操作脚本。`post_install` Amazon ParallelCluster [`HeadNode`](HeadNode-v3.md)有关更多信息，请参阅 [自定义引导操作](custom-bootstrap-actions-v3.md)。

 为 Amazon ParallelCluster 2 开发的自定义引导操作脚本必须经过调整才能在 Amazon 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`以在引导操作脚本中使用，请注意的值已从 “” 更改`cfn_node_type`为 MasterServer “HeadNode”（请参阅：[包容性语言](#inclusive_language)）。
+ 在 Amazon ParallelCluster 2 上，引导操作脚本的第一个输入参数是脚本的 S3 URL，已被保留。在 Amazon ParallelCluster 3 中，只有在配置中配置的参数才会传递给脚本。

**警告**  
不正式支持使用通过 `/etc/parallelcluster/cfnconfig` 文件提供的内部变量。此文件可能会在未来版本中删除。

## Amazon ParallelCluster 2.x 和 3.x 使用不同的配置文件语法
<a name="pcluster_use_different_config_file_syntax"></a>

 ******** 

Amazon ParallelCluster 3.x 配置使用 YAML 语法。有关完整参考，请参阅[配置文件](configuration-v3.md)。

除了需要 YAML 文件格式外， Amazon ParallelCluster 3.x 中还更新了许多配置部分、设置和参数值。在本节中，我们记录了 Amazon ParallelCluster 配置的关键更改，并 side-by-side举例说明了每个版本的 Amazon ParallelCluster这些差异。

**启用和禁用超线程的多个调度器队列配置示例**

Amazon 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
```

Amazon 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
```

**Lustre 文件 FSx 系统配置的新增示例**

Amazon 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
```

Amazon 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
```

**装载 Lustre 文件系统的现有 FSx 群集配置示例**

Amazon ParallelCluster 2:

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

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

Amazon ParallelCluster 3:

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

 **使用 Intel HPC 平台规范软件堆栈的集群示例** 

Amazon ParallelCluster 2:

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

Amazon ParallelCluster 3:

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

注意: 
+  Intel HPC 平台规范软件的安装受适用的 [Intel 最终用户许可协议](https://software.intel.com/en-us/articles/end-user-license-agreement)条款和条件的约束。

 **自定义 IAM 配置的示例，包括：实例配置文件、实例角色、实例的其他策略以及与集群关联的 lambda 函数的角色** 

Amazon 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
...
```

Amazon 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
```

注意: 
+ 对于 Amazon ParallelCluster 2，IAM 设置适用于集群的所有实例，`additional_iam_policies`不能与一起使用`ec2_iam_role`。
+ 对于 Amazon ParallelCluster 3，您可以为头节点和计算节点设置不同的 IAM 设置，甚至可以为每个计算队列指定不同的 IAM 设置。
+ 对于 Amazon ParallelCluster 3，您可以使用 IAM 实例配置文件作为 IAM 角色的替代方案。 `InstanceProfile`，`InstanceRole`或者`AdditionalIamPolicies`无法一起配置。

**自定义引导操作示例**

Amazon 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"
...
```

Amazon 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 存储桶资源具有读写访问权限的集群示例** 

Amazon 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/*
...
```

Amazon 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>

Amazon ParallelCluster 3 在 Amazon ParallelCluster 2 中使用 “主节点” 的地方使用 “头节点” 一词。这包括以下这些：
+ 在 Amazon Batch 作业环境中导出的变量已更改：从变`MASTER_IP`为`PCLUSTER_HEAD_NODE_IP`。
+ 所有 Amazon CloudFormation 输出都从变`Master*`为`HeadNode*`。
+ 全部 NodeType 和标签从变`Master`为`HeadNode`。

## 调度器支持
<a name="scheduler_support"></a>

Amazon ParallelCluster 3.x 不支持 Son of Grid Engine (SGE) 和 Torque 调度器。

 Amazon Batch 命令`awsbhosts`、、`awsbkill`、`awsbout``awsbqueues``awsbstat`、和作为单独`awsbsub`的 `aws-parallelcluster-awsbatch-cli` PyPI 包分发。此程序包由 Amazon ParallelCluster 安装在头节点上。您仍然可以在集群的头节点上使用这些 Amazon Batch 命令。但如果您希望从头节点以外的其他位置使用 Amazon Batch 命令，则必须先安装 `aws-parallelcluster-awsbatch-cli` PyPI 程序包。

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

 Amazon ParallelCluster 命令行界面 (CLI) 已更改。[Amazon ParallelCluster CLI 命令](commands-v3.md)中描述了新语法。CLI 的输出格式为 [JSON](https://json.org/) 字符串。

 **配置新集群** 

该`pcluster configure`命令在 Amazon ParallelCluster 3 中包含不同的参数，而 Amazon ParallelCluster 2 中包含的参数不同。有关更多信息，请参阅 [`pcluster configure`](pcluster.configure-v3.md)。

另请注意，配置文件语法已从 Amazon ParallelCluster 2 改变。有关集群配置设置的完整参考，请参阅[集群配置文件](cluster-configuration-file-v3.md)。

 **创建新集群** 

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

请注意， Amazon ParallelCluster 2.x 中没有该`-nw`选项的默认行为是等待集群创建事件，而 Amazon ParallelCluster 3.x 命令会立即返回。可以使用 [`pcluster describe-cluster`](pcluster.describe-cluster-v3.md) 监控集群创建进度。

 Amazon ParallelCluster 3 配置文件包含单个集群定义，因此不再需要该`-t`参数。

下面是一个配置文件示例。

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

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

 **列出集群** 

必须将 `pcluster list` Amazon ParallelCluster 2.x 命令替换为[`pcluster list-clusters`](pcluster.list-clusters-v3.md)命令。

 注意：你需要 Amazon ParallelCluster v2 CLI 才能列出使用 2.x 版本的创建的集群。 Amazon ParallelCluster请参阅[Amazon ParallelCluster 在虚拟环境中安装（推荐）](install-v3-virtual-environment.md)，了解如何使用虚拟环境安装 Amazon ParallelCluster 的多个版本。

```
# Amazon ParallelCluster v2
$ pcluster list -r REGION

# Amazon ParallelCluster v3
$ pcluster list-clusters --region REGION
```

 **启动和停止集群** 

`pcluster start`和 `pcluster stop` Amazon ParallelCluster 2.x 命令必须替换为[`pcluster update-compute-fleet`](pcluster.update-compute-fleet-v3.md)命令。

 启动计算实例集：

```
# Amazon ParallelCluster v2
$ pcluster start \
    -r REGION \
    CLUSTER_NAME

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

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

 停止计算实例集：

```
# Amazon ParallelCluster v2
$ pcluster stop \
    -r REGION \
    CLUSTER_NAME

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

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

 **连接到集群** 

`pcluster ssh` Amazon ParallelCluster 2.x 命令在 Amazon ParallelCluster 3.x 中有不同的参数名称。请参阅[`pcluster ssh`](pcluster.ssh-v3.md)。

连接到集群：

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

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

## IMDS 配置更新
<a name="imds-update"></a>

从版本 3.0.0 开始， Amazon ParallelCluster 引入了对默认情况下仅限一部分超级用户访问头节点 IMDS（和实例配置文件凭证）的支持。有关更多信息，请参阅 [`Imds` 属性](HeadNode-v3.md#HeadNode-v3-Imds.properties)。