Skip to content

Dynamic and optimal mcis provisioning guide

Seokho Son edited this page May 27, 2024 · 5 revisions

최적 및 동적 MCIS 프로비저닝 사용 방법 가이드

CB-TB에서는 MCIS를 구성하는 VM 서비스를 선정하기 위해서 최적 배치 기능을 제공하며, 지원하는 선정 요소는 다음과 같다. (변동 및 추가될 수 있음)

  1. VM 사양 기반 선정
  2. VM 가격 기반 선정
  3. VM 위치 기반 선정
  4. VM 성능 기반 선정 (WIP: 현재 cloudspec.svc에 evaluationScore01 항목으로만 동작함. Prime Number 계산 성능에 해당하지만, 정확하게 측정된 값은 아님)
    • CPU를 통한 계산 성능 (Prime Number 계산)
    • Memory 읽기 쓰기 성능
    • Disk 읽기 쓰기 성능
    • DB 읽기 쓰기 트랜잭션 성능
  5. ...

1 단계) 시스템 환경 설정

최적 배치 기능 사용을 위해서는 최적 배치에 사용할 VM 서비스 리스트(공통 자원)를 미리 CB-TB 시스템에 등록하여야 한다.

환경 설정을 수행하면, https://github.com/cloud-barista/cb-tumblebug/tree/main/assets 에 정보들이 CB-TB에 등록된다. (https://github.com/cloud-barista/cb-tumblebug/pull/940)

특히, 다음의 정보가 CB-TB에 등록된다. 해당 정보는 파일 기반으로 수정이 가능하며, 내부에 각 VM Spec의 평가 정보가 포함되어 있다. 평가 정보는

VM Image에 따라서 구동되지 않는 VM Spec이 있을 수 있으며, 
Spec과 Image 상호 관계가 추적되고 있지 않음. 추가 개선 필요.

2 단계) 최적 선정 (API 활용)

POST ​/ns​/{nsId}​/mcisRecommendVm Recommend MCIS plan (filter and priority)를 통해서 최적 VM 선정

(https://cloud-barista.github.io/cb-tumblebug-api-web/?url=https://raw.githubusercontent.com/cloud-barista/cb-tumblebug/main/src/api/rest/docs/swagger.yaml#/%5BInfra%20service%5D%20MCIS%20Provisioning%20management/post_ns__nsId__mcisRecommendVm)

{
  "filter": {                  // 필터링 정책
    "policy": [                // 다양한 필터링 정책 등록 가능 (예를 들면, metric을 cpu, memory 등으로 지정하고, 조건 범위 지정)
      {
        "condition": [         
          {
            "operand": "4",
            "operator": "<="   // 오퍼레이터는 산술 비교값이 사용됨 (`>=`, `<=`, `==` 등)
          }
        ],
        "metric": "vCPU"        
      }
    ]
  },
  "limit": "5",                // 요청에 대한 응답은 VM Spec의 리스트로 구성되며, limit은 이 리스트의 개수를 제한함
  "priority": {                // 필터링된 리스트를 정렬하는 조건
    "policy": [
      {
        "metric": "location",  // `location`, `cost`, `performance` 로 지정 가능
        "parameter": [
          {
            "key": "coordinateClose", // `location`인 경우 가장 가까운 순을 의미하는 `coordinateClose` 선택 가능
            "val": [
              "44.146838/-116.411403" // 값은 위도/경도
            ]
          }
        ],
        "weight": "0.3"        // 다중 priority 정책이 정의된 경우 가중치 지정 가능. (현재는 반영되지 않음)
      }
    ]
  }
}

요청 방식 예시

동적 MCIS 프로비저닝

spec과 image 만 명시하면, default 자원을 활용하여 mcis를 생성해주는 기능

관련 PR (https://github.com/cloud-barista/cb-tumblebug/pull/879)

{
  "name": "mcis01",
  "vm": [
    {
      "commonImage": "aws+ap-northeast-2+ubuntu18.04",
      "commonSpec": "aws+ap-northeast-2+t2.small"
    }
  ]
}

동적 MCIS 삭제 및 관련 MCIR 삭제

동적 MCIS를 생성 시, 미리 생성된 공통 MCIR이 있는 경우 공통 MCIR을 사용하게 됨.

만약 공통 MCIR이 미리 생성되어 있지 않으면 이를 내부적으로 생성 후, MCIS 생성을 수행함.

따라서, 동적 MCIS 생성 및 삭제 후 관련 MCIR이 필요없어진 경우에는 삭제를 수행하는 것을 권장함.

Clone this wiki locally