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] 섹션에는 여러 [[[volume]]] 섹션이 포함될 수 있는 [[node]] 섹션이 하나 이상 포함될 수 있습니다. 마찬가지로, 동일한 템플릿의 [cluster] 섹션 내에서 각자에 [[[configuration]]]이 있는 하나 이상의 [[nodearray]] 섹션을 정의할 수 있습니다.

참고

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

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

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

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

참고 항목

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

참고

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

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

각 섹션에는 섹션 헤더로 표시되는 해당 개체에 대한 구성 세부 정보를 제공하는 몇 가지 키-값 쌍이 포함되어 있습니다. 예를 들어 nodearray에 대한 이러한 세부 정보에는 노드에 사용할 Azure VM 이미지를 지정하는 값이 있는 키 또는 Azure.MaxScalesetSize 허용되는 최대 가상 머신 확장 집합 크기를 해당 값으로 지정하는 키가 포함될 ImageName 수 있습니다. 마찬가지로 노드 또는 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> 자리 표시자는 락커의 이름을 나타냅니다. 사용 가능한 락커를 나열하려면 cyclecloud locker list Azure CycleCloud CLI 명령을 실행합니다. 락커 이름은 [[[cluster-init]]] 섹션에서 참조됩니다.

참고

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