

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

# AWS ParallelCluster 在沒有網際網路存取的單一子網路中
<a name="aws-parallelcluster-in-a-single-public-subnet-no-internet-v3"></a>

沒有網際網路存取的子網路不允許網際網路的傳入或傳出連線。此 AWS ParallelCluster 組態可協助擔心安全性的客戶進一步增強其 AWS ParallelCluster 資源的安全性。 AWS ParallelCluster 節點是從 AWS ParallelCluster AMIs 建置的，其中包含在無網際網路存取的情況下執行叢集所需的所有軟體。如此一來， AWS ParallelCluster 就可以建立和管理具有無法存取網際網路之節點的叢集。

在本節中，您將了解如何設定叢集。您也了解在沒有網際網路存取的情況下執行叢集的限制。

![AWS ParallelCluster 使用一個子網路且無網際網路](http://docs.aws.amazon.com/zh_tw/parallelcluster/latest/ug/images/networking_single_subnet_no_internet.png)


**設定 VPC 端點**

為了確保叢集正常運作，叢集節點必須能夠與多個 AWS 服務互動。

建立和設定下列 [VPC 端點](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints.html)，讓叢集節點可以與 AWS 服務互動，無需網際網路存取：

------
#### [ Commercial and AWS GovCloud (US) partitions ]


| 服務 | 服務名稱 | Type | 
| --- | --- | --- | 
| Amazon CloudWatch | com.amazonaws.{{region-id}}.logs | 介面 | 
| CloudFormation | com.amazonaws.{{region-id}}.cloudformation | 介面 | 
| Amazon EC2  | com.amazonaws.{{region-id}}.ec2 | 介面 | 
| Amazon S3 | com.amazonaws.{{region-id}}.s3 | 閘道 | 
| Amazon DynamoDB | com.amazonaws.{{region-id}}.dynamodb | 閘道 | 
| AWS Secrets Manager\*\* | com.amazonaws.{{region-id}}.secretsmanager | 介面 | 
| AWS Elastic Load Balancing\*\*\* | com.amazonaws.{{region-id}}.elasticloadbalancing | 介面 | 
| AWS Auto Scaling\*\*\* | com.amazonaws.{{region-id}}.autoscaling | 介面 | 

------
#### [ China partition ]


| 服務 | 服務名稱 | Type | 
| --- | --- | --- | 
| Amazon CloudWatch | com.amazonaws.{{region-id}}.logs | 介面 | 
| CloudFormation | cn.com.amazonaws.{{region-id}}.cloudformation | 介面 | 
| Amazon EC2  | cn.com.amazonaws.{{region-id}}.ec2 | 介面 | 
| Amazon S3 | com.amazonaws.{{region-id}}.s3 | 閘道 | 
| Amazon DynamoDB | com.amazonaws.{{region-id}}.dynamodb | 閘道 | 
| AWS Secrets Manager\*\* | com.amazonaws.{{region-id}}.secretsmanager | 介面 | 
| AWS Elastic Load Balancing\*\*\* | com.amazonaws.{{region-id}}.elasticloadbalancing | 介面 | 
| AWS Auto Scaling\*\*\* | cn.com.amazonaws.{{region-id}}.autoscaling | 介面 | 

------

\*\* 只有在啟用 [`DirectoryService`](DirectoryService-v3.md#DirectoryService-v3.properties) 時，才需要此端點，否則為選用。

\*\*\* 只有在已啟用 [LoginNodes](LoginNodes-v3.md) 時，才需要這些端點，否則它們是選用的。

VPC 中的所有執行個體都必須具有適當的安全群組，才能與端點通訊。您可以透過將安全群組新增至 [`AdditionalSecurityGroups`](HeadNode-v3.md#yaml-HeadNode-Networking-AdditionalSecurityGroups)下的 [`HeadNode`](HeadNode-v3.md)和 [`SlurmQueues`](Scheduling-v3.md#Scheduling-v3-SlurmQueues)組態[`AdditionalSecurityGroups`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-Networking-AdditionalSecurityGroups)下的 來執行此操作。例如，如果建立 VPC 端點時未明確指定安全群組，則預設安全群組會與端點建立關聯。透過將預設安全群組新增至 `AdditionalSecurityGroups`，您可以啟用叢集與端點之間的通訊。

**注意**  
當您使用 IAM 政策來限制對 VPC 端點的存取時，您必須將下列項目新增至 Amazon S3 VPC 端點：  

```
PolicyDocument:
  Version: 2012-10-17
  Statement:
    - Effect: Allow
      Principal: "*"
      Action:
        - "s3:PutObject"
      Resource:
        - !Sub "arn:${AWS::Partition}:s3:::cloudformation-waitcondition-${AWS::Region}/*"
```

**停用 Route 53 並使用 Amazon EC2 主機名稱**

建立Slurm叢集時， AWS ParallelCluster 會建立私有 Route 53 託管區域，用於解析自訂運算節點主機名稱，例如 `{queue_name}-{st|dy}-{compute_resource}-{N}`。由於 Route 53 不支援 VPC 端點，因此必須停用此功能。此外， AWS ParallelCluster 必須設定為使用預設的 Amazon EC2 主機名稱，例如 `ip-1-2-3-4`。將下列設定套用至您的叢集組態：

```
...
Scheduling:
  ...
  SlurmSettings:
    Dns:
      DisableManagedDns: true
      UseEc2Hostnames: true
```

**警告**  
對於使用 [`SlurmSettings`](Scheduling-v3.md#Scheduling-v3-SlurmSettings) / / [`Dns`](Scheduling-v3.md#Scheduling-v3-SlurmSettings-Dns) 建立[`DisableManagedDns`](Scheduling-v3.md#yaml-Scheduling-SlurmSettings-Dns-DisableManagedDns)並[`UseEc2Hostnames`](Scheduling-v3.md#yaml-Scheduling-SlurmSettings-Dns-UseEc2Hostnames)設為 的叢集`true`，DNS Slurm `NodeName` 不會解析 。請Slurm`NodeHostName`改用 。

**注意**  
**此備註從 3.3.0 AWS ParallelCluster 版開始並不相關。**  
對於 3.3.0 之前的 AWS ParallelCluster 支援版本：  
當 `UseEc2Hostnames` 設定為 時`true`，Slurm組態檔案會使用 AWS ParallelCluster `prolog`和 `epilog`指令碼設定：  
`prolog` 會執行 以在每個任務配置時，將節點資訊新增至運算節點`/etc/hosts`上的 。
`epilog` 會執行 以清除 撰寫的內容`prolog`。
若要新增自訂`prolog`或`epilog`指令碼，請分別將它們新增至 `/opt/slurm/etc/pcluster/prolog.d/`或 `/opt/slurm/etc/pcluster/epilog.d/` 資料夾。

**叢集組態**

了解如何將叢集設定為在沒有網際網路連線的子網路中執行。

此架構的組態需要下列設定：

```
# Note that all values are only provided as examples
...
HeadNode:
  ...
  Networking:
    SubnetId: subnet-1234567890abcdef0 # the VPC of the subnet needs to have VPC endpoints
    AdditionalSecurityGroups:
      - sg-abcdef01234567890 # optional, the security group that enables the communication between the cluster and the VPC endpoints
LoginNodes: # optional, if enabled, requires creation and configuration of VPC endpoints for AWS Elastic Load Balancing (ELB) and Auto Scaling services
  Pools:
    - ...
      Networking:
        SubnetIds:
          - subnet-1234567890abcdef0 # the VPC of the subnet needs to have VPC endpoints attached
        AdditionalSecurityGroups:
          - sg-1abcdef01234567890 # optional, the security group that enables the communication between the cluster and the VPC endpoints
Scheduling:
  Scheduler: Slurm # Cluster in a subnet without internet access is supported only when the scheduler is Slurm.
  SlurmSettings:
    Dns:
      DisableManagedDns: true
      UseEc2Hostnames: true
  SlurmQueues:
    - ...
      Networking:
        SubnetIds:
          - subnet-1234567890abcdef0 # the VPC of the subnet needs to have VPC endpoints attached
        AdditionalSecurityGroups:
          - sg-1abcdef01234567890 # optional, the security group that enables the communication between the cluster and the VPC endpoints
```
+ [`SubnetId(s)`](HeadNode-v3.md#yaml-HeadNode-Networking-SubnetId)：沒有網際網路存取的子網路。

  若要啟用 AWS ParallelCluster 和 AWS 服務之間的通訊，子網路的 VPC 必須連接 VPC 端點。建立叢集之前，請確認子網路中[已停用自動指派公有 IPv4 地址](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip)，以確保`pcluster`命令可存取叢集。
+ [`AdditionalSecurityGroups`](HeadNode-v3.md#yaml-HeadNode-Networking-AdditionalSecurityGroups)：啟用叢集與 VPC 端點之間通訊的安全群組。

  選用：
  + 如果建立 VPC 端點時未明確指定安全群組，則會關聯 VPC 的預設安全群組。因此，請將預設安全群組提供給 `AdditionalSecurityGroups`。
  + 如果在建立叢集和/或 VPC 端點時使用自訂安全群組，只要自訂安全群組啟用叢集和 VPC 端點之間的通訊，`AdditionalSecurityGroups`則不需要 。
+ [`Scheduler`](Scheduling-v3.md#yaml-Scheduling-Scheduler)：叢集排程器。

  `slurm` 是唯一的有效值。只有Slurm排程器支援子網路中沒有網際網路存取權的叢集。
+ [`SlurmSettings`](Scheduling-v3.md#Scheduling-v3-SlurmSettings)：Slurm設定。

  請參閱上一節*停用 Route53 並使用 Amazon EC2 主機名稱*。

**限制**
+ *透過 SSH 或 Amazon DCV 連線至前端節點：*連線至叢集時，請確定連線的用戶端可以透過其私有 IP 地址連線到叢集的前端節點。如果用戶端不在與前端節點相同的 VPC 中，請在 VPC 的公有子網路中使用代理執行個體。此要求同時適用於 SSH 和 DCV 連線。如果子網路沒有網際網路存取，則無法存取前端節點的公有 IP。如果公有 IP 或私有 IP， `pcluster ssh`和 `dcv-connect`命令會使用該公有 IP。建立叢集之前，請確認子網路中[已停用自動指派公有 IPv4 地址](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip)，以確保`pcluster`命令可存取叢集。

  下列範例示範如何連線到叢集前端節點中執行的 DCV 工作階段。您可以透過代理 Amazon EC2 執行個體進行連線。執行個體可做為 PC 的 Amazon DCV 伺服器，以及私有子網路中前端節點的用戶端。

  透過公有子網路中的代理執行個體透過 DCV 連線：

  1. 在與叢集子網路位於相同 VPC 的公有子網路中建立 Amazon EC2 執行個體。

  1. 確定 Amazon DCV 用戶端和伺服器已安裝在您的 Amazon EC2 執行個體上。

  1. 將 AWS ParallelCluster 使用者政策連接至代理 Amazon EC2 執行個體。如需詳細資訊，請參閱[AWS ParallelCluster 範例`pcluster`使用者政策](iam-roles-in-parallelcluster-v3.md#iam-roles-in-parallelcluster-v3-example-user-policies)。

  1. 在代理 Amazon EC2 執行個體 AWS ParallelCluster 上安裝 。

  1. 透過 DCV 連線至代理 Amazon EC2 執行個體。

  1. 在代理執行個體上使用 `pcluster dcv-connect`命令，在沒有網際網路存取的情況下連線到子網路內的叢集。
+ *與其他 AWS 服務互動：*上面僅 AWS ParallelCluster 列出 嚴格要求的服務。如果您的叢集必須與其他 服務互動，請建立對應的 VPC 端點。