Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O CycleCloud fornece uma API REST para adicionar gerenciamento de cluster automatizado e programático. O dimensionamento automático personalizado e a integração personalizada do agendador exigem uma ferramenta que avalia uma fila de carga de trabalho e inicia VMs (máquinas virtuais) para corresponder à demanda de carga de trabalho. A API REST do CycleCloud é o ponto de extremidade apropriado para essa ferramenta e dá suporte a requisitos de carga de trabalho que podem incluir alta taxa de transferência ou disposições de VM fortemente acopladas.
Determinar o status do cluster
Você pode consultar o CycleCloud para determinar o status do cluster. O status mostra a disponibilidade da VM em cada uma das configurações do cluster.
curl --location --request GET '${CC-URL}/clusters/${CLUSTER}/status' \
--header 'Authorization: Basic ****************************'
Observação
A API do CycleCloud aceita autenticação básica com um nome de usuário e senha. Esses exemplos de API curl usam uma cadeia de caracteres codificada em base64 para 'user:password'.
A resposta se parece com o exemplo a seguir. A resposta contém um conjunto completo de atributos de nó, mas muitos são omitidos aqui para simplificar.
{
"state": "Started",
"targetState": "Started",
"maxCount": 100,
"maxCoreCount": 10000,
"nodearrays": [
{
"name": "ondemand",
"maxCount": 100,
"maxCoreCount": 500,
"buckets": [
{
"bucketId": "cd56af52-abcd-1234-a4e7-e6a91ca519a2",
"definition": {
"machineType": "Standard_Fs32_v2"
},
"maxCount": 3,
"maxCoreCount": 96,
"activeCount": 0,
"activeCoreCount": 0,
"availableCount": 3,
"availableCoreCount": 96,
"quotaCount": 3,
"quotaCoreCount": 100,
"consumedCoreCount": 0,
"maxPlacementGroupSize": 40,
"maxPlacementGroupCoreSize": 1280,
"valid": true,
"placementGroups": [],
"virtualMachine": {
"vcpuCount": 32,
"memory": 64.0,
"infiniband": false
}
},
{
"bucketId": "d81e001a-abcd-1234-9754-79815cb7b225",
"definition": {
"machineType": "Standard_Hc44rs"
},
"maxCount": 11,
"maxCoreCount": 484,
"activeCount": 0,
"activeCoreCount": 0,
"availableCount": 11,
"availableCoreCount": 484,
"quotaCount": 200,
"quotaCoreCount": 8800,
"consumedCoreCount": 44,
"maxPlacementGroupSize": 40,
"maxPlacementGroupCoreSize": 1760,
"valid": true,
"placementGroups": [],
"virtualMachine": {
"vcpuCount": 44,
"memory": 327.83,
"infiniband": true
}
}
]
}
Criar nós
A API oferece grande flexibilidade ao iniciar os nós. Os únicos atributos necessários para criar nós são nodearray e count. Uma chamada que usa esses atributos mínimos necessários herda todas as configurações do nó existente. Os nós vão no primeiro bucket que pode atender à solicitação.
curl --location --request POST '${CC-URL}/clusters/${CLUSTER}/nodes/create' \
--header 'Authorization: Basic ****************************' \
--header 'Content-Type: text/plain' \
--data-raw '{ "requestId" : "463270ca-abcd-1234-98d6-431ee3ef8ed5",
"sets" : [
{
"count" : 1,
"nodearray" : "ondemand"
}
]
}'
A resposta a essa chamada fornece uma ID de operação.
{
"operationId": "3b53d621-abcd-1234-8876-6ec1158897ac",
"sets": [
{
"added": 1
}
]
}
Você pode acompanhar o status da operação com a API de operações. Defina o parâmetro request_id para filtrar a resposta dos nós GET. Esse filtro fornece detalhes para todos os nós criados com a solicitação de criação.
curl --location --request GET '${CC-URL}/clusters/${CLUSTER}/nodes?request_id=463270ca-abcd-1234-98d6-431ee3ef8ed5' \
Adicionar nós acoplados firmemente
Você pode definir matrizes de nós do CycleCloud com vários tipos de computador válidos em uma lista. Suponha que a matriz de ondemand nós possua ambos Standard_F32s_v2_ e Standard_Hc44rs definidos. A API de status do cluster mostra pelo menos dois buckets para essa matriz de nós, um para cada tamanho de VM. O Standard_Hc44rs bucket indica que o serviço infiniband está disponível. Certos softwares quantitativos escalam entre os nós e aproveitam as conexões de baixa latência entre eles.
Suponha que você esteja executando essa carga de trabalho e que um trabalho exija quatro nós conectados pela rede Infiniband do Azure. Para garantir que os quatro nós acabem no mesmo grupo de posicionamento e, portanto, na mesma rede Infiniband, use a chamada à API criar nós com um placementGroupId.
curl --location --request POST '${CC-URL}/clusters/${CLUSTER}/nodes/create' \
--header 'Authorization: Basic ****************************' \
--header 'Content-Type: text/plain' \
--data-raw '{ "requestId" : "463270ca-abcd-1234-98d6-431ee3ef8ed5",
"sets" : [
{
"count" : 4,
"nodearray" : "ondemand",
"placementGroupId" : "pg0",
"definition" : { "machineType" : "Standard_Hc44rs" }
}
]
}'
Pode placementGroupId fazer referência a um grupo de posicionamento pré-existente ou talvez não. O CycleCloud usa esta identificação para um grupo lógico. Se a solicitação especificar um grupo de posicionamento que não existe, o CycleCloud criará um novo grupo de posicionamento. Você pode adicionar mais VMs ao mesmo grupo de posicionamento nas solicitações de nós de criação extra.
Excluir nós
Em algum momento, o serviço de gerente precisa encerrar os nós que ele criou.
curl --location --request POST '${CC-URL}/clusters/${CLUSTER}/nodes/terminate' \
--header 'Authorization: Basic ****************************' \
--header 'Content-Type: text/plain' \
--data-raw '{
"ids" : ["62a1b116-abcd-1234-b290-b54ea23f1b68"]
}'
{
"operationId": "15aaa844-abcd-1234-9591-8904c546028d",
"nodes": [
{
"name": "ondemand-3",
"id": "62a1b116-abcd-1234-b290-b54ea23f1b68",
"status": "OK"
}
]
}