CycleCloud REST API の使用

Cyclecloud には、自動およびプログラムによるクラスター管理を追加するための REST API が用意されています。 カスタム自動スケーリングとカスタム スケジューラの統合には、ワークロード キューを評価し、ワークロードの需要と同じ仮想マシン (VM) を起動するツールが必要です。 CycleCloud REST API は、このようなツールに適したエンドポイントであり、高スループットまたは密結合 VM の配置を含む可能性のあるワークロード要件をサポートします。

クラスターの状態を確認する

CycleCloud にクエリを実行して、各クラスター構成で VM の可用性を示すクラスターの状態を判断できます。

curl --location --request GET '${CC-URL}/clusters/${CLUSTER}/status' \
--header 'Authorization: Basic ****************************'

注意

CycleCloud API は、ユーザー名とパスワードの組み合わせを使用した基本認証を受け入れます。 これらの curl API の例は、base64 でエンコードされた文字列 'user:password' です。

応答は次の形式になります。 応答にはノード属性の完全なセットが含まれていますが、わかりやすくするために、多くはここでは省略されています。

{
  "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
          }
        }
    ]
}

ノードの作成

この API は、ノードの起動に大きな柔軟性を提供します。 ノードを作成するために必要な属性は次のとおりですnodearraycount。 最低限必要な属性を使用する呼び出しは、既存のすべてのノード構成を継承し、要求を満たすことができる最初のバケットに配置されます。

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"
        }
    ]
}'

この呼び出しに対する応答は、操作 ID を提供します。

{
  "operationId": "3b53d621-abcd-1234-8876-6ec1158897ac",
  "sets": [
    {
      "added": 1
    }
  ]
}

操作の状態は、 Operations API を使用して追跡できます。 パラメーターを request_id 設定して、GET ノードの応答をフィルター処理できます。 これにより、作成要求で作成されたすべてのノードの詳細を提供できます。

curl --location --request GET '${CC-URL}/clusters/${CLUSTER}/nodes?request_id=463270ca-abcd-1234-98d6-431ee3ef8ed5' \

密結合ノードを追加する

CycleCloud nodearray は、一覧内の複数の有効なコンピューターの種類で定義できます。 nodearray に ondemand 両方 Standard_F32s_v2_Standard_Hc44rs 定義があるとします。 クラスター状態 API には、VM サイズごとに 1 つの nodearray に対して少なくとも 2 つが buckets 表示されます。 バケットが Standard_Hc44rsinfiniband サービスが使用可能であることを示していることを確認します。 一部の定量的ソフトウェアは、ノード間でスケールアウトし、ノード間の待機時間の短い接続を利用するように記述されています。

このようなワークロードを実行し、Azure Infiniband ネットワークによって接続された 4 つのノードに対してジョブ呼び出しを実行しているとします。 4 つのノードが同じ配置グループに含まれるようにするため、同じ Infiniband ネットワーク上で作成 ノード API 呼び出し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" }
        }
    ]
}'

既存の placementGroupId 配置グループを参照する場合と参照しない場合があります。 これは CycleCloud で使用される論理グループであり、要求の実行時に特定の配置グループが存在しない場合、CycleCloud は新しい配置グループを作成します。 追加のノード作成要求で、同じ配置グループに VM を追加できます。

ノードを削除する

ある時点で、マネージャー サービスは作成された ノードを終了 する必要があります。

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"
    }
  ]
}