Descrever os modelos de cluster do Azure CycleCloud
O Azure CycleCloud fornece a implantação baseada em modelo de clusters de HPC. Por padrão, o aplicativo Azure CycleCloud inclui vários modelos internos para implantação dos agendadores de cluster mais comuns, incluindo o Slurm, o PBSPro, o LSF, o Grid Engine e o HT-Condor. Os repositórios GitHub do Azure CycleCloud oferecem muitos projetos específicos a um agendador, que você pode personalizar e importar para a sua instância do Azure CycleCloud. Você também tem a opção de implementar o provisionamento baseado em modelo para seus agendadores desenvolvidos internamente usando os plug-ins de dimensionamento automático do CycleCloud.
Os modelos facilitam a implementação de uma ampla variedade de recursos do Azure CycleCloud, incluindo suporte para imagens de VM (máquina virtual) personalizadas, dimensionamento automático e VMs spot. Eles também minimizam a sobrecarga associada ao provisionamento e à manutenção de várias implantações de clusters configurados de maneira idêntica, normalmente usadas para isolar os ambientes de produção, desenvolvimento e teste.
Esses benefícios se alinham aos seus objetivos para implementar o novo cluster residente no Azure para a Contoso. Para otimizar a extensão desses benefícios, você decide saber mais sobre o formato e o processo de implementação de modelos do Azure CycleCloud.
Qual é o formato dos modelos do Azure CycleCloud?
Os modelos são arquivos em formato INI que usam a sintaxe declarativa para descrever a estrutura e a configuração de um cluster do CycleCloud, incluindo funções de nó de cluster e as respectivas relações. Os modelos consistem em seções nomeadas, com cabeçalhos designados por um ou mais pares de colchetes. As seções formam uma hierarquia, correspondendo à hierarquia de objetos de cluster e os parâmetros correspondentes. O número de colchetes representa uma camada dentro dessa hierarquia, aumentando sequencialmente com cada camada.
[cluster]
[[node, nodearray]]
[[[volume]]]
[[[network-interface]]]
[[[cluster-init]]]
[[[input-endpoint]]]
[[[configuration]]]
[environment]
[noderef]
[parameters]
[[parameters]]
[[[parameter]]]
Efetivamente, a seção [cluster]
pode conter uma ou mais seções [[node]]
, que podem conter várias seções [[[volume]]]
. Da mesma forma, dentro do mesmo modelo, dentro da seção [cluster]
, você pode definir uma ou mais seções [[nodearray]]
, cada uma com a própria [[[configuration]]]
.
Observação
A ordem das seções dentro da mesma camada é arbitrária.
Quais são as principais seções de um modelo?
Um modelo consiste nas seguintes seções principais:
- Cluster: A seção
[cluster]
contém uma definição de um objeto de cluster do Azure CycleCloud. Um modelo precisa incluir pelo menos uma seção[cluster]
, que contém uma ou mais seções[[node]]
e[[nodearray]]
, descrevendo objetos filho desse cluster. - Nó: Isso representa apenas uma VM, provisionada por plataforma.
- Nodearray: Isso representa um ou mais conjuntos de dimensionamento de máquinas virtuais do Azure.
Observação
Os clusters incluem nós que atendem as respectivas funções designadas no processamento de cargas de trabalho clusterizadas. Do ponto de vista da implementação, o Azure CycleCloud depende do Azure Resource Manager para provisioná-las como VMs individuais do Azure ou como membros de um conjunto de dimensionamento de máquinas virtuais. Essa última opção representa uma coleção de VMs configuradas de maneira idêntica e que, ao contrário das VMs do Azure, dão suporte ao dimensionamento automático horizontal. O Azure CycleCloud usa conjuntos de dimensionamento de máquinas virtuais para implementar nodearrays. Efetivamente, a seção [[node]]
descreve as propriedades das VMs subjacentes, provisionadas pela plataforma, que podem ser uma VM do Azure autônoma ou pertencer a um conjunto de dimensionamento de máquinas virtuais do Azure. A seção [[nodearray]]
descreve um conjunto de dimensionamento de máquinas virtuais do Azure.
Observação
Um nodearray pode consistir em vários conjuntos de dimensionamento de máquinas virtuais do Azure, sendo que cada um deles inclui VMs configuradas de maneira diferente. No entanto, todos os nós em um nodearray executam a mesma função no cluster, como fornecer recursos para apenas uma fila do agendador de cluster.
- Volume define um disco gerenciado do Azure que deve ser anexado a nós de cluster individuais ou nós que formam um nodearray. Ele é um objeto filho de um nó ou de um objeto nodearray.
- Network-interface define um adaptador de rede do Azure que deve ser anexado a nós de cluster individuais ou nós que formam um nodearray. Ele é um objeto filho de um nó ou de um objeto nodearray.
- Configuration define as propriedades configuráveis de um nó ou nodearray. Ele é um objeto filho de um nó ou de um objeto nodearray.
- Cluster-init define as especificações do projeto do Azure CycleCloud a serem aplicadas a um nó de cluster. Um projeto é uma coleção de recursos que define as configurações de nó na forma de especificações do projeto. Quando um nó é iniciado, ele é configurado automaticamente pelo processamento dessas especificações. O cluster-init é um objeto filho de um nó ou de um objeto nodearray.
- Environment define uma implantação do Azure Resource Manager, que provisiona ou modifica os recursos do Azure a serem usados pelo cluster. Trata-se de um objeto de nível superior opcional.
- Noderef faz referência a um nó dentro do modelo para expressar dependências de recursos. Trata-se de um objeto de nível superior opcional.
- Com Parameters, é possível tornar um modelo portátil, permitindo que você o use para a implantação de vários clusters com uma hierarquia de objetos correspondentes, mas definições de configuração distintas. Trata-se de um objeto de nível superior opcional, mas você tem a opção de criar uma hierarquia de parâmetros aninhados. Você pode definir um valor padrão para cada parâmetro. Os parâmetros também permitem que você exponha variáveis configuráveis em um cluster por meio da interface da Web do CycleCloud.
Cada seção contém vários pares chave-valor que fornecem detalhes de configuração sobre o objeto correspondente, representado pelo cabeçalho da seção. Por exemplo, para um nodearray, esses detalhes podem incluir a chave ImageName
, cujo valor designa a imagem de VM do Azure a ser usada para os respectivos nós, ou a chave Azure.MaxScalesetSize
, cujo valor especifica o tamanho máximo permitido do conjunto de dimensionamento de máquinas virtuais. Da mesma forma, as seções node ou nodearray podem incluir uma ou mais seções [[[configuration]]]
.
Como provisionar um cluster com base em um modelo?
Depois de identificar o modelo que você pretende usar para provisionar um cluster do Azure CycleCloud, você pode aplicar qualquer um dos seguintes métodos de implementação:
- Use a CLI do Azure CycleCloud para importar o modelo para o aplicativo do Azure CycleCloud e use a interface gráfica do aplicativo para provisionar o cluster. Para disparar a importação, execute o comando
cyclecloud import_template -f <template_file>
(em que o espaço reservado<template_file>
representa o nome do arquivo que contém o modelo). Se o modelo contiver várias definições de cluster, especifique o nome do cluster que você deseja importar referenciando-o como o valor do parâmetro-c
. - Use a CLI do Azure CycleCloud para importar o modelo para o aplicativo Azure CycleCloud e depois provisionar o cluster. Para disparar a importação, execute o comando
cyclecloud import_template -t -f <template_file>
(em que o espaço reservado<template_file>
representa o nome do arquivo que contém o modelo). Após a conclusão da importação, execute o comandocyclecloud create_cluster
. Por exemplo, para criar um cluster chamadolab-cluster
com base em um modelo importado chamadolab-template
, executecyclecloud create_cluster lab-template lab-cluster
. - Use a CLI do Azure CycleCloud para provisionar o cluster sem importar explicitamente o modelo. Para disparar a importação, execute o comando
cyclecloud import_cluster
.
Independentemente do método escolhido, você precisará fornecer valores de todos os parâmetros necessários durante o provisionamento do cluster. Ao usar a CLI do Azure CycleCloud, você pode fornecê-los referenciando um arquivo de parâmetros formatados em JSON.
Observação
O arquivo consiste em pares chave-valor, em que a chave representa o nome do parâmetro. Para examinar o formato dele para um cluster existente, use o comando cyclecloud export_parameters <cluster_name> > params.json
, em que o espaço reservado <cluster_name>
representa o nome do cluster existente.
Observação
Antes de implantar um cluster com base em um modelo importado, você também precisa carregar o conteúdo do projeto correspondente em um cofre do Azure CycleCloud. Para executar um upload, use o comando cyclecloud project upload <locker_name>
da CLI do Azure CycleCloud (em que o espaço reservado <locker_name>
representa o nome do cofre). Para listar os cofres disponíveis, execute o comando cyclecloud locker list
da CLI do Azure CycleCloud. O nome do cofre é referenciado na seção [[[cluster-init]]]
.
Observação
Uma das etapas ao configurar uma instalação do Azure CycleCloud é a criação de um contêiner de blob em uma conta de Armazenamento do Azure. Esse contêiner serve como o cofre que o servidor do CycleCloud usa para o preparar projetos do CycleCloud para nós de cluster. Posteriormente, os nós dos clusters gerenciados pelo Azure CycleCloud são configurados para baixar projetos do CycleCloud desse cofre como parte do processo de inicialização.