다음을 통해 공유


CycleCloud 클러스터

CycleCloud에서 클러스터 라는 용어는 단일 시스템으로 함께 작동하는 연결된 컴퓨터(노드) 그룹을 설명합니다. 클러스터를 중첩할 수 있습니다. 예를 들어 그리드 엔진 스케줄러 헤드 노드 및 컴퓨팅 노드로 구성된 컴퓨팅 클러스터는 여러 메타데이터 및 스토리지 서버로 구성된 BeeGFS 클러스터를 탑재할 수 있습니다. 컴퓨팅 및 스토리지 클러스터는 모두 단일 부모 HPC 클러스터 또는 시스템에서 결합됩니다.

개요 다이어그램

노드 및 노드 배열

클러스터는 기본적으로 노드로 구성되며, 각 노드는 HPC 시스템에서 특정 역할을 수행합니다. 용어 노드VM은 때때로 서로 바꿔서 사용되지만 CycleCloud에서는 의미상 분리됩니다. 클러스터를 구성하는 노드는 준비 및 구성 프로세스를 완료하는 Azure의 가상 머신입니다. 즉, Azure 인프라 서비스 계층에서 VM 을 만듭니다. 소프트웨어를 설치하고 구성 단계를 완료한 후 VM 은 HPC 클러스터의 노드 입니다.

아키텍처 다이어그램:

CycleCloud에는 독립 실행형 노드 및 노드 배열이라는 두 가지 유형의 노드가 있습니다. 노드 배열은 동일하게 구성된 노드의 컬렉션입니다. 노드와 노드 배열 구분은 DevOps Pets와 가축의 비유를 따릅니다. 독립 실행형 노드는 Azure의 단일 VM에서 생성됩니다. 노드 배열은 가상 머신 확장 집합에 매핑됩니다.

그러나 노드 배열과 가상 머신 확장 집합 간에는 중요한 차이점이 있습니다. 단일 노드 배열은 여러 가상 머신 확장 집합을 구성할 수 있습니다. 이 구성을 사용하면 크기가 다른 VM 또는 다른 VM 제품군의 VM에서 단일 노드 배열을 빌드할 수 있습니다. 유일한 제약 조건은 노드 배열의 모든 노드가 클러스터에서 동일한 역할을 수행한다는 것입니다. 예를 들어 모든 노드는 스케줄러의 단일 큐에 리소스를 제공합니다.

클러스터 템플릿

토폴로지 또는 텍스트 템플릿에서 CycleCloud 클러스터에서 노드를 구성하는 방법을 정의합니다. 템플릿은 클러스터 노드 간의 관계를 배치합니다. 중첩된 클러스터가 있는 경우 템플릿은 클러스터의 부모-자식 관계를 정의합니다. 템플릿은 각 노드의 역할도 정의합니다.

INI 형식으로 클러스터 템플릿을 정의합니다. 대괄호로 구분된 섹션을 [] 사용하고 클러스터, 노드 및 노드 배열을 정의합니다. INI 파일의 기본 요소는 각 섹션의 구성 세부 정보를 제공하는 키-값 쌍 어설션입니다. 이러한 구성 세부 정보는 VM을 부팅하는 가상 머신 이미지 및 VM에 대한 서브넷과 같은 클러스터의 각 노드를 만드는 컨텍스트 정보를 제공합니다. 자세한 내용은 CycleCloud 클러스터 템플릿을 참조하세요.

노드 준비 및 구성

CycleCloud는 클러스터 템플릿에 정의된 기본 VM 이미지에서 VM을 프로비전합니다. 부팅 프로세스 중에 CycleCloud 에이전트(Jetpack)에서 관리하는 일련의 단계를 통해 VM에서 OS를 초기화하고 구성하여 작동하는 HPC 노드로 변환합니다. 이러한 단계는 예약 소프트웨어를 설치 및 구성하는 스크립트부터 파일 시스템 탑재를 위한 마지막 마일 구성에 이르기까지 다양합니다.

노드 준비 다이어그램

사용자 지정 cluster-init 프로젝트를 만들어 부팅할 때 노드를 사용자 지정하는 방법을 제어할 수 있습니다. 프로젝트에는 노드를 사용자 지정하는 데 필요한 스크립트 및 기타 파일이 포함되어 있으며 클러스터에서 다양한 종류의 역할에 대한 사양 으로 구분됩니다. 예를 들어 Slurm과 같은 일괄 처리 스케줄러에 대한 프로젝트는 적어도 세 가지 사양으로 구성됩니다. 하나는 스케줄러 헤드 노드용, 하나는 컴퓨팅 노드용, 다른 하나는 로그인 노드용으로 구성됩니다. CycleCloud 프로젝트에 대해 자세히 알아보세요.

노드 정의에서 해당 노드에서 실행해야 하는 사양을 참조합니다. Jetpack은 부팅 시 이러한 사양을 사용하여 클러스터에서 해당 역할에 대한 노드를 준비합니다. 사양 파일은 사용자의 Blob Storage 계정에서 제공되며 노드가 시작되기 전에 CycleCloud 애플리케이션 서버에서 스토리지 계정으로 스테이징됩니다.

비고

기본 제공 템플릿(예: Slurm 클러스터 유형)에 대한 사양은 GitHub에 저장됩니다. CycleCloud는 노드가 시작될 때 자동으로 사용자의 스토리지 계정에 다운로드합니다.

노드가 부팅되면 Jetpack은 노드에 정의된 사양을 섹션과 함께 [[[cluster-init]]] 다운로드하고 처리하여 노드를 작업 상태로 수렴 합니다(예: 컴퓨팅 노드).

노드 오케스트레이션

클러스터에서 사용되는 스케줄러 및 서비스에 따라 CycleCloud는 때때로 다른 노드를 조정하여 클러스터의 노드 준비 단계를 오케스트레이션해야 합니다. 예를 들어 일부 스케줄러는 각 컴퓨팅 노드가 스케줄러 디먼에 자신을 등록하도록 요구합니다. 이 요구 사항은 컴퓨팅 노드가 헤드 노드의 주소를 인식해야 한다는 것을 의미합니다. 또한 컴퓨팅 노드는 헤드 노드가 완전히 준비되었다는 것을 인식하고 그렇지 않은 경우 기다려야 합니다.

CycleCloud는 파일 시스템 서버-클라이언트 관계에 서비스 검색 의 이 요소를 사용합니다.

추가 정보