네트워크 구성 - AWS ParallelCluster

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

네트워크 구성

AWS ParallelCluster는 네트워킹을 위해 Amazon Virtual Private Cloud(VPC)를 사용합니다. VPC는 클러스터를 배포하기 위한 유연하고 구성 가능한 네트워킹 플랫폼을 제공합니다.

VPC에는 리전에 대해 올바른 도메인 이름이 있는 DHCP 옵션, DNS Resolution = yesDNS Hostnames = yes이 있어야 합니다. 기본 DHCP 옵션 세트는 이미 필수 AmazonProvidedDNS를 지정합니다. 도메인 이름 서버를 두 개 이상 지정하는 경우 Amazon VPC 사용 설명서DHCP 옵션 세트를 참조하세요.

AWS ParallelCluster는 다음과 같은 상위 수준 구성을 지원합니다.

  • 헤드 노드와 컴퓨팅 노드 모두를 위한 서브넷 하나.

  • 퍼블릭 서브넷에 헤드 노드가 있고 프라이빗 서브넷에 컴퓨팅 노드가 있는 두 개의 서브넷. 서브넷은 새 서브넷이거나 기존 서브넷일 수 있습니다.

이러한 모든 구성은 퍼블릭 IP 주소 부여를 사용하거나 사용하지 않고 작동할 수 있습니다. AWS ParallelCluster는 모든 AWS 요청에 대해 HTTP 프록시를 사용하도록 배포할 수도 있습니다. 이러한 구성을 조합하면 많은 배포 시나리오가 가능해집니다. 예를 들어 인터넷을 통해 모든 액세스가 가능한 단일 퍼블릭 서브넷을 구성할 수 있습니다. 또는 모든 트래픽에 대해 AWS Direct Connect 및 HTTP 프록시를 사용하여 완전 사설망을 구성할 수 있습니다.

AWS ParallelCluster 3.0.0부터 각 대기열에 대해 서로 다른 SecurityGroups, AdditionalSecurityGroupsPlacementGroup 설정을 구성할 수 있습니다. 자세한 내용은 HeadNode/NetworkingSlurmQueues/NetworkingAwsBatchQueues/Networking를 참조하세요.

이러한 네트워킹 시나리오의 일러스트를 보려면 다음 아키텍처 다이어그램을 참조하세요.

단일 퍼블릭 서브넷의 AWS ParallelCluster

이 아키텍처의 구성에는 다음 설정이 필요합니다.

# Note that all values are only provided as examples HeadNode: ... Networking: SubnetId: subnet-12345678 # subnet with internet gateway #ElasticIp: true | false | eip-12345678 Scheduling: Scheduler: slurm SlurmQueues: - ... Networking: SubnetIds: - subnet-12345678 # subnet with internet gateway #AssignPublicIp: true

이 구성에서는 클러스터의 모든 인스턴스에 퍼블릭 IP를 할당해야 인터넷에 액세스할 수 있습니다. 이를 위해 다음을 수행합니다.

  • HeadNode/Networking/SubnetId에서 사용되는 서브넷에 대해 “퍼블릭 IPv4 주소 자동 할당 활성화” 설정을 켜거나 HeadNode/Networking/ElasticIp에서 탄력적 IP를 할당하여 헤드 노드에 퍼블릭 IP 주소를 할당해야 합니다.

  • Scheduling/SlurmQueues/Networking/SubnetIds 에서 사용되는 서브넷에 대해 “퍼블릭 IPv4 주소 자동 할당 활성화” 설정을 켜거나 Scheduling/SlurmQueues/Networking에서 AssignPublicIp: true로 설정하여 컴퓨팅 노드에 퍼블릭 IP 주소를 할당해야 합니다.

  • p4d 인스턴스 유형을 정의하거나 여러 네트워크 인터페이스 또는 헤드 노드에 네트워크 인터페이스 카드가 있는 다른 인스턴스 유형을 정의하는 경우에 HeadNode/Networking/ElasticIptrue로 설정하여 퍼블릭 액세스를 제공해야 합니다. AWS 퍼블릭 IP는 단일 네트워크 인터페이스로 시작한 인스턴스에만 할당할 수 있습니다. 이 경우 NAT 게이트웨이를 사용하여 클러스터 컴퓨팅 노드에 대한 퍼블릭 액세스를 제공하는 것이 좋습니다. IP 주소에 관한 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서인스턴스 시작 중 퍼블릭 IPv4 주소 할당을 참조하세요.

  • AWS 퍼블릭 IP는 단일 네트워크 인터페이스로 시작하는 인스턴스에만 할당할 수 있기 때문에, p4d 또는 hp6id 인스턴스 유형이나 컴퓨팅 노드용 네트워크 인터페이스 카드가 여러 개 또는 한 개 있는 다른 인스턴스 유형을 정의할 수 없습니다. IP 주소에 관한 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서인스턴스 시작 중 퍼블릭 IPv4 주소 할당을 참조하세요.

자세한 내용은 Amazon VPC 사용 설명서인터넷 액세스 활성화를 참조하세요.

두 개의 서브넷을 사용하는 AWS ParallelCluster

컴퓨팅 인스턴스에 대한 기존 프라이빗 서브넷을 사용하기 위한 구성에는 다음 설정이 필요합니다.

# Note that all values are only provided as examples HeadNode: ... Networking: SubnetId: subnet-12345678 # subnet with internet gateway #ElasticIp: true | false | eip-12345678 Scheduling: Scheduler: slurm SlurmQueues: - ... Networking: SubnetIds: - subnet-23456789 # subnet with NAT gateway #AssignPublicIp: false

이 구성에서는 클러스터의 헤드 노드에만 퍼블릭 IP를 할당해야 합니다. HeadNode/Networking/SubnetId에서 사용되는 서브넷에 대해 “퍼블릭 IPv4 주소 자동 할당 활성화” 설정을 켜거나 HeadNode/Networking/ElasticIp에서 탄력적 IP를 할당하면 됩니다.

p4d 인스턴스 유형을 정의하거나 여러 네트워크 인터페이스 또는 헤드 노드에 네트워크 인터페이스 카드가 있는 다른 인스턴스 유형을 정의하는 경우에 HeadNode/Networking/ElasticIptrue로 설정하여 퍼블릭 액세스를 제공해야 합니다. AWS 퍼블릭 IP는 단일 네트워크 인터페이스로 시작한 인스턴스에만 할당할 수 있습니다. IP 주소에 관한 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서인스턴스 시작 중 퍼블릭 IPv4 주소 할당을 참조하세요.

이 구성에는 컴퓨팅 인스턴스에 대한 인터넷 액세스를 제공하기 위해 대기열에 사용되는 서브넷의 NAT 게이트웨이 또는 내부 프록시가 필요합니다.

AWS Direct Connect를 사용하여 연결된 단일 프라이빗 서브넷의 AWS ParallelCluster

이 아키텍처의 구성에는 다음 설정이 필요합니다.

# Note that all values are only provided as examples HeadNode: ... Networking: SubnetId: subnet-34567890 # subnet with proxy Proxy: HttpProxyAddress: http://proxy-address:port Ssh: KeyName: ec2-key-name Scheduling: Scheduler: slurm SlurmQueues: - ... Networking: SubnetIds: - subnet-34567890 # subnet with proxy AssignPublicIp: false Proxy: HttpProxyAddress: http://proxy-address:port

Scheduling/SlurmQueues/Networking/AssignPublicIpfalse로 설정한 경우 모든 트래픽에 프록시를 사용하려면 VPC를 올바르게 설정해야 합니다. 헤드 노드와 컴퓨팅 노드 모두에 웹 액세스가 필요합니다.

AWS Batch 스케줄러를 사용하는 AWS ParallelCluster

awsbatch를 스케줄러 유형으로 사용하는 경우 AWS ParallelCluster는 AWS Batch 관리형 컴퓨팅 환경을 생성합니다. AWS Batch 환경은 Amazon Elastic Container Service(Amazon ECS) 컨테이너 인스턴스를 관리합니다. 이러한 인스턴스는 AwsBatchQueues/Networking/SubnetIds 파라미터로 구성된 서브넷에서 시작됩니다. AWS Batch가 올바르게 작동하려면 Amazon ECS 컨테이너 인스턴스에 Amazon ECS 서비스 엔드포인트와 통신하기 위한 외부 네트워크 액세스가 필요합니다. 이 경우는 다음 시나리오로 전환됩니다.

  • 대기열에 지정된 서브넷 ID는 NAT 게이트웨이를 사용하여 인터넷에 액세스합니다. 이 방법이 권장 방법입니다.

  • 대기열 서브넷에서 시작된 인스턴스는 퍼블릭 IP 주소를 가지고 있고 인터넷 게이트웨이를 통해 인터넷에 연결할 수 있습니다.

또한 다중 노드 병렬 작업에 관심이 있는 경우(AWS Batch 설명서에 따라):

AWS Batch 다중 노드 병렬 작업은 Amazon ECS awsvpc 네트워크 모드를 사용합니다. 이렇게 하면 다중 노드 병렬 작업 컨테이너에 Amazon EC2 인스턴스와 동일한 네트워킹 속성이 적용됩니다. 각 다중 노드 병렬 작업 컨테이너는 고유의 탄력적 네트워크 인터페이스, 기본 프라이빗 IP 주소, 내부 DNS 호스트 이름을 가져옵니다. 네트워크 인터페이스는 호스트 컴퓨팅 리소스와 동일한 Amazon VPC 서브넷에서 생성됩니다. 컴퓨팅 리소스에 적용되는 모든 보안 그룹은 네트워크 인터페이스에도 적용됩니다.

Amazon ECS 작업 네트워킹을 사용할 경우 awsvpc 네트워크 모드는 Amazon EC2 시작 유형을 사용하는 작업에 대한 퍼블릭 IP 주소를 탄력적 네트워크 인터페이스에 제공하지 않습니다. 인터넷에 액세스하려면 Amazon EC2 시작 유형을 사용하는 작업이 NAT 게이트웨이를 사용하도록 구성된 프라이빗 서브넷에서 시작되어야 합니다.

클러스터가 다중 노드 병렬 작업을 실행할 수 있도록 하려면 NAT 게이트웨이를 구성해야 합니다.

이전의 모든 구성 및 고려 사항은 AWS Batch에도 유효합니다. 다음은 AWS Batch 네트워킹 구성의 예입니다.

# Note that all values are only provided as examples HeadNode: ... Networking: SubnetId: subnet-12345678 # subnet with internet gateway, NAT gateway or proxy #ElasticIp: true | false | eip-12345678 #Proxy: #HttpProxyAddress: http://proxy-address:port Ssh: KeyName: ec2-key-name Scheduling: Scheduler: awsbatch AwsBatchQueues: - ... Networking: SubnetIds: - subnet-23456789 # subnet with internet gateway, NAT gateway or proxy #AssignPublicIp: true | false

Scheduling/AwsBatchQueues/Networking 섹션에서, SubnetIds는 목록 유형이지만 현재는 하나의 서브넷만 지원됩니다.

자세한 정보는 다음 주제를 참조하세요.

인터넷에 액세스할 수 없는 단일 서브넷의 AWS ParallelCluster


        서브넷 하나를 사용하고 인터넷은 사용하지 않는 AWS ParallelCluster

인터넷에 액세스할 수 없는 서브넷은 인터넷으로의 인바운드 또는 아웃바운드 연결을 허용하지 않습니다. 이 AWS ParallelCluster 구성은 보안에 관심이 있는 고객이 AWS ParallelCluster의 리소스 보안을 더욱 강화하는 데 도움이 될 수 있습니다. AWS ParallelCluster 노드는 인터넷 액세스 없이 클러스터를 실행하는 데 필요한 모든 소프트웨어가 포함된 AWS ParallelCluster AMI를 기반으로 구축됩니다. 이렇게 하면 AWS ParallelCluster가 인터넷에 액세스할 수 없는 노드로 클러스터를 만들고 관리할 수 있습니다.

이 섹션에서는 클러스터를 구성하는 방법에 대해 알아봅니다. 또한 인터넷에 접속하지 않고 클러스터를 실행할 때의 제한 사항에 대해서도 알아봅니다.

VPC 엔드포인트 구성

클러스터가 제대로 작동하려면 클러스터 노드가 여러 AWS 서비스와 상호 작용할 수 있어야 합니다.

클러스터 노드가 인터넷에 액세스하지 않고도 AWS 서비스와 상호 작용할 수 있도록 다음 VPC 엔드포인트를 만들고 구성하세요.

Commercial and AWS GovCloud (US) partitions
서비스 서비스 이름 유형

Amazon CloudWatch

com.amazonaws.region-id.logs

인터페이스

AWS 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

인터페이스

China partition
서비스 서비스 이름 유형

Amazon CloudWatch

com.amazonaws.region-id.logs

인터페이스

AWS 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

인터페이스

** 이 엔드포인트는 DirectoryService가 활성화된 경우에만 필요하며, 그렇지 않으면 선택 사항입니다.

VPC의 모든 인스턴스에는 엔드포인트와 통신할 수 있는 적절한 보안 그룹이 있어야 합니다. HeadNode 아래의 AdditionalSecurityGroupsSlurmQueues 구성 아래의 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을 비활성화하고 EC2 호스트 이름을 사용하기

Slurm 클러스터를 생성할 때, AWS ParallelCluster는 사용자 지정 컴퓨팅 노드 호스트 이름(예: {queue_name}-{st|dy}-{compute_resource}-{N})을 확인하는 데 사용되는 프라이빗 Route 53 호스팅 영역을 생성합니다. Route 53은 VPC 엔드포인트를 지원하지 않으므로 이 기능을 비활성화해야 합니다. 또한 AWS ParallelCluster는 기본 EC2 호스트 이름(예: ip-1-2-3-4)을 사용하도록 구성해야 합니다. 클러스터 구성에 다음 설정을 적용하세요.

... Scheduling: ... SlurmSettings: Dns: DisableManagedDns: true UseEc2Hostnames: true
주의

클러스터를 SlurmSettings/Dns/DisableManagedDns로 생성했으며 UseEc2Hostnamestrue로 설정한 경우, DNS가 Slurm NodeName을 확인하지 않습니다. 대신 Slurm NodeHostName을 사용하세요.

참고

이 노트는 AWS ParallelCluster 버전 3.3.0부터는 관련이 없습니다.

3.3.0 이전의 AWS ParallelCluster 지원되는 버전의 경우:

UseEc2Hostnamestrue로 설정된 경우, Slurm 구성 파일은 AWS ParallelCluster, prologepilog 스크립트로 설정됩니다.

  • 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 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): 인터넷에 액세스할 수 없는 서브넷.

    AWS ParallelCluster와 AWS 서비스 간의 통신을 활성화하려면 서브넷의 VPC에 VPC 엔드포인트가 연결되어 있어야 합니다. 클러스터를 생성하기 전에 서브넷에서 퍼블릭 IPv4 주소 자동 할당이 비활성화되어 있는지 확인하여 pcluster 명령이 클러스터에 액세스할 수 있는지 확인하세요.

  • AdditionalSecurityGroups: 클러스터와 VPC 엔드포인트 간의 통신을 지원하는 보안 그룹입니다.

    선택 사항:

    • 보안 그룹을 명시적으로 지정하지 않고 VPC 엔드포인트를 생성하는 경우 VPC의 기본 보안 그룹이 연결됩니다. 따라서 AdditionalSecurityGroups에 기본 보안 그룹을 제공하세요.

    • 클러스터 및/또는 VPC 엔드포인트를 생성할 때 사용자 지정 보안 그룹을 사용하는 경우, AdditionalSecurityGroups는 사용자 지정 보안 그룹이 클러스터와 VPC 엔드포인트 간의 통신을 지원하는 한 필요하지 않습니다.

  • Scheduler: 클러스터 스케줄러.

    유일한 유효 값은 slurm입니다. Slurm 스케줄러만이 인터넷 액세스가 없는 서브넷의 클러스터를 지원합니다.

  • SlurmSettings: Slurm 설정.

    이전 섹션 Route 53 비활성화 및 EC2 호스트 이름 사용을 참조하세요.

제한 사항

  • SSH 또는 NICE DCV를 통해 헤드 노드에 연결: 클러스터에 연결할 때 연결 클라이언트가 프라이빗 IP 주소를 통해 클러스터의 헤드 노드에 도달할 수 있는지 확인합니다. 클라이언트가 헤드 노드와 같은 VPC에 있지 않은 경우 VPC의 퍼블릭 서브넷에 있는 프록시 인스턴스를 사용하세요. 이 요구 사항은 SSH 및 DCV 연결 모두에 적용됩니다. 서브넷이 인터넷에 액세스할 수 없는 경우 헤드 노드의 퍼블릭 IP에 액세스할 수 없습니다. pcluster sshdcv-connect 명령은 퍼블릭 IP가 있는 경우 퍼블릭 IP를 사용하거나 프라이빗 IP를 사용합니다. 클러스터를 생성하기 전에 서브넷에서 퍼블릭 IPv4 주소 자동 할당이 비활성화되어 있는지 확인하여 pcluster 명령이 클러스터에 액세스할 수 있는지 확인하세요.

    다음 예는 클러스터의 헤드 노드에서 실행되는 DCV 세션에 연결하는 방법을 보여줍니다. 프록시 EC2 인스턴스를 통해 연결합니다. 인스턴스는 PC의 NICE DCV 서버, 프라이빗 서브넷의 헤드 노드용 클라이언트 역할을 합니다.

    퍼블릭 서브넷의 프록시 인스턴스를 통해 DCV를 통해 연결:

    1. 클러스터의 서브넷과 동일한 VPC에 있는 퍼블릭 서브넷에 EC2 인스턴스를 생성합니다.

    2. EC2 인스턴스에 NICE DCV 클라이언트와 서버가 설치되었는지 확인합니다.

    3. 프록시 EC2 인스턴스에 AWS ParallelCluster 사용자 정책을 연결합니다. 자세한 내용은 AWS ParallelCluster 사용자 정책 예시 pcluster 항목을 참조하세요.

    4. 프록시 EC2 인스턴스에 AWS ParallelCluster를 설치합니다.

    5. DCV를 통해 프록시 EC2 인스턴스에 연결합니다.

    6. 프록시 인스턴스의 pcluster dcv-connect 명령을 사용하여 인터넷 액세스 없이 서브넷 내부의 클러스터에 연결할 수 있습니다.

  • 다른 AWS 서비스와의 상호 작용: AWS ParallelCluster에 반드시 필요한 서비스만 위에 나열되어 있습니다. 클러스터가 다른 서비스와 상호 작용해야 하는 경우 해당 VPC 엔드포인트를 생성하세요.