CycleCloud REST API'sini kullanma
Cyclecloud, otomatik ve programlı küme yönetimi eklemek için bir REST API sağlar. Özel otomatik ölçeklendirme ve özel zamanlayıcı tümleştirmesi, bir iş yükü kuyruğunun değerlendirildiği ve iş yükü talebine eşit sanal makinelerin (VM) başlatıldığı bir araç gerektirir. CycleCloud REST API, böyle bir araç için uygun uç noktadır ve yüksek aktarım hızı veya sıkı bağlı VM düzenlemeleri içerebilen iş yükü gereksinimlerini destekler.
Küme durumunu belirleme
Küme yapılandırmalarının her birinde VM kullanılabilirliğini gösteren küme durumunu belirlemek için CycleCloud'ı sorgulayabilirsiniz.
curl --location --request GET '${CC-URL}/clusters/${CLUSTER}/status' \
--header 'Authorization: Basic ****************************'
Not
CycleCloud API'sinde kullanıcı adı ve parola bileşimi kullanılarak temel kimlik doğrulaması kabul edilir. Bu curl API örnekleri base64 kodlamalı bir 'user:password' dizesidir.
Yanıt aşağıdaki biçimde olacaktır. Yanıt tam bir düğüm öznitelikleri kümesi içerir, ancak kolaylık olması için çoğu burada atlanmıştır.
{
"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
}
}
]
}
Düğüm oluşturma
API, düğümleri başlatmada büyük esneklik sağlar. Düğüm oluşturmak için gereken öznitelikler yalnızca ve count
'tirnodearray
. Gerekli en düşük öznitelikleri kullanan bir çağrı tüm mevcut düğüm yapılandırmalarını devralır ve isteği karşılayan ilk demete yerleştirilir.
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"
}
]
}'
Bu çağrıya verilen yanıt bir işlem kimliği sağlar.
{
"operationId": "3b53d621-abcd-1234-8876-6ec1158897ac",
"sets": [
{
"added": 1
}
]
}
İşlem durumu , işlem API'sini kullanarak izlenebilir. GET düğümleri yanıtını request_id
filtrelemek için parametresini ayarlayabilirsiniz. Bu, oluşturma isteğiyle oluşturulan tüm düğümlerin ayrıntılarını sağlayabilir.
curl --location --request GET '${CC-URL}/clusters/${CLUSTER}/nodes?request_id=463270ca-abcd-1234-98d6-431ee3ef8ed5' \
Sıkı bir şekilde bağlanmış düğümler ekleme
CycleCloud nodearrays, bir listede birden çok geçerli makine türüyle tanımlanabilir. nodearray öğesinin ondemand
hem hem de Standard_F32s_v2_
Standard_Hc44rs
tanımlı olduğunu varsayalım. Küme durumu API'sinde bu nodearray için her VM Boyutu için en az iki buckets
tane gösterilir. Demetin Standard_Hc44rs
infiniband hizmetinin kullanılabilir olduğunu gösterdiğini gözlemleyin. Bazı nicel yazılımlar, düğümler arasında ölçeği genişletmek ve düğümler arasındaki düşük gecikme süreli bağlantılardan yararlanmak için yazılır.
Böyle bir iş yükü çalıştırdığınızı ve bir işin Azure Infiniband ağı tarafından bağlanan dört düğümü çağırdığını varsayalım. Dört düğümün aynı yerleştirme grubunda ve dolayısıyla aynı Infiniband ağında olmasını sağlamak için, ile düğüm oluşturma API çağrısınıplacementGroupId
kullanacaksınız.
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" }
}
]
}'
Önceden placementGroupId
var olan bir yerleştirme grubuna başvurabilir veya başvuramayabilir. Bu, CycleCloud'da kullanılan mantıksal bir grupdur ve istek yapıldığında belirli bir yerleştirme grubu yoksa CycleCloud yeni bir yerleştirme grubu oluşturur. Ek düğüm oluşturma isteklerinde aynı yerleştirme grubuna ek VM'ler ekleyebilirsiniz.
Düğümleri silme
Bir noktada yönetici hizmeti oluşturulan düğümleri sonlandırmak isteyecektir.
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"
}
]
}