Azure CycleCloud 기본 사항 설명
많은 조직에서는 하이퍼스케일 기능을 활용하기 위해 온-프레미스 HPC 워크로드를 Azure로 전환하려고 합니다. 또한 이러한 전환과 관련된 학습 곡선을 최소화하고자 하며 특정 HPC 스케줄러와 같은 기존 배포와 관련된 전문 지식을 사용하려고 합니다. 마지막으로, 온-프레미스 환경과 병렬로 처리되는 방식으로 클라우드 기반 클러스터 리소스의 성능 및 비용에 대한 인사이트를 모색합니다.
이러한 요구 사항을 해결하는 사용자 지정 솔루션을 구현하는 것은 어려운 일입니다. 클라우드 기반 HPC 클러스터의 구성 요소 역할을 하는 Azure 컴퓨팅, 네트워킹, 스토리지 리소스에 대한 심층적인 지식이 필요합니다. 또한 해당 관리 인터페이스 없이 표준 Azure 관리 도구를 사용하여 그러한 솔루션을 운영하면 상당한 관리 오버헤드가 발생합니다.
Azure CycleCloud는 이와 같은 문제를 해결하여 Azure에서 HPC 스케줄러를 구현하는 간단하고 안전하며 스케일링 가능한 방법을 제공합니다. 이 단원에서는 기본 기능에 대해 알아봅니다.
참고 항목
Azure CycleCloud는 특정 HPC 스케줄러를 사용해야 하는 배포 시나리오를 대상으로 합니다. 이는 Azure에서 Scheduler as a Service를 제공하는 Azure Batch를 보완합니다.
Azure CycleCloud란?
Azure CycleCloud는 Azure에서 HPC 클러스터를 배포하고 워크로드를 관리하기 위한 도구입니다. 다음을 포함하여 다양한 HPC 기능을 제공합니다.
HPC 클러스터의 템플릿 기반 배포. Azure CycleCloud는 Slurm, OpenPBS, LSF, Grid Engine, HTCondor 등 가장 일반적인 클러스터 스케줄러 배포를 위한 사용자 지정 가능한 기본 제공 템플릿을 제공합니다. Azure CycleCloud 인스턴스로 가져올 수 있는 미리 정의된 다른 많은 템플릿은 CycleCloud GitHub 리포지토리에서 사용할 수 있습니다.
참고
템플릿은 노드가 각각의 관계를 포함하여 CycleCloud 클러스터에서 구성되는 방식을 설명하기 위해 선언적 구문을 사용하는 INI 형식의 파일입니다. 템플릿에는 프로젝트에 대한 참조가 포함되어 있으며, 이는 노드 구성을 정의합니다.
클러스터 노드의 수동 및 자동 스케일링. Azure CycleCloud를 사용하면 작업 큐 및 거버넌스 정책의 길이에 따라 관리형 클러스터의 수동 및 자동 수평 스케일링이 가능합니다. Azure CycleCloud는 사용자 지정 스케줄러용 자동 스케일링 어댑터를 개발하기 위한 REST API도 제공합니다.
cloud-init 스크립트를 통한 노드 구성. Azure CycleCloud는 다른 CycleCloud 관련 구성 작업 전에 관리형 클러스터 노드 내에서 실행되는 사용자 지정 스크립트를 기반으로 구성 관리를 지원합니다.
내부 및 외부 클러스터 스토리지 관리. Azure CycleCloud에서는 Azure 관리 디스크 및 네트워크 연결 스토리지(예: NFS 서버 또는 BeeGFS 클러스터)를 프로비저닝, 탑재, 포맷하여 클러스터 스토리지를 구성할 수 있습니다.
모니터링, 로깅, 경고. Azure CycleCloud는 기본 제공 클러스터 모니터링을 제공하며 Azure Monitor와 통합됩니다. CycleCloud 클러스터의 로그 데이터를 Log Analytics에 저장하고 사용자 지정 메트릭 대시보드를 만들 수도 있습니다. 또한 원격 분석 데이터에 의해 트리거되는 사용자 지정 경고 및 이메일 알림을 만들 수 있습니다. 모든 Azure CycleCloud 활동이 기록됩니다.
인증 및 권한 부여. Azure CycleCloud는 기본 제공 로컬 인증을 지원합니다. 아니면 Active Directory Domain Services 또는 기타 LDAP(Lightweight Directory Access Protocol) 기반 ID 공급자와 통합할 수 있습니다. 기본적으로 로컬로 정의된 사용자는 관리형 클러스터 노드의 운영 체제에 액세스할 수 있지만, 클러스터 사용자를 별도로 관리할 수도 있습니다. Azure 구독의 리소스 관리를 위해 Microsoft Entra 서비스 주체 또는 관리 ID를 사용할 수 있습니다.
실시간에 가까운 비용 보고 및 제어. Azure CycleCloud는 클러스터 사용량을 추적하고 해당 비용을 예측합니다. 이 기능을 사용하면 클러스터 비용이 지정한 금액을 초과할 때 트리거되는 예산 경고를 설정할 수 있습니다. Azure CycleCloud는 Microsoft Cost Management와도 통합됩니다.
Azure CycleCloud를 구현하고 사용하려면 어떻게 해야 하나요?
CycleCloud는 Linux 기반 웹 애플리케이션으로 구현되며, Azure 환경에 액세스할 수 있는 모든 위치에 설치할 수 있습니다. 가장 간단한 설치 방법은 ARM(Azure Resource Manager) 템플릿을 사용하여 배포를 자동화하는 옵션과 함께 해당 Azure Marketplace 이미지를 사용하여 Azure VM을 배포하는 것입니다. 또는 yum 또는 apt 패키지를 사용하거나, Microsoft Container Registry에서 제공하는 컨테이너 이미지를 사용할 수 있습니다.
초기 구성 중에 SSH 키를 제공하여 CycleCloud 애플리케이션을 호스팅하는 운영 체제와 나중에 배포되는 클러스터 노드에 대한 액세스를 보호할 수 있습니다. CycleCloud 애플리케이션이 Azure Resource Manager와 상호 작용할 수 있도록 하려면 이 상호 작용에 대한 보안 컨텍스트를 제공하는 Microsoft Entra ID를 선택하고 Azure RBAC(역할 기반 액세스 제어)를 사용하여 대상 Azure 구독에서 충분한 권한을 할당해야 합니다. 이 ID는 서비스 주체 또는 Azure VM에서 Azure CycleCloud 애플리케이션을 호스팅하는 경우 관리 ID의 형식을 취할 수 있습니다.
또한 Azure CycleCloud 인스턴스에는 Azure 스토리지 계정 및 함께 제공되는 Blob 컨테이너가 필요합니다. locker라고 알려진 이 컨테이너는 클러스터 노드에 프로젝트를 배포하기 위한 준비 영역을 제공합니다.
설치되면 Azure CycleCloud 애플리케이션은 사용자가 HPC 시스템을 관리하고 모니터링할 수 있는 그래픽 사용자 인터페이스와 CycleCloud를 기존 워크플로에 쉽게 통합하고 자동화할 수 있는 CLI(명령줄 인터페이스)를 제공합니다. CLI를 사용하여 템플릿을 가져오고, 클러스터 프로비저닝을 자동화하고, 고급 관리 작업을 수행할 수도 있습니다.
Azure CycleCloud의 아키텍처는 무엇인가요?
Azure CycleCloud는 Azure Resource Manager에 비해 추가된 추상화 계층을 제공하여 사용자가 Azure 컴퓨팅 및 스토리지 리소스를 직접 처리할 필요성을 최소화합니다. 해당 역할은 그래픽 인터페이스 또는 CLI를 통해 액세스할 수 있는 스케줄러 수준 구성을 사용자 정의 가상 네트워크와 서브넷에서 Azure VM 및 Azure VM Scale Sets와 상호 작용하는 ARM(Azure Resource Manager) API 호출로 변환하는 것입니다. 이러한 호출은 InfiniBand 네트워크 토폴로지의 지역 vCPU 할당량, 클러스터 크기 제한, 제약 조건도 고려합니다. 또한 근접 배치 그룹과 같은 구문을 사용하거나 클러스터 노드를 동일한 InfiniBand 스위치에 연결하여 클러스터 성능을 쉽게 최적화합니다.
참고
근접 배치 그룹은 Azure VM을 서로 가깝게 배치하도록 지원하지만 InfiniBand 네트워킹을 고려하지는 않습니다. Azure CycleCloud에서는 PlacementGroupId라고 하는 고유한 특정 구문을 사용하여 클러스터 노드를 동일한 네트워킹 스위치에 연결된 단일 Azure VM Scale Set으로 그룹화할 수 있습니다. 이 두 기능을 결합할 수 있지만, 이렇게 하면 동일한 Azure VM Scale Set 내에서 프로비저닝할 수 있는 노드 수가 줄어들 수도 있습니다.
Azure CycleCloud는 일반적으로 하나 이상의 HPC 스케줄러 헤드 노드 및 컴퓨팅 노드로 구성되는 HPC 클러스터의 수명 주기를 오케스트레이션하지만, NFS 서버나 BeeGFS 클러스터, Azure NetApp Files, Azure HPC Cache, Microsoft Entra Domain Services 같은 네트워크 연결 스토리지를 포함할 수도 있습니다. Azure CycleCloud는 클러스터 및 노드 상태를 캐시하는 내부 NoSQL 데이터 저장소를 포함합니다. 노드 모니터링 시스템에서는 경고를 사용하도록 설정합니다. 해당 관리 기능은 REST API 통해 노출되며 웹 및 CLI를 통해 액세스할 수 있습니다.
관리형 클러스터의 자동 스케일링은 수요 계산기 및 자동 스케일링 라이브러리를 기반으로 합니다. 이 과정의 다음 단원에서는 해당 특성에 대해 알아봅니다.
Azure CycleCloud 클러스터 수명 주기란 무엇인가요?
클러스터의 수명 주기는 해당 정의를 포함하는 템플릿을 선택하는 것으로 시작합니다. 기본 제공 템플릿 중 하나를 사용할 수도 있고, 사용자 지정 템플릿을 만들어 CycleCloud 애플리케이션으로 가져올 수도 있습니다. 일반적으로 템플릿에는 만드는 동안 클러스터 구성을 사용자 지정할 수 있는 여러 매개 변수가 포함되어 있습니다. 클러스터 만들기 프로세스의 세부 사항은 웹을 사용하는지 CLI를 사용하는지에 따라 달라집니다.
클러스터를 만든 후 시작할 수 있습니다. 클러스터를 시작하면 클러스터 템플릿 기반 정의의 일부인 각 노드에 대한 일련의 작업이 트리거됩니다. 이 시퀀스는 가져오기 상태라고 하는, Azure VM의 프로비저닝을 요청하는 Azure Resource Manager 호출로 구성됩니다. 그다음에는 해당하는 프로젝트에 정의된 초기화 실행, 예약 소프트웨어를 설치 및 구성하는 스크립트 실행, 파일 시스템 볼륨의 프로비전과 탑재를 비롯하여 VM이 구성됩니다. 이 과정이 모두 완료되면 노드가 ‘시작됨’ 상태에 도달합니다. 처리되지 않은 오류나 알 수 없는 오류는 ‘오류’ 상태가 됩니다.
클러스터 노드가 실행되면 운영 체제에 따라 SSH 또는 RDP를 통해 원격으로 액세스할 수 있습니다. 이러한 연결을 사용하여 클러스터 작업을 제출할 수 있습니다. 클러스터 구성에 따라 클러스터의 스케일링이 트리거될 수도 있습니다.
제출된 모든 작업을 완료하면 클러스터를 종료할 수 있습니다. 클러스터를 종료하면 노드가 중지 및 제거되고 비영구 볼륨이 삭제되어 클러스터가 꺼짐 상태가 됩니다.