Korzystanie z interfejsu API REST usługi CycleCloud
Usługa Cyclecloud udostępnia interfejs API REST do dodawania zautomatyzowanego i programowego zarządzania klastrami. Niestandardowe skalowanie automatyczne i niestandardowa integracja harmonogramu wymaga narzędzia, które ocenia kolejkę obciążenia i uruchamia maszyny wirtualne równe zapotrzebowanie na obciążenie. Interfejs API REST usługi CycleCloud jest odpowiednim punktem końcowym dla takiego narzędzia i obsługuje wymagania dotyczące obciążeń, które mogą obejmować ustalenia dotyczące wysokiej przepływności lub ściśle powiązanej maszyny wirtualnej.
Określanie stanu klastra
Możesz wykonać zapytanie CycleCloud, aby określić stan klastra, który wskazuje dostępność maszyny wirtualnej w każdej konfiguracji klastra.
curl --location --request GET '${CC-URL}/clusters/${CLUSTER}/status' \
--header 'Authorization: Basic ****************************'
Uwaga
Interfejs API CycleCloud akceptuje podstawowe uwierzytelnianie przy użyciu kombinacji nazwy użytkownika i hasła. Te przykłady interfejsu API curl to ciąg zakodowany w formacie base64 "user:password".
Odpowiedź będzie znajdować się w następującym formularzu. Odpowiedź zawiera kompletny zestaw atrybutów węzła, ale wiele z tych elementów zostało pominiętych tutaj dla uproszczenia.
{
"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
}
}
]
}
Tworzenie węzłów
Interfejs API zapewnia dużą elastyczność w węzłach początkowych. Jedynymi wymaganymi atrybutami do utworzenia węzłów są nodearray
i count
. Wywołanie używające minimalnych wymaganych atrybutów dziedziczy wszystkie istniejące konfiguracje węzłów i zostanie umieszczone w pierwszym zasobniku, który może spełniać żądanie.
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"
}
]
}'
Odpowiedź na to wywołanie zapewni identyfikator operacji.
{
"operationId": "3b53d621-abcd-1234-8876-6ec1158897ac",
"sets": [
{
"added": 1
}
]
}
Stan operacji można śledzić przy użyciu interfejsu API operacji. Parametr można ustawić request_id
tak, aby filtrować odpowiedź węzłów GET. Może to zapewnić szczegółowe informacje dotyczące wszystkich węzłów utworzonych za pomocą żądania tworzenia.
curl --location --request GET '${CC-URL}/clusters/${CLUSTER}/nodes?request_id=463270ca-abcd-1234-98d6-431ee3ef8ed5' \
Dodawanie ściśle powiązanych węzłów
Nodearrays CycleCloud można zdefiniować z wieloma prawidłowymi typami maszyn na liście. Załóżmy, że środowisko ondemand
nodearray ma zarówno środowisko, jak Standard_F32s_v2_
i Standard_Hc44rs
zdefiniowano. Interfejs API stanu klastra wyświetli co najmniej dwa buckets
dla tego węzłaarray jeden dla każdego rozmiaru maszyny wirtualnej. Zwróć uwagę, że zasobnik wskazuje, Standard_Hc44rs
że usługa infiniband jest dostępna. Niektóre oprogramowanie ilościowe jest zapisywane w celu skalowania w poziomie między węzłami i korzystania z połączeń o małym opóźnieniu między węzłami.
Załóżmy, że uruchamiasz takie obciążenie, a zadanie wywołuje cztery węzły połączone z siecią Azure Infiniband. Aby upewnić się, że cztery węzły kończą się w tej samej grupie umieszczania, a tym samym w tej samej sieci Infiniband, użyjesz wywołania interfejsu API tworzenia węzłów z elementem 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" }
}
]
}'
Element placementGroupId
może lub nie może odwoływać się do wstępnie istniejącej grupy umieszczania. Jest to grupa logiczna używana w usłudze CycleCloud, a jeśli określona grupa umieszczania nie istnieje po wysłaniu żądania, usługa CycleCloud utworzy nową grupę umieszczania. Dodatkowe maszyny wirtualne można dodać do tej samej grupy umieszczania w dodatkowych żądaniach tworzenia węzłów.
Usuwanie węzłów
W pewnym momencie usługa menedżera będzie chciała zakończyć węzły , które zostały utworzone.
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"
}
]
}