CycleCloud Clusters

No CycleCloud, o termo cluster é usado para descrever um grupo de computadores conectados (nós) trabalhando juntos como um único sistema. Os clusters podem ser aninhados; por exemplo, um cluster de computação que consiste em um nó de cabeçalho e nós de computação do agendador do Mecanismo de Grade pode montar um cluster BeeGFS que consiste em vários servidores de armazenamento e metadados, com clusters de computação e armazenamento se unindo em um único cluster ou sistema de HPC pai.

Diagrama de visão geral

Nós e matrizes de nós

Os clusters são compostos fundamentalmente por nós, cada um deles executando uma função específica no sistema HPC. Os termos e VM são usados de forma intercambiável ocasionalmente, mas são separados semanticamente no CycleCloud. Nós que compõem um cluster são, em essência, máquinas virtuais no Azure que concluíram o processo de preparação e configuração. Em outras palavras, as VMs são provisionadas das camadas de serviço de infraestrutura do Azure e seus estados finais são nós de um cluster HPC depois de passar pelas etapas de instalação e configuração de software.

Diagrama de arquitetura

Há duas encarnações separadas de nós no CycleCloud. O primeiro como um nó autônomo e o segundo como uma nodearray, que é uma coleção de nós configurados de forma idêntica (a distinção nó vs nodearray segue a analogia DevOps Pets vs Cattle em espírito). Em termos gerais, mas não estritamente falando, os nós autônomos são construídos a partir de VMs individuais no Azure enquanto as nodearrays são mapeadas para VMSS (conjuntos de dimensionamento de máquinas virtuais).

No entanto, há diferenças cruciais entre as nodearrays e os conjuntos de dimensionamento de VM, sendo que uma única nodearray pode ser composta por vários conjuntos de dimensionamento de VM. Isso permite que uma única nodearray seja criada a partir de VMs de tamanhos de diferença ou até mesmo famílias de VM diferentes, com a única restrição sendo que todos os nós em uma nodearray executem a mesma função no cluster, por exemplo, fornecendo recursos para uma única fila de um agendador.

Modelos de cluster

A topologia, ou como os nós são organizados em um cluster CycleCloud, são definidos em modelos de texto que dispõem as relações entre nós de um cluster e, no caso de clusters aninhados, a relação pai-filho de clusters. Os modelos também fornecem os meios de definir a função que cada nó desempenha.

Os modelos de cluster são definidos em um formato INI. As seções, delineadas usando colchetes [,] são usadas para definir clusters, nós e nodearrays. O elemento básico dos arquivos INI são asserções de par chave-valor que fornecem os detalhes de configuração de cada seção. Esses detalhes de configuração fornecem informações contextuais usadas para criar cada nó de um cluster, desde a imagem da máquina virtual usada para inicializar a VM até a sub-rede na qual a VM deve ser provisionada. Leia mais sobre os modelos de cluster do CycleCloud

Preparação e configuração de nó

O CycleCloud provisiona VMs de imagens de VM base definidas no modelo de cluster e por meio de uma série de etapas gerenciadas pelo agente do CycleCloud (Jetpack) durante o processo de inicialização, inicializa e configura o sistema operacional na VM para convertê-lo em um nó HPC funcional. Essas etapas vão desde scripts até instalar e configurar o software de agendamento até a configuração de última milha para montar um sistema de arquivos.

Diagrama de preparação de nó

Definidas na seção de configuração de cada nó estão especificações de cluster-init – especificações fornecidas para cada VM de inicialização que são usadas para prepará-la para uma função específica no cluster. O CycleCloud utiliza o Chef como a plataforma de automação de infraestrutura para preparar e configurar cada nó. Em essência, cada especificação cluster-init é mapeada para uma das mais Funções do Chef e/ou Receitas de Guia que precisam ser executadas na VM de inicialização.

O CycleCloud utiliza o Chef em um modo autônomo que não depende de um servidor Chef centralizado. Em vez disso, todo o conjunto de Guias do Chef necessário para preparar cada VM é baixado de uma Conta de Armazenamento do Azure pertencente ao usuário durante a fase de inicialização da VM. Esse conjunto de Guias é armazenado em cache do servidor de aplicativos CycleCloud na Conta de Armazenamento durante a fase de criação do cluster.

Depois que esses Guias de Receitas são baixados, o Chef processa a lista de Receitas definidas nas especificações de cluster-init do nó, disparando uma fase de preparação e configuração que converte a VM em um nó HPC funcional.

As especificações são criadas como coleções lógicas chamadas Projects. Por exemplo, um projeto para um agendador de lote, como Slurm, é composto por um mínimo de duas especificações: uma para os nós principais do agendador e outra para os nós de computação. Leia mais sobre os Projetos do CycleCloud

Orquestração de nós

Dependendo do agendador e dos serviços usados em um cluster, o CycleCloud às vezes precisa orquestrar a fase de preparação de nós em um cluster por meio da coordenação de diferentes nós. Por exemplo, alguns agendadores exigem que cada nó de computação se registre no daemon do agendador, que não só exige que os nós de computação estejam cientes do endereço do nó de cabeçalho, mas também sejam capazes de reconhecer que o nó de cabeçalho está totalmente preparado e aguardar se não estiver.

Esse elemento de Descoberta de Serviço também é usado para relações servidor-cliente do Sistema de Arquivos e é um recurso no CycleCloud.

Leitura Adicional