Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
CycleCloud bietet eine REST-API zum Hinzufügen automatisierter und programmgesteuerter Clusterverwaltung. Für die Integration von benutzerdefiniertem Autoscaling und Scheduler ist ein Tool erforderlich, das eine Arbeitslastwarteschlange auswertet und virtuelle Maschinen (VMs) startet, um die Arbeitslastanforderungen zu erfüllen. Die CycleCloud-REST-API ist der geeignete Endpunkt für ein solches Tool und unterstützt Workloadanforderungen, die hohe Durchsatz- oder eng gekoppelte VM-Anordnungen umfassen können.
Ermitteln des Clusterstatus
Sie können CycleCloud abfragen, um den Clusterstatus zu ermitteln. Der Status zeigt die VM-Verfügbarkeit in den einzelnen Clusterkonfigurationen an.
curl --location --request GET '${CC-URL}/clusters/${CLUSTER}/status' \
--header 'Authorization: Basic ****************************'
Hinweis
Die CycleCloud-API akzeptiert die Standardauthentifizierung mit einem Benutzernamen und Kennwort. In diesen curl-API-Beispielen wird eine base64-codierte Zeichenfolge für "user:password" verwendet.
Die Antwort sieht wie im folgenden Beispiel aus. Die Antwort enthält einen vollständigen Satz von Knotenattributen, aber viele werden hier aus Gründen der Einfachheit weggelassen.
{
"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
}
}
]
}
Erstellen von Knoten
Die API bietet Ihnen beim Starten von Knoten große Flexibilität. Die einzigen erforderlichen Attribute zum Erstellen von Knoten sind nodearray und count. Ein Aufruf, der diese mindestens erforderlichen Attribute verwendet, erbt alle vorhandenen Knotenkonfigurationen. Die Knoten befinden sich im ersten Bucket, der die Anforderung erfüllen kann.
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"
}
]
}'
Die Antwort auf diesen Aufruf stellt eine Vorgangs-ID bereit.
{
"operationId": "3b53d621-abcd-1234-8876-6ec1158897ac",
"sets": [
{
"added": 1
}
]
}
Sie können den Vorgangsstatus mit der Operations-API nachverfolgen. Legen Sie den request_id Parameter fest, um die GET-Knotenantwort zu filtern. Dieser Filter enthält Details zu allen Knoten, die mit der Erstellungsanforderung erstellt wurden.
curl --location --request GET '${CC-URL}/clusters/${CLUSTER}/nodes?request_id=463270ca-abcd-1234-98d6-431ee3ef8ed5' \
Hinzufügen eng gekoppelter Knoten
Sie können CycleCloud-Knotenarrays mit mehreren gültigen Computertypen in einer Liste definieren. Angenommen, das ondemand Knotenarray hat beide Standard_F32s_v2_und Standard_Hc44rs definiert. Die Clusterstatus-API zeigt mindestens zwei buckets für dieses Knotenarray an, eines für jede VM-Größe. Der Standard_Hc44rs Bucket gibt an, dass der Infiniband-Dienst verfügbar ist. Einige quantitative Software skaliert über Knoten hinweg und nutzt die Vorteile von Verbindungen mit geringer Latenz zwischen Knoten.
Angenommen, Sie führen eine solche Arbeitslast aus und ein Auftrag erfordert vier Knoten, die mit Azure Infiniband-Netzwerkverbindungen verbunden sind. Um sicherzustellen, dass sich die vier Knoten in derselben Platzierungsgruppe befinden und sich somit im gleichen Infiniband-Netzwerk befinden, verwenden Sie den API-Aufruf zum Erstellen von Knoten mit einem 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" }
}
]
}'
Dies placementGroupId kann sich auf eine bereits vorhandene Platzierungsgruppe beziehen oder möglicherweise nicht. CycleCloud verwendet diese ID für eine logische Gruppe. Wenn die Anforderung eine Platzierungsgruppe angibt, die nicht vorhanden ist, erstellt CycleCloud eine neue Platzierungsgruppe. Sie können der gleichen Platzierungsgruppe in zusätzlichen Knotenanforderungen weitere VMs hinzufügen.
Knoten löschen
Der Managerdienst muss irgendwann die von ihm erstellten Knoten beenden.
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"
}
]
}