Menggunakan CYCLECloud REST API
Cyclecloud menyediakan REST API untuk menambahkan manajemen kluster otomatis dan terprogram. Penskalaan otomatis kustom dan integrasi penjadwal kustom memerlukan alat yang mengevaluasi antrean beban kerja dan memulai Virtual Machines (VM) yang sama dengan permintaan beban kerja. CycleCloud REST API adalah titik akhir yang sesuai untuk alat tersebut dan mendukung persyaratan beban kerja yang mungkin mencakup throughput tinggi atau pengaturan VM yang digabungkan dengan erat.
Menentukan status kluster
Anda dapat mengkueri CycleCloud untuk menentukan status kluster yang menunjukkan ketersediaan VM di setiap konfigurasi kluster.
curl --location --request GET '${CC-URL}/clusters/${CLUSTER}/status' \
--header 'Authorization: Basic ****************************'
Catatan
CycleCloud API menerima autentikasi dasar menggunakan kombinasi nama pengguna dan kata sandi. Contoh API curl ini adalah string yang dikodekan base64 'user:password'.
Responsnya akan dalam bentuk berikut. Respons berisi sekumpulan atribut node lengkap tetapi banyak yang dihilangkan di sini untuk kesederhanaan.
{
"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
}
}
]
}
Membuat simpul
API memberikan fleksibilitas besar dalam node awal. Satu-satunya atribut yang diperlukan untuk membuat simpul adalah nodearray
dan count
. Panggilan menggunakan atribut minimum yang diperlukan akan mewarisi semua konfigurasi simpul yang ada dan ditempatkan di wadah pertama yang dapat memenuhi permintaan.
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"
}
]
}'
Respons terhadap panggilan ini akan memberikan ID operasi.
{
"operationId": "3b53d621-abcd-1234-8876-6ec1158897ac",
"sets": [
{
"added": 1
}
]
}
Status operasi dapat dilacak menggunakan API operasi. Anda dapat mengatur request_id
parameter untuk memfilter respons simpul GET. Ini dapat memberi Anda detail untuk semua simpul yang dibuat dengan permintaan buat.
curl --location --request GET '${CC-URL}/clusters/${CLUSTER}/nodes?request_id=463270ca-abcd-1234-98d6-431ee3ef8ed5' \
Menambahkan simpul yang digabungkan erat
Nodearray CycleCloud dapat ditentukan dengan beberapa jenis komputer yang valid dalam daftar.
ondemand
Misalkan nodearray memiliki dan Standard_F32s_v2_
Standard_Hc44rs
didefinisikan. API status kluster akan menampilkan setidaknya dua buckets
untuk nodearray ini satu untuk setiap Ukuran VM. Amati bahwa Standard_Hc44rs
wadah menunjukkan bahwa layanan infiniband tersedia. Beberapa perangkat lunak kuantitatif ditulis untuk menskalakan di seluruh simpul dan memanfaatkan koneksi latensi rendah antar simpul.
Misalkan Anda menjalankan beban kerja seperti itu dan panggilan pekerjaan untuk empat simpul yang terhubung oleh jaringan Azure Infiniband. Untuk memastikan bahwa empat simpul berakhir di grup penempatan yang sama, dan dengan demikian pada jaringan Infiniband yang sama, Anda akan menggunakan panggilan API buat simpul dengan 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" }
}
]
}'
Mungkin placementGroupId
atau mungkin tidak mereferensikan grup penempatan yang sudah ada sebelumnya. Ini adalah grup logis yang digunakan di CycleCloud dan jika grup penempatan tertentu tidak ada saat permintaan dibuat, maka CycleCloud akan membuat grup penempatan baru. Anda dapat menambahkan VM tambahan ke grup penempatan yang sama dalam permintaan simpul buat tambahan.
Menghapus node
Pada titik tertentu, layanan manajer ingin mengakhiri simpul yang telah dibuat.
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"
}
]
}