다음을 통해 공유


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 예제는 'user:password'에 base64로 인코딩된 문자열을 사용합니다.

응답은 다음 예제와 같습니다. 응답에는 전체 노드 특성 집합이 포함되어 있지만, 단순성을 위해 여기에서 많은 특성이 생략됩니다.

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

작업 API를 사용하여 작업 상태를 추적할 수 있습니다. request_id GET 노드 응답을 필터링하도록 매개 변수를 설정합니다. 이 필터는 만들기 요청으로 만든 모든 노드에 대한 세부 정보를 제공합니다.

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

긴밀하게 결합된 노드 추가

목록에 여러 개의 유효한 컴퓨터 형식을 사용하여 CycleCloud 노드 배열을 정의할 수 있습니다. ondemand 노드 배열에 Standard_F32s_v2_Standard_Hc44rs 둘 다 정의되어 있다고 가정합니다. 클러스터 상태 API는 각 VM 크기에 대해 하나씩 이 노드 배열에 대해 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는 논리 그룹에 이 ID를 사용합니다. 요청이 존재하지 않는 배치 그룹을 지정하는 경우 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"
    }
  ]
}