Descrever os modelos de cluster do Azure CycleCloud
O Azure CycleCloud fornece implantação baseada em modelo de clusters HPC. Por padrão, o aplicativo Azure CycleCloud inclui vários modelos internos para implantar os agendadores de cluster mais comuns, incluindo Slurm, PBSPro, LSF, Grid Engine e HT-Condor. Os repositórios do Azure CycleCloud GitHub oferecem muitos projetos específicos do agendador, que você pode personalizar e importar para sua instância do Azure CycleCloud. Você também tem a opção de implementar o provisionamento baseado em modelos para seus próprios agendadores desenvolvidos internamente usando plug-ins de dimensionamento automático do CycleCloud.
Os modelos facilitam a implementação de uma ampla gama de recursos do Azure CycleCloud, incluindo suporte para imagens de máquina virtual (VM) 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 forma idêntica, comumente usados para isolar os ambientes de produção, desenvolvimento e teste.
Esses benefícios se alinham com seus objetivos de implementação do novo cluster residente do Azure para 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 formatados em 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 seus respetivos relacionamentos. Os modelos consistem em seções nomeadas, com cabeçalhos designados por um ou mais pares de colchetes. As seções formam uma hierarquia, correspondente à hierarquia de objetos de cluster e seus 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 [cluster]
seção pode conter uma ou mais [[node]]
seções, que podem conter várias [[[volume]]]
seções. Da mesma forma, dentro do mesmo modelo, dentro da [cluster]
seção, você pode definir uma ou mais [[nodearray]]
seções, cada uma com seu próprio [[[configuration]]]
.
Nota
A ordem das secções dentro do mesmo nível é arbitrária.
Quais são as seções principais de um modelo?
Um modelo consiste nas seguintes seções principais:
- Cluster: A
[cluster]
seção contém uma definição de um objeto de cluster do Azure CycleCloud. Um modelo deve incluir pelo menos uma seção, que contém uma[cluster]
ou mais[[nodearray]]
[[node]]
seções que descrevem objetos filho desse cluster. - Nó: representa uma única VM provisionada em plataforma.
- Nodearray: representa um ou mais conjuntos de escala de máquina virtual do Azure.
Nota
Os clusters compreendem nós que servem suas 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áquina virtual. Este último representa uma coleção de VMs configuradas de forma idêntica, que, ao contrário das VMs do Azure, oferecem suporte ao dimensionamento automático horizontal. O Azure CycleCloud usa conjuntos de dimensionamento de máquina virtual para implementar matrizes de nó. Efetivamente, a seção descreve as propriedades das VMs subjacentes provisionadas pela plataforma, que podem ser uma VM do Azure autônoma ou pertencer a [[node]]
um conjunto de escala de máquina virtual do Azure. A [[nodearray]]
seção descreve um conjunto de dimensionamento de máquina virtual do Azure.
Nota
Uma matriz de nó pode consistir em vários conjuntos de escala de máquina virtual do Azure, com cada um deles compreendendo VMs configuradas de forma diferente. No entanto, todos os nós em uma matriz de nós executam a mesma função no cluster, como fornecer recursos para uma única 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 uma matriz de nós. É um objeto filho de um nó ou um objeto nodearray.
- A interface de rede define uma interface de rede do Azure que deve ser anexada a nós de cluster individuais ou a nós que formam uma matriz de nós. É um objeto filho de um nó ou um objeto nodearray.
- A configuração define as propriedades configuráveis de um nó ou nodearray. É um objeto filho de um nó ou um objeto nodearray.
- Cluster-init define as especificações do projeto Azure CycleCloud a serem aplicadas a um nó de cluster. Um projeto é uma coleção de recursos que define configurações de nó na forma de especificações do projeto. Quando um nó é iniciado, ele é configurado automaticamente processando essas especificações. Cluster-init é um objeto filho de um nó ou um objeto nodearray.
- O ambiente define uma implantação do Azure Resource Manager, que provisiona ou modifica os recursos do Azure a serem usados pelo cluster. É um objeto de nível superior opcional.
- Noderef faz referência a um nó dentro do modelo para expressar dependências de recursos. É um objeto de nível superior opcional.
- Os parâmetros permitem que você torne um modelo portátil, permitindo que você o use para a implantação de vários clusters com hierarquia de objetos correspondente, mas definições de configuração diferentes. É um objeto de nível superior opcional, mas você tem a opção de criar uma hierarquia de parâmetros aninhada. Para cada parâmetro, você pode definir seu valor padrão. Os parâmetros também permitem que você exponha variáveis configuráveis em um cluster por meio da interface 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, esses detalhes para uma matriz de nó podem incluir a chave com o valor que designa a imagem da VM do Azure a ser usada para seus nós ou a ImageName
Azure.MaxScalesetSize
chave que especifica o tamanho máximo permitido do conjunto de escala da máquina virtual como seu valor. Da mesma forma, as seções de nó ou matriz de nós podem incluir uma ou mais [[[configuration]]]
seções.
Como provisionar um cluster com base em um modelo?
Depois de identificar o modelo que 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 seu aplicativo Azure CycleCloud e, em seguida, use a interface gráfica do aplicativo para provisionar o cluster. Para disparar a importação, execute o comando (onde o espaço reservado representa o nome do arquivo que contém o
cyclecloud import_template -f <template_file>
<template_file>
modelo). Se o modelo contiver várias definições de cluster, especifique o nome do cluster que você deseja importar fazendo referência a ele como o valor do-c
parâmetro. - Use a CLI do Azure CycleCloud para importar o modelo para seu aplicativo Azure CycleCloud e, em seguida, para provisionar o cluster. Para disparar a importação, execute o comando (onde o espaço reservado representa o nome do arquivo que contém o
cyclecloud import_template -t -f <template_file>
<template_file>
modelo). Após a conclusão da importação, execute ocyclecloud create_cluster
comando. Por exemplo, para criar um cluster nomeadolab-cluster
a partir de um modelo importado chamadolab-template
, você deve executarcyclecloud create_cluster lab-template lab-cluster
. - Use a CLI do Azure CycleCloud para provisionar o cluster sem importar explicitamente o modelo. Para acionar a importação, execute o
cyclecloud import_cluster
comando.
Independentemente do método escolhido, você precisará fornecer valores de quaisquer parâmetros necessários durante o provisionamento de cluster. Ao usar a CLI do Azure CycleCloud, você pode fornecê-los fazendo referência a um arquivo de parâmetros formatado em JSON.
Nota
O arquivo consiste em pares chave-valor, onde a chave representa o nome do parâmetro. Para revisar seu formato para um cluster existente, use o comando, onde o espaço reservado representa o cyclecloud export_parameters <cluster_name> > params.json
<cluster_name>
nome do cluster existente.
Nota
Antes de implantar um cluster com base em um modelo importado, você também precisa carregar o conteúdo do projeto correspondente em um armário do Azure CycleCloud. Para executar um carregamento, use o comando Azure CycleCloud CLI (onde o espaço reservado representa o cyclecloud project upload <locker_name>
<locker_name>
nome do armário). Para listar os armários disponíveis, execute o cyclecloud locker list
comando Azure CycleCloud CLI. O nome do armário é referenciado [[[cluster-init]]]
na seção.
Nota
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 locker que o servidor CycleCloud usa para preparar projetos 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 armário como parte de seu processo de inicialização.