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_Hc44rsinfiniband 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ıplacementGroupIdkullanacaksı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"
    }
  ]
}