Azure CycleCloud 스케줄러 통합 및 자동 스케일링 설명

완료됨

클라우드 민첩성을 사용하면 회사는 컴퓨팅 리소스 사용과 관련된 운영 비용을 최소화하면서 Azure의 하이퍼스케일 기능을 완벽하게 활용할 수 있습니다. 사용 패턴에 따라 리소스의 양을 자동으로 스케일링하는 기능이 이 민첩성의 핵심 구성 요소입니다. Azure CycleCloud 및 HPC의 컨텍스트에서 이는 클러스터 작업의 리소스 요구와 클러스터 컴퓨팅 노드 수 간에 긴밀한 상관 관계를 구현하는 것입니다.

일반적으로 클러스터 노드 크기 조정의 오케스트레이션은 스케줄러의 책임입니다. 스케줄러는 컴퓨팅 리소스를 제공하는 플랫폼에 자신의 요구를 전달할 수 있어야 합니다. Azure CycleCloud는 이 기능을 구현하는 데 도움이 됩니다. 이 단원에서는 이 구현의 원칙에 대해 알아봅니다.

클러스터 자동 스케일링에서 Azure CycleCloud의 역할은 무엇인가요?

Azure CycleCloud는 Azure에서 스케줄러를 쉽게 배포하도록 지원합니다. 그러면 스케줄러는 Azure 리소스로 구성된 클러스터에서 실행되는 작업을 배포하고 관리합니다. Azure CycleCloud는 스케줄러로 작동하지 않습니다. 대신 스케줄러와 기본 플랫폼 간의 중개자로 작동합니다. 또한 Azure CycleCloud는 REST API 기반 프로그래밍 인터페이스 및 Python 기반 클라이언트 라이브러리를 제공하여 해당 스케줄러에 대한 자동 스케일링 기능의 개발을 간소화합니다.

Azure CycleCloud를 사용하면 관리형 클러스터의 자동 스케일링 동작과 클러스터 작업 큐의 길이를 상호 연결할 수 있습니다. 예를 들어 유휴 노드가 종료된 후의 시간 또는 자동 중지 검사 빈도를 제어하는 템플릿 매개 변수를 정의하여 이 동작을 추가로 사용자 지정할 수 있습니다.

모든 기본 제공 템플릿은 Azure CycleCloud 그래픽 인터페이스에서 직접 자동 스케일링 설정을 노출합니다. 각 경우에 설정에는 CPU 코어 수로 표현되는 자동 스케일링 범위의 하한 및 상한을 지정하는 옵션이 포함됩니다. 상한을 사용하면 예기치 않은 요금 발생의 가능성을 최소화할 수 있습니다. 예산 경고를 설정하여 이 위험을 추가로 완화할 수 있습니다.

하한 임계값을 0으로 설정하면 클러스터를 만들면 스케줄러 헤드 노드만 프로비전됩니다. 그러나 스케줄러는 큐에 있는 작업을 감지하면 정의된 한도까지 해당 워크로드를 실행하는 데 필요한 컴퓨팅 노드의 프로비전을 시작합니다. 개별 작업이 서로 독립적으로 실행되는 느슨하게 결합된 작업 또는 병렬 작업을 지원하기 위해, 첫 번째 노드를 사용할 수 있게 되는 즉시 작업이 실행되기 시작합니다. MPI(메시지 전달 인터페이스) 기능을 사용하는 작업과 같이 긴밀하게 결합된 작업의 경우 노드 간 종속성의 범위에 따라 대기 시간이 더 길어질 수 있습니다. 허용된 유휴 시간을 초과하는 시간 동안 작업 큐가 비어 있으면 컴퓨팅 노드가 자동 중지되기 시작하고 클러스터는 다시 스케줄러 헤드 노드로만 구성됩니다.

참고 항목

이 단원에서 설명하는 기본 개념은 스케줄러에 공통된 사항입니다. 그러나 구현 세부 정보는 스케줄러에 따라 다릅니다. 각 구현에 대한 자세한 내용은 개별 스케줄러 설명서를 참조하세요.

스케줄러를 Azure CycleCloud 자동 스케일링과 통합하는 방법

Azure CycleCloud 자동 스케일링과의 통합을 구현하는 두 가지 주요 구성 요소는 Azure CycleCloud 자동 스케일링 라이브러리 및 수요 계산기입니다.

Azure CycleCloud의 개략적인 아키텍처 다이어그램.

Azure CycleCloud 자동 스케일링 라이브러리는 GitHub에 호스트된 오픈 소스 프로젝트로, Python 도우미가 Azure에 배포된 스케줄러에 대한 자동 스케일링 개발을 간소화하도록 허용합니다. 도우미는 Azure CycleCloud REST API를 사용하여 Azure 리소스의 프로비저닝을 오케스트레이션합니다. 이 프로젝트는 Python 3을 사용하며 많은 Python 종속성이 있습니다. 그러나 핵심 기능은 Azure CycleCloud Python 클라이언트 라이브러리에 의존합니다. 자동 스케일링은 작업 큐를 모니터링하는 스케줄러 헤드 노드와 통합됩니다. 자동 스케일링은 Azure CycleCloud 애플리케이션 서버에서 실행되는 자동 스케일링 REST API와 상호 작용하여 컴퓨팅 노드의 수를 늘리거나 줄입니다.

수요 계산기는 스케줄러에서 수집한 컴퓨팅 노드 및 작업 데이터를 기반으로 리소스 요구 사항을 평가하는 작업을 수행합니다. 이 평가에서는 최대 클러스터 크기 또는 InfiniBand 관련 한도와 같은 컴퓨팅 및 네트워크 제약 조건을 고려합니다. 결과 리소스 요구 사항은 특정 크기 및 구성을 가진 Azure VM의 프로비저닝 또는 프로비저닝 해제 요청으로 전환됩니다. 자동 크기 오케스트레이션 라이브러리는 이러한 요청을 Azure CycleCloud REST API로 릴레이한 다음 해당 오케스트레이터를 통해 Azure Resource Manager로 배달합니다.

참고 항목

스케줄러 통합은 클러스터 크기를 관리하는 것이 주요 고려 사항인 느슨하게 결합된 워크로드 또는 병렬 워크로드를 수용하는 반면, Azure CycleCloud는 노드 근접 및 네트워크 대기 시간이 중요한 긴밀하게 결합된 워크로드도 지원합니다.