Descrever a integração e o dimensionamento automático do agendador do Azure CycleCloud

Concluído

O uso da agilidade na nuvem permite que as empresas se beneficiem totalmente dos recursos de hiperescala do Azure, minimizando o custo operacional associado ao uso de recursos de computação. A capacidade de dimensionar automaticamente a quantidade de recursos em resposta aos seus padrões de uso é um componente central dessa agilidade. No contexto do Azure CycleCloud e HPC, isso se traduz na implementação de uma correlação estreita entre as demandas de recursos de trabalhos de cluster e o número de nós de computação de cluster.

Em geral, a orquestração do dimensionamento do nó de cluster é de responsabilidade dos programadores. Os agendadores precisam ser capazes de comunicar suas demandas à plataforma que fornece recursos de computação. O Azure CycleCloud ajuda a implementar essa funcionalidade. Nesta unidade, você aprende sobre os princípios dessa implementação.

Qual é a função do Azure CycleCloud no dimensionamento automático de cluster?

O Azure CycleCloud facilita a implantação de agendadores no Azure, que, por sua vez, distribuem e gerenciam trabalhos em execução em clusters compostos por recursos do Azure. O Azure CycleCloud não funciona como um agendador. Em vez disso, ele funciona como um intermediário entre os agendadores e a plataforma subjacente. O Azure CycleCloud também simplifica o desenvolvimento da funcionalidade de dimensionamento automático para os agendadores correspondentes, fornecendo uma interface de programação baseada em API REST e uma biblioteca de cliente baseada em Python.

O Azure CycleCloud permite correlacionar o comportamento de dimensionamento automático de clusters gerenciados com o comprimento das filas de trabalho de cluster. Você pode personalizar ainda mais esse comportamento definindo parâmetros de modelo que controlam, por exemplo, a quantidade de tempo após o qual os nós ociosos são encerrados ou a frequência das verificações de parada automática.

Todos os modelos internos expõem as configurações de dimensionamento automático diretamente na interface gráfica do Azure CycleCloud. Em cada caso, as configurações incluem a opção de especificar os limites inferior e superior do intervalo de dimensionamento automático, expressos no número de núcleos da CPU. O limite superior ajuda-o a minimizar a possibilidade de cobranças imprevistas. Você pode reduzir ainda mais esse risco definindo alertas de orçamento.

Com o limite inferior definido como 0, a criação de um cluster resulta apenas no provisionamento do nó principal do agendador. No entanto, quando o agendador deteta trabalhos em fila, ele inicia o provisionamento dos nós de computação necessários para executar a carga de trabalho correspondente, até o limite definido. Para dar suporte a trabalhos acoplados de forma flexível ou paralelos, em que tarefas individuais são executadas independentemente umas das outras, as tarefas começam a ser executadas assim que o primeiro nó fica disponível. Para trabalhos fortemente acoplados, como aqueles que usam a funcionalidade MPI (Message Passing Interface), o tempo de espera é maior, dependendo da extensão das dependências internas. Depois que a fila de tarefas estiver vazia pela quantidade de tempo que excede o tempo ocioso permitido, os nós de computação começarão a parar automaticamente e seu cluster mais uma vez consistirá apenas no nó principal do agendador.

Nota

Os conceitos subjacentes descritos nesta unidade são comuns entre os programadores. No entanto, seus detalhes de implementação são específicos do agendador. Para obter informações detalhadas sobre cada implementação, consulte a documentação do agendador individual.

Como integrar agendadores com o dimensionamento automático do Azure CycleCloud

Os dois principais componentes que implementam a integração com o dimensionamento automático do Azure CycleCloud são a Biblioteca de Autodimensionamento do Azure CycleCloud e a Calculadora de Demanda.

Diagrama da arquitetura de alto nível do Azure CycleCloud.

A Biblioteca de Autoscale do Azure CycleCloud é um projeto de código aberto hospedado no GitHub que permite que os auxiliares do Python simplifiquem o desenvolvimento de dimensionamento automático para qualquer agendador implantado no Azure. Os auxiliares usam a API REST do Azure CycleCloud para orquestrar o provisionamento de recursos do Azure. O projeto usa Python 3 e tem muitas dependências Python. Mas sua funcionalidade principal depende da Biblioteca de Clientes Python do Azure CycleCloud. O dimensionamento automático integra-se com os nós principais do agendador que monitoram as filas de trabalho. O dimensionamento automático aumenta ou diminui o número de nós de computação interagindo com a API REST de dimensionamento automático em execução no servidor de aplicativos do Azure CycleCloud.

A Calculadora de Demanda é responsável por avaliar os requisitos de recursos com base no nó de computação e nos dados de trabalho coletados pelo agendador. Essa avaliação considera restrições de computação e rede, como o tamanho máximo do cluster ou limites relacionados ao InfiniBand. Os requisitos de recursos resultantes se traduzem em uma solicitação de provisionamento ou desprovisionamento de VMs do Azure de um tamanho e configuração específicos. A Biblioteca de Dimensionamento Automático retransmite essas solicitações para a API REST do Azure CycleCloud, que as entrega por meio de seu orquestrador ao Gerenciador de Recursos do Azure.

Nota

Enquanto a integração do agendador acomoda cargas de trabalho paralelas ou com acoplamento flexível em que o gerenciamento do tamanho do cluster é a principal consideração, o Azure CycleCloud também oferece suporte a cargas de trabalho fortemente acopladas, onde a proximidade do nó e a latência da rede são críticas.