Azure CycleCloud 클러스터 템플릿 설명

완료됨

Azure CycleCloud는 HPC 클러스터의 템플릿 기반 배포를 제공합니다. 기본적으로 Azure CycleCloud 애플리케이션에는 Slurm, PBSPro, LSF, Grid Engine 및 HT-Condor를 포함하여 가장 일반적인 클러스터 스케줄러를 배포하기 위한 몇 가지 기본 제공 템플릿이 포함되어 있습니다. Azure CycleCloud GitHub 리포지토리는 사용자 지정하고 Azure CycleCloud 인스턴스로 가져올 수 있는 많은 스케줄러 관련 프로젝트를 제공합니다. 또한 CycleCloud 자동 크기 조정 플러그 인을 사용하여 자체 사내에서 개발한 스케줄러에 템플릿 기반 프로비저닝을 구현하는 옵션도 있습니다.

템플릿은 사용자 지정 VM(가상 머신) 이미지, 자동 크기 조정 및 스폿 VM에 대한 지원을 포함하여 광범위한 Azure CycleCloud 기능을 구현하는 데 도움이 됩니다. 또한 프로덕션, 개발 및 테스트 환경을 격리하는 데 일반적으로 사용되는 동일하게 구성된 클러스터의 여러 배포를 프로비전 및 유지 관리하는 것과 관련된 오버헤드를 최소화합니다.

이러한 이점은 Contoso용 새 Azure 상주 클러스터를 구현하기 위한 목표에 부합합니다. 이러한 이점의 범위를 최적화하기 위해 Azure CycleCloud 템플릿을 구현하는 형식 및 프로세스에 대해 자세히 알아보기로 결정합니다.

Azure CycleCloud 템플릿의 형식은 무엇인가요?

템플릿은 클러스터 노드 역할 및 해당 관계를 포함하여 CycleCloud 클러스터의 구조 및 구성을 설명하기 위해 선언적 구문을 사용하는 INI 형식의 파일입니다. 템플릿은 하나 이상의 대괄호 쌍으로 지정된 헤더가 있는 명명된 섹션으로 구성됩니다. 섹션은 클러스터 개체의 계층 구조 및 해당 매개 변수에 해당하는 계층 구조를 형성합니다. 대괄호 수는 해당 계층 내의 계층을 나타내며 각 계층에 따라 순차적으로 증가합니다.

[cluster]
  [[node, nodearray]]
    [[[volume]]]
    [[[network-interface]]]
    [[[cluster-init]]]
    [[[input-endpoint]]]
    [[[configuration]]]
[environment]
[noderef]
[parameters]
  [[parameters]]
    [[[parameter]]]

실제로 [cluster] 섹션에는 하나 이상의 [[node]] 섹션이 포함될 수 있으며, 각 [[node]] 섹션에는 여러 [[[volume]]] 섹션이 포함될 수 있습니다. 마찬가지로, 동일한 템플릿의 [cluster] 섹션 내에서는, 각기 고유한 [[[configuration]]]를 사용하는 하나 이상의 [[nodearray]] 섹션을 정의할 수 있습니다.

비고

동일한 계층 내의 섹션 순서는 임의입니다.

템플릿의 주요 섹션은 무엇인가요?

템플릿은 다음 주요 섹션으로 구성됩니다.

  • 클러스터: 이 [cluster] 섹션에는 Azure CycleCloud 클러스터 개체의 정의가 포함되어 있습니다. 템플릿에는 하나 이상의 [[node]] 섹션과 [[nodearray]] 해당 클러스터의 자식 개체를 설명하는 섹션이 포함된 섹션이 하나 [cluster] 이상 포함되어야 합니다.
  • 노드: 플랫폼 프로비전된 단일 VM을 나타냅니다.
  • Nodearray: 하나 이상의 Azure 가상 머신 확장 집합을 나타냅니다.

비고

클러스터는 클러스터된 워크로드를 처리하는 데 지정된 역할을 제공하는 노드로 구성됩니다. 구현 관점에서 Azure CycleCloud는 Azure Resource Manager를 사용하여 개별 Azure VM 또는 가상 머신 확장 집합의 멤버로 프로비전합니다. 후자는 Azure VM과 달리 수평 자동 크기 조정을 지원하는 동일하게 구성된 VM의 컬렉션을 나타냅니다. Azure CycleCloud는 가상 머신 확장 집합을 사용하여 nodearray를 구현합니다. 실제로 이 섹션에서는 [[node]] 독립 실행형 Azure VM이거나 Azure 가상 머신 확장 집합에 속할 수 있는 플랫폼 프로비전된 기본 VM의 속성을 설명합니다. 이 섹션에서는 [[nodearray]] Azure 가상 머신 확장 집합에 대해 설명합니다.

비고

nodearray는 여러 Azure 가상 머신 확장 집합으로 구성되며 각 집합은 다르게 구성된 VM으로 구성됩니다. 그러나 nodearray의 모든 노드는 클러스터 스케줄러의 단일 큐에 리소스를 제공하는 것과 같은 클러스터에서 동일한 역할을 수행합니다.

  • 볼륨 은 노드 배열을 형성하는 개별 클러스터 노드 또는 노드에 연결해야 하는 Azure 관리 디스크를 정의합니다. 이는 노드 또는 nodearray 개체의 자식 개체입니다.
  • 네트워크 인터페이스는 개별 클러스터 노드 또는 노드 배열의 일부로 결합될 Azure 네트워크 인터페이스를 정의합니다. 노드 객체 또는 nodearray 객체의 자식 객체입니다.
  • 구성 은 노드 또는 nodearray의 구성 가능한 속성을 정의합니다. 이는 노드 또는 nodearray 개체의 자식 개체입니다.
  • Cluster-init 는 클러스터 노드에 적용할 Azure CycleCloud 프로젝트 사양을 정의합니다. 프로젝트는 프로젝트 사양의 형태로 노드 구성을 정의하는 리소스 컬렉션입니다. 노드가 시작되면 이러한 사양을 처리하여 자동으로 구성됩니다. cluster-init은 노드 또는 nodearray 개체의 자식 개체입니다.
  • 환경 은 클러스터에서 사용할 Azure 리소스를 프로비전하거나 수정하는 Azure Resource Manager 배포를 정의합니다. 선택적 최상위 개체입니다.
  • Noderef 는 템플릿 내의 노드를 참조하여 리소스 종속성을 표현합니다. 선택적 최상위 개체입니다.
  • 매개 변수 를 사용하면 템플릿을 이식 가능하도록 만들 수 있으므로 일치하는 개체 계층 구조이지만 구성 설정이 다른 여러 클러스터를 배포하는 데 사용할 수 있습니다. 선택적 최상위 개체이지만 중첩된 매개 변수 계층 구조를 만드는 옵션이 있습니다. 각 매개 변수에 대해 기본값을 정의할 수 있습니다. 매개 변수를 사용하면 CycleCloud 웹 인터페이스를 통해 클러스터에서 구성 가능한 변수를 노출할 수도 있습니다.

각 섹션에는 섹션 헤더로 표시되는 해당 개체에 대한 구성 세부 정보를 제공하는 여러 키-값 쌍이 포함되어 있습니다. 예를 들어, nodearray의 세부 정보에는 노드에 사용할 Azure VM 이미지를 지정하는 ImageName 키와 허용되는 최대 가상 머신 확장 집합 크기를 값으로 지정하는 Azure.MaxScalesetSize 키가 포함될 수 있습니다. 마찬가지로 노드 또는 nodearray 섹션에는 하나 이상의 [[[configuration]]] 섹션이 포함될 수 있습니다.

템플릿을 기반으로 클러스터를 프로비전하는 방법

Azure CycleCloud 클러스터를 프로비전하는 데 사용하려는 템플릿을 식별한 후 다음 구현 방법 중 원하는 방법을 적용할 수 있습니다.

  • Azure CycleCloud CLI를 사용하여 템플릿을 Azure CycleCloud 애플리케이션으로 가져온 다음, 애플리케이션의 그래픽 인터페이스를 사용하여 클러스터를 프로비전합니다. 가져오기를 트리거하려면 명령을 실행 cyclecloud import_template -f <template_file> 합니다.여기서 <template_file> 자리 표시자는 템플릿을 포함하는 파일의 이름을 나타냅니다. 템플릿에 여러 클러스터 정의가 포함된 경우 매개 변수 값으로 참조하여 가져올 클러스터의 -c 이름을 지정합니다.
  • Azure CycleCloud CLI를 사용하여 템플릿을 Azure CycleCloud 애플리케이션으로 가져온 다음 클러스터를 프로비전합니다. 가져오기를 트리거하려면 명령을 실행 cyclecloud import_template -t -f <template_file> 합니다.여기서 <template_file> 자리 표시자는 템플릿을 포함하는 파일의 이름을 나타냅니다. 가져오기가 완료되면 명령을 실행합니다 cyclecloud create_cluster . 예를 들어 가져온 lab-template템플릿에서 명명 lab-cluster 된 클러스터를 만들려면 실행cyclecloud create_cluster lab-template lab-cluster합니다.
  • Azure CycleCloud CLI를 사용하여 템플릿을 명시적으로 가져오지 않고 클러스터를 프로비전합니다. 가져오기를 트리거하려면 명령을 실행합니다 cyclecloud import_cluster .

선택한 방법에 관계없이 클러스터 프로비전 중에 필요한 매개 변수의 값을 제공해야 합니다. Azure CycleCloud CLI를 사용하는 경우 JSON 형식의 매개 변수 파일을 참조하여 제공할 수 있습니다.

비고

이 파일은 키가 매개 변수 이름을 나타내는 키-값 쌍으로 구성됩니다. 기존 클러스터의 형식을 검토하려면, cyclecloud export_parameters <cluster_name> > params.json 명령을 사용하고 <cluster_name> 자리 표시자에 기존 클러스터의 이름을 입력하십시오.

비고

가져온 템플릿을 기반으로 클러스터를 배포하기 전에 해당 프로젝트의 콘텐츠를 Azure CycleCloud 사물함에 업로드해야 합니다. 업로드를 수행하려면 cyclecloud project upload <locker_name> Azure CycleCloud CLI 명령(여기서 <locker_name> 자리 표시자는 사물함의 이름을 나타냄)을 사용합니다. 사용 가능한 사물함을 나열하려면 Azure CycleCloud CLI 명령을 실행 cyclecloud locker list 합니다. 락커 이름은 [[[cluster-init]]] 섹션에서 참조됩니다.

비고

Azure CycleCloud 설치를 설정하는 단계 중 하나는 Azure Storage 계정에서 Blob 컨테이너를 만드는 것입니다. 이 컨테이너는 CycleCloud 서버가 클러스터 노드에 대한 CycleCloud 프로젝트를 스테이징하는 데 사용하는 사물함 역할을 합니다. 그 후 Azure CycleCloud 관리형 클러스터의 노드는 부팅 프로세스의 일부로 이 보관함에서 CycleCloud 프로젝트를 다운로드하도록 구성됩니다.