Použití rozhraní REST API CycleCloudu
Cyclecloud poskytuje rozhraní REST API pro přidání automatizované a programové správy clusteru. Vlastní integrace automatického škálování a vlastního plánovače vyžaduje nástroj, který vyhodnotí frontu úloh a spustí službu Virtual Machines (VM) rovnou poptávce po úlohách. Rozhraní REST API CycleCloudu je vhodný koncový bod pro takový nástroj a podporuje požadavky na úlohy, které můžou zahrnovat vysokou propustnost nebo úzce propojené uspořádání virtuálních počítačů.
Určení stavu clusteru
Pomocí dotazu CycleCloud můžete určit stav clusteru, který označuje dostupnost virtuálního počítače v každé konfiguraci clusteru.
curl --location --request GET '${CC-URL}/clusters/${CLUSTER}/status' \
--header 'Authorization: Basic ****************************'
Poznámka
Rozhraní CycleCloud API přijímá základní ověřování pomocí kombinace uživatelského jména a hesla. Tyto příklady rozhraní API curl jsou řetězec s kódováním base64 user:password.
Odpověď bude v následujícím formátu. Odpověď obsahuje úplnou sadu atributů uzlů, ale mnoho z nich je zde vynecháno kvůli jednoduchosti.
{
"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
}
}
]
}
Vytváření uzlů
Rozhraní API poskytuje velkou flexibilitu při spouštění uzlů. Jediné požadované atributy pro vytváření uzlů jsou nodearray
a count
. Volání využívající minimální požadované atributy zdědí všechny existující konfigurace uzlů a umístí se do prvního kontejneru, který může požadavek splnit.
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"
}
]
}'
Odpověď na toto volání poskytne ID operace.
{
"operationId": "3b53d621-abcd-1234-8876-6ec1158897ac",
"sets": [
{
"added": 1
}
]
}
Stav operace je možné sledovat pomocí rozhraní API operací. Parametr můžete nastavit request_id
tak, aby filtruje odpověď na uzly GET. To vám může poskytnout podrobnosti o všech uzlech vytvořených pomocí žádosti o vytvoření.
curl --location --request GET '${CC-URL}/clusters/${CLUSTER}/nodes?request_id=463270ca-abcd-1234-98d6-431ee3ef8ed5' \
Přidání úzce propojených uzlů
CycleCloud nodearrays lze definovat s několika platnými typy počítačů v seznamu. Předpokládejme, že nodearray ondemand
má Standard_F32s_v2_
i Standard_Hc44rs
definované. Rozhraní API stavu clusteru zobrazí pro každou velikost virtuálního počítače alespoň dvě buckets
pro tento uzel. Všimněte si, že Standard_Hc44rs
kontejner označuje, že je dostupná služba infiniband . K horizontálnímu navýšení kapacity mezi uzly se zapisuje určitý kvantitativní software a využívá výhod připojení s nízkou latencí mezi uzly.
Předpokládejme, že spouštíte takovou úlohu a volání úlohy pro čtyři uzly propojené sítěmi Azure Infiniband. Pokud chcete zajistit, aby čtyři uzly skončily ve stejné skupině umístění, a proto ve stejné síti Infiniband, použijete volání rozhraní API pro vytváření uzlů s .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" }
}
]
}'
Může placementGroupId
nebo nemusí odkazovat na existující skupinu umístění. Jedná se o logickou skupinu použitou v CycleCloudu a pokud při vytvoření požadavku neexistuje konkrétní skupina umístění, vytvoří CycleCloud novou skupinu umístění. Do stejné skupiny umístění můžete přidat další virtuální počítače v dalších žádostech o vytvoření uzlů.
Odstranění uzlů
V určitém okamžiku bude služba manageru chtít ukončit vytvořené uzly .
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"
}
]
}