Descrever a integração do agendador e o dimensionamento automático do Azure CycleCloud
O uso da agilidade de nuvem permite às empresas aproveitar todos os 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 a padrões de uso é um componente fundamental dessa agilidade. No contexto do Azure CycleCloud e do HPC, isso se traduz em implementar uma forte correlação entre as demandas de recursos de trabalhos de cluster e o número de nós de computação do cluster.
Em geral, a orquestração do dimensionamento de nós de cluster é responsabilidade dos agendadores. Os agendadores precisam conseguir comunicar suas demandas à plataforma que fornece recursos de computação. O Azure CycleCloud ajuda a implementar essa funcionalidade. Nesta unidade, você aprenderá sobre os princípios dessa implementação.
Qual é a função do Azure CycleCloud no dimensionamento automático do 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 de recursos do Azure. O Azure CycleCloud não funciona como um agendador. Em vez disso, ele funciona como um intermediário entre 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 REST de programação baseada em API e uma biblioteca de cliente baseada em Python.
O Azure CycleCloud permite que você correlacione o comportamento de dimensionamento automático de clusters gerenciados com o comprimento das filas de trabalho do cluster. Você pode personalizar ainda mais esse comportamento definindo parâmetros de modelo que controlam, por exemplo, o tempo após o qual os nós ociosos são encerrados ou a frequência de 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 para especificar os limites inferior e superior do intervalo de dimensionamento automático, expresso no número de núcleos de CPU. O limite superior ajuda a minimizar a possibilidade de encargos inesperados. Você pode reduzir ainda mais esse risco configurando alertas de orçamento.
Com o limite inferior definido como 0, a criação de um cluster resulta no provisionamento somente do nó de cabeçalho do agendador. No entanto, quando o agendador detecta 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 livremente acoplados ou paralelos, em que as tarefas individuais são executadas de modo independente umas das outras, os trabalhos começam a ser executados assim que o primeiro nó fica disponível. Para trabalhos rigidamente acoplados, como aqueles que usam a funcionalidade MPI (Interface de Passagem de Mensagem), o tempo de espera é maior, dependendo da extensão das dependências entre os nós. Após a fila de trabalhos ficar vazia por um período que excede o tempo ocioso permitido, os nós de computação começam a parar automaticamente e seu cluster volta a consistir apenas no nó principal do agendador.
Observação
Os conceitos subjacentes descritos nessa unidade são comuns entre os agendadores. No entanto, seus detalhes de implementação são específicos do agendador. Para obter informações detalhadas sobre cada implementação, veja a documentação individual do Agendador.
Como integrar os agendadores ao dimensionamento automático do Azure CycleCloud
Os dois componentes principais que implementam a integração com o dimensionamento automático do Azure CycleCloud são a biblioteca de dimensionamento automático do Azure CycleCloud e a calculadora de demanda.
A Biblioteca de Dimensionamento Automático do Azure CycleCloud é um projeto de código aberto hospedado no GitHub que permite aos auxiliares do Python simplificar o desenvolvimento do dimensionamento automático de 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 o Python 3 e tem muitas dependências do Python. Porém, sua funcionalidade principal depende da biblioteca de clientes Python do Azure CycleCloud. O dimensionamento automático se integra aos nós de cabeçalho do agendador que monitoram 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 as restrições de computação e de rede, como o tamanho máximo do cluster ou limites relacionados a InfiniBand. Os requisitos de recursos resultantes são convertidos 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 transmite essas solicitações para a API REST do Azure CycleCloud, que, depois, as entrega por meio do orquestrador para o Azure Resource Manager.
Observação
Embora a integração do Agendador acomode cargas de trabalho fracamente acopladas ou paralelas em que o gerenciamento do tamanho do cluster é a principal consideração, o Azure CycleCloud também dá suporte a cargas de trabalho fortemente acopladas, em que a proximidade de nó e a latência de rede são críticas.