클러스터에 대한 다중 사용자 액세스 - AWS ParallelCluster

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

클러스터에 대한 다중 사용자 액세스

단일 클러스터에 대한 다중 사용자 액세스를 구현하고 관리하는 방법을 알아봅니다.

이 항목에서 AWS ParallelCluster 사용자는 컴퓨팅 인스턴스의 시스템 사용자를 말합니다. Amazon EC2 인스턴스를 ec2-user 예로 들 수 있습니다.

AWS ParallelCluster 다중 사용자 액세스 AWS ParallelCluster 지원은 현재 가능한 모든 AWS 리전 곳에서 제공됩니다. Amazon FSx for Lustre와 아마존 Elastic File System을 비롯한 다른 AWS services시스템과도 호환됩니다.

AWS Directory Service for Microsoft Active Directory 또는 Simple AD를 사용하여 클러스터 액세스를 관리할 수 있습니다. 이러한 서비스의 AWS 리전 가용성을 확인하세요. 클러스터를 설정하려면 구성을 지정하십시오. AWS ParallelCluster DirectoryService AWS Directory Service 디렉토리를 여러 클러스터에 연결할 수 있습니다. 이를 통해 여러 환경에서 자격 증명을 중앙 집중식으로 관리하고 통합 로그인 경험을 제공할 수 있습니다.

를 AWS ParallelCluster 여러 사용자 AWS Directory Service 액세스에 사용하는 경우 디렉터리에 정의된 사용자 자격 증명으로 클러스터에 로그인할 수 있습니다. 이러한 자격 증명은 사용자 이름과 암호로 구성됩니다. 클러스터에 처음 로그인하면 사용자 SSH 키가 자동으로 생성됩니다. 이를 사용하여 암호 없이 로그인할 수 있습니다.

디렉터리 서비스를 배포한 후 클러스터의 사용자 또는 그룹을 생성, 삭제 및 수정할 수 있습니다. 를 사용하면 AWS Management Console 또는 Active Directory 사용자 및 컴퓨터 도구를 사용하여 이 작업을 수행할 수 있습니다. AWS Directory Service이 도구는 Active Directory에 연결된 모든 Amazon EC2 인스턴스에서 액세스할 수 있습니다. 자세한 내용은 Active Directory 관리 도구 설치를 참조하세요.

인터넷에 액세스할 수 없는 단일 AWS ParallelCluster 서브넷에서 사용하려는 경우 추가 요구 사항을 AWS ParallelCluster 인터넷에 액세스할 수 없는 단일 서브넷에서 참조하십시오.

Active Directory 생성

클러스터를 생성하기 전에 반드시 Active Directory(AD)를 생성해야 합니다. 클러스터의 Active Directory 유형을 선택하는 방법에 대한 자세한 내용은AWS Directory Service 관리 가이드선택 항목을 참조하세요.

디렉터리가 비어 있는 경우 사용자 이름과 암호를 사용하여 사용자를 추가하세요. 자세한 내용은 AWS Directory Service for Microsoft Active Directory 또는 Simple AD 관련 설명서를 참조하세요.

참고

AWS ParallelCluster 모든 Active Directory 사용자 디렉터리가 /home/$user 디렉터리에 있어야 합니다.

AD 도메인을 사용하여 클러스터를 생성합니다.

주의

이 소개 섹션에서는 경량 디렉터리 액세스 프로토콜 (LDAP) 을 통해 관리형 Active Directory (AD) 서버를 설정하는 AWS ParallelCluster 방법을 설명합니다. LDAP는 안전하지 않은 프로토콜입니다. 프로덕션 시스템의 경우 다음 LDAP (S) 클러스터 구성의 예 AWS Managed Microsoft AD 섹션에 설명된 대로 TLS 인증서(LDAPS)를 사용하는 것이 좋습니다.

클러스터 구성 파일의 DirectoryService 섹션에 관련 정보를 지정하여 디렉토리와 통합되도록 클러스터를 구성하세요. 자세한 내용은 DirectoryService 구성 섹션을 참조하세요.

다음 예제를 사용하여 클러스터를 경량 디렉터리 액세스 프로토콜 (LDAP) 을 AWS Managed Microsoft AD 통한 경량 디렉터리 액세스 프로토콜 (LDAP) 과 통합할 수 있습니다.

AWS Managed Microsoft AD OverLDAP 구성에 필요한 특정 정의:

AWS Managed Microsoft AD 구성 데이터 가져오기:

$ aws ds describe-directories --directory-id "d-abcdef01234567890"
{ "DirectoryDescriptions": [ { "DirectoryId": "d-abcdef01234567890", "Name": "corp.example.com", "DnsIpAddrs": [ "203.0.113.225", "192.0.2.254" ], "VpcSettings": { "VpcId": "vpc-021345abcdef6789", "SubnetIds": [ "subnet-1234567890abcdef0", "subnet-abcdef01234567890" ], "AvailabilityZones": [ "region-idb", "region-idd" ] } } ] }

AWS Managed Microsoft AD에 대한 클러스터 구성:

Region: region-id Image: Os: alinux2 HeadNode: InstanceType: t2.micro Networking: SubnetId: subnet-1234567890abcdef0 Ssh: KeyName: pcluster Scheduling: Scheduler: slurm SlurmQueues: - Name: queue1 ComputeResources: - Name: t2micro InstanceType: t2.micro MinCount: 1 MaxCount: 10 Networking: SubnetIds: - subnet-abcdef01234567890 DirectoryService: DomainName: dc=corp,dc=example,dc=com DomainAddr: ldap://203.0.113.225,ldap://192.0.2.254 PasswordSecretArn: arn:aws:secretsmanager:region-id:123456789012:secret:MicrosoftAD.Admin.Password-1234 DomainReadOnlyUser: cn=ReadOnly,ou=Users,ou=CORP,dc=corp,dc=example,dc=com AdditionalSssdConfigs: ldap_auth_disable_tls_never_use_in_production: True

Simple AD에 이 구성을 사용하려면 DirectoryService 섹션에서 DomainReadOnlyUser 속성 값을 변경하세요.

DirectoryService: DomainName: dc=corp,dc=example,dc=com DomainAddr: ldap://203.0.113.225,ldap://192.0.2.254 PasswordSecretArn: arn:aws:secretsmanager:region-id:123456789012:secret:SimpleAD.Admin.Password-1234 DomainReadOnlyUser: cn=ReadOnlyUser,cn=Users,dc=corp,dc=example,dc=com AdditionalSssdConfigs: ldap_auth_disable_tls_never_use_in_production: True
고려 사항:
  • LDAP만 사용하는 대신 TLS/SSL(또는 LDAPS)을 통한 LDAP를 사용하는 것이 좋습니다. TLS/SSL은 연결이 암호화되도록 합니다.

  • DirectoryService/DomainAddr 속성 값은 describe-directories 출력의 DnsIpAddrs 목록에 있는 항목과 일치합니다.

  • 클러스터는 DirectoryService/DomainAddr이 가리키는 동일한 가용 영역에 있는 서브넷을 사용하는 것이 좋습니다. 디렉터리 VPC에 권장되는 사용자 지정 Dynamic Host Configuration Protocol(DHCP) 구성을 사용하고 서브넷이 DirectoryService/DomainAddr가용 영역에 있지 않은 가용 영역 간 교차 트래픽이 발생할 수 있습니다. 다중 사용자 AD 통합 기능을 사용하기 위해 사용자 지정 DHCP 구성을 사용할 필요는 없습니다.

  • DirectoryService/DomainReadOnlyUser 속성 값은 디렉터리에 만들어야 하는 사용자를 지정합니다. 이 사용자는 기본적으로 생성되지 않습니다. 이 사용자에게 디렉터리 데이터를 수정할 수 있는 권한을 부여하지 않는 것이 좋습니다.

  • DirectoryService/PasswordSecretArn속성 값은 DirectoryService/DomainReadOnlyUser속성에 지정한 사용자의 암호가 포함된 AWS Secrets Manager 암호를 가리킵니다. 이 사용자의 암호가 변경되면 보안 암호 값을 업데이트하고 클러스터를 업데이트하세요. 새 보안 암호 값에 맞게 클러스터를 업데이트하려면 pcluster update-compute-fleet 명령을 사용하여 컴퓨팅 플릿을 중지해야 합니다. 클러스터가 LoginNodes를 사용하도록 구성한 경우 LoginNodes/PoolsLoginNodes/Pools/Count를 0으로 설정한 후 클러스터를 업데이트하세요. 그리고 나서 클러스터 헤드 노드 내에서 다음 명령을 실행합니다.

    sudo /opt/parallelcluster/scripts/directory_service/update_directory_service_password.sh

다른 예제는 Active Directory 통합를 참조하세요.

AD 도메인과 통합된 클러스터에 로그인합니다.

Active Delivery(AD) 도메인 통합 기능을 활성화한 경우 클러스터 헤드 노드에서 암호를 통한 인증이 활성화됩니다. AD 사용자의 홈 디렉터리는 헤드 노드에 처음 로그인하거나 sudo-user가 헤드 노드의 AD 사용자로 처음 전환할 때 생성됩니다.

클러스터 컴퓨팅 노드에는 암호 인증이 활성화되지 않습니다. AD 사용자는 SSH 키를 사용하여 컴퓨팅 노드에 로그인해야 합니다.

기본적으로 SSH 키는 헤드 노드에 처음 SSH 로그인할 때 AD 사용자 /${HOME}/.ssh 디렉터리에 설정됩니다. 클러스터 구성에서 DirectoryService/GenerateSshKeysForUsers 부울 속성을 false로 설정하여 이 동작을 비활성화할 수 있습니다. 기본적으로 DirectoryService/GenerateSshKeysForUserstrue로 설정됩니다.

AWS ParallelCluster 응용 프로그램에 클러스터 노드 간에 암호 없는 SSH가 필요한 경우 SSH 키가 사용자의 홈 디렉터리에 올바르게 설정되어 있는지 확인하십시오.

AWS Managed Microsoft AD 암호는 42일 후에 만료됩니다. 자세한 내용은AWS Directory Service 관리 가이드AWS Managed Microsoft AD를 위한 암호 정책 관리를 참조하세요. 암호가 만료된 경우 클러스터 액세스를 복원하려면 암호를 재설정해야 합니다. 자세한 정보는 사용자 암호 및 만료된 암호를 재설정하는 방법을 참조하세요.

참고

AD 통합 기능이 예상대로 작동하지 않는 경우 SSSD 로그는 문제 해결에 유용한 진단 정보를 제공할 수 있습니다. 이러한 로그는 클러스터 노드의 /var/log/sssd 디렉터리에 있습니다. 기본적으로 클러스터의 Amazon CloudWatch 로그 그룹에도 저장됩니다.

자세한 정보는 Active Directory와의 다중 사용자 통합 문제 해결을 참조하세요.

MPI 작업 실행

SchedMD에서 제안한 대로 Slurm을 사용한 MPI 작업을 MPI 부트스트래핑 방법으로 사용하여 부트스트랩하세요. 자세한 내용은 공식 Slurm설명서 또는 MPI 라이브러리의 공식 설명서를 참조하십시오.

예를 들어 IntelMPI 공식 설명서에서는 StarCCM 작업을 실행할 때 환경 변수 I_MPI_HYDRA_BOOTSTRAP=slurm을 내보내 Slurm을 프로세스 오케스트레이터로 설정해야 한다는 내용을 알 수 있습니다.

참고

알려진 문제

MPI 애플리케이션이 MPI 작업을 생성하는 메커니즘으로 SSH를 사용하는 경우 Slurm에서 알려진 버그가 발생하여 디렉터리 사용자 이름을 “nobody”로 잘못 해석할 수 있습니다.

Slurm을 MPI 부트스트래핑 방법으로 사용하도록 애플리케이션을 구성하거나 문제 해결 섹션의 사용자 이름 확인과 관련된 알려진 문제에서 자세한 내용 및 가능한 해결 방법을 참조하세요.

LDAP (S) 클러스터 구성의 예 AWS Managed Microsoft AD

AWS ParallelCluster LDAP (경량 디렉터리 액세스 프로토콜) 를 AWS Directory Service 통한 LDAP 또는 TLS/SSL을 통한 LDAP (LDAPS) 와 통합하여 다중 사용자 액세스를 지원합니다.

다음 예제에서는 LDAP(S)를 통한 AWS Managed Microsoft AD 와 통합할 클러스터 구성을 생성하는 방법을 보여 줍니다.

이 예제를 사용하여 인증서 검증을 통해 클러스터를 AWS Managed Microsoft AD over LDAPS와 통합할 수 있습니다.

인증서를 사용하는 AWS Managed Microsoft AD Over LDAPS 구성에 대한 특정 정의:
  • DirectoryService/LdapTlsReqCert는 인증서 검증이 포함된 LDAPS의 경우 hard(기본값)로 설정해야 합니다.

  • DirectoryService/LdapTlsCaCert는 CA(인증 기관) 인증서의 경로를 지정해야 합니다.

    CA 인증서는 AD 도메인 컨트롤러용 인증서를 발급한 전체 CA 체인의 인증서를 포함하는 인증서 번들입니다.

    CA 인증서와 인증서를 클러스터 노드에 설치해야 합니다.

  • 컨트롤러 호스트 이름은 IP 주소가 아니라 DirectoryService/DomainAddr에 대해 지정해야 합니다.

  • DirectoryService/DomainReadOnlyUser 구문은 다음과 같아야 합니다.

    cn=ReadOnly,ou=Users,ou=CORP,dc=corp,dc=example,dc=com

LDAPS를 통한 AD를 사용하기 위한 예제 클러스터 구성 파일:

Region: region-id Image: Os: alinux2 HeadNode: InstanceType: t2.micro Networking: SubnetId: subnet-1234567890abcdef0 Ssh: KeyName: pcluster Iam: AdditionalIamPolicies: - Policy: arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess CustomActions: OnNodeConfigured: Script: s3://aws-parallelcluster/scripts/pcluster-dub-msad-ldaps.post.sh Scheduling: Scheduler: slurm SlurmQueues: - Name: queue1 ComputeResources: - Name: t2micro InstanceType: t2.micro MinCount: 1 MaxCount: 10 Networking: SubnetIds: - subnet-abcdef01234567890 Iam: AdditionalIamPolicies: - Policy: arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess CustomActions: OnNodeConfigured: Script: s3://aws-parallelcluster-pcluster/scripts/pcluster-dub-msad-ldaps.post.sh DirectoryService: DomainName: dc=corp,dc=example,dc=com DomainAddr: ldaps://win-abcdef01234567890.corp.example.com,ldaps://win-abcdef01234567890.corp.example.com PasswordSecretArn: arn:aws:secretsmanager:region-id:123456789012:secret:MicrosoftAD.Admin.Password-1234 DomainReadOnlyUser: cn=ReadOnly,ou=Users,ou=CORP,dc=corp,dc=example,dc=com LdapTlsCaCert: /etc/openldap/cacerts/corp.example.com.bundleca.cer LdapTlsReqCert: hard

설치 후 스크립트에서 인증서를 추가하고 도메인 컨트롤러를 구성합니다.

*#!/bin/bash* set -e AD_CERTIFICATE_S3_URI="s3://corp.example.com/bundle/corp.example.com.bundleca.cer" AD_CERTIFICATE_LOCAL="/etc/openldap/cacerts/corp.example.com.bundleca.cer" AD_HOSTNAME_1="win-abcdef01234567890.corp.example.com" AD_IP_1="192.0.2.254" AD_HOSTNAME_2="win-abcdef01234567890.corp.example.com" AD_IP_2="203.0.113.225" # Download CA certificate mkdir -p $(dirname "${AD_CERTIFICATE_LOCAL}") aws s3 cp "${AD_CERTIFICATE_S3_URI}" "${AD_CERTIFICATE_LOCAL}" chmod 644 "${AD_CERTIFICATE_LOCAL}" # Configure domain controllers reachability echo "${AD_IP_1} ${AD_HOSTNAME_1}" >> /etc/hosts echo "${AD_IP_2} ${AD_HOSTNAME_2}" >> /etc/hosts

다음 예와 같이 도메인에 가입된 인스턴스에서 도메인 컨트롤러 호스트 이름을 검색할 수 있습니다.

Windows 인스턴스에서

$ nslookup 192.0.2.254
Server: corp.example.com Address: 192.0.2.254 Name: win-abcdef01234567890.corp.example.com Address: 192.0.2.254

Linux 인스턴스에서

$ nslookup 192.0.2.254
192.0.2.254.in-addr.arpa name = corp.example.com 192.0.2.254.in-addr.arpa name = win-abcdef01234567890.corp.example.com

이 예제를 사용하여 인증서 확인 없이 클러스터를 AWS Managed Microsoft AD over LDAPS와 통합할 수 있습니다.

인증서 확인을 사용하지 않는 AWS Managed Microsoft AD over LDAPS 컨피그레이션에 대한 특정 정의:

인증서 확인 없이 AWS Managed Microsoft AD OverLDAPS를 사용하기 위한 예제 클러스터 구성 파일:

Region: region-id Image: Os: alinux2 HeadNode: InstanceType: t2.micro Networking: SubnetId: subnet-1234567890abcdef0 Ssh: KeyName: pcluster Scheduling: Scheduler: slurm SlurmQueues: - Name: queue1 ComputeResources: - Name: t2micro InstanceType: t2.micro MinCount: 1 MaxCount: 10 Networking: SubnetIds: - subnet-abcdef01234567890 DirectoryService: DomainName: dc=corp,dc=example,dc=com DomainAddr: ldaps://203.0.113.225,ldaps://192.0.2.254 PasswordSecretArn: arn:aws:secretsmanager:region-id:123456789012:secret:MicrosoftAD.Admin.Password-1234 DomainReadOnlyUser: cn=ReadOnly,ou=Users,ou=CORP,dc=corp,dc=example,dc=com LdapTlsReqCert: never