네이버 클라우드 플랫폼의 상품 사용 방법을 보다 상세하게 제공하고, 다양한 API의 활용을 돕기 위해 [설명서][API 참조서]를 구분하여 제공하고 있습니다.

Auto Scaling API 참조서 바로가기 >>
Auto Scaling 설명서 바로가기 >>

Auto-scaling 그룹 반납 정책이 ‘고객이 API로 직접 지정’일 때 호출되는 API의 명세서

명세서 개요

  • 본 API는 HTTP query API 형태여야 합니다.
  • 현재 HTTP만 지원되며, HTTPS는 아직 지원되지 않습니다.
  • HTTP query의 HTTP method는 POST입니다.
  • POST할 body의 content 형식은 JSON입니다.
  • 결과의 형식도 JSON이어야 합니다.
  • 인증이 필요한 경우, Basic Authentication 방식으로 인증합니다.
  • 응답의 상태 코드는 200이어야 합니다.

HTTP request body 포맷

JSON 형식의 Request parameter는 다음과 전달됩니다.

일련번호 key Value type 설명
1 autoScalingGroupName String Auto-scaling group 이름
2 terminationCandidateInstances (아래 3개 항목은 본 map의 key) List<Map<String, Object>> 반납 후보가 되는 그룹 소속 서버 인스턴스 정보. 이 중에서 선택 바랍니다. 리스트 안에서의 엘리먼트 순서는 의미 없습니다.
2-1 instanceName String 서버 인스턴스 이름
2-2 instanceNo String 서버 인스턴스 번호 (식별자)
2-3 instanceIpAddress String 서버 인스턴스 아이피 주소
3 adjustmentMagnitude Integer 조정 규모. 즉 scale-in을 하기 위해 반납할 서버 인스턴스 수

상기 정의에 대한 예시는 다음과 같습니다.

{ "autoScalingGroupName":"group-1", terminationCandidateInstances":[{"instanceIpAddress":"10.113.245.61","instanceName":"s-5y1onl7l97r29u","instanceNo":"380515"},{"instanceIpAddress":"10.113.245.64","instanceName":"s-5i1onl7lqatxh4001","instanceNo":"380522"},{"instanceIpAddress":"10.113.245.60","instanceName":"s-5i1onl7lqatxh4002","instanceNo":"380525"}], "adjustmentMagnitude":1 }

HTTP 응답 명세서

응답 상태 코드가 200이고 아래와 같은 JSON 형식일 경우만 유효한 응답으로 간주합니다. 그렇지 않은 경우, 예를 들어 응답 상태가 400이거나 읽기 타임아웃이 발생한 경우, 기본 설정된 반납 정책에 따라 서버를 반납하여 scale-in을 합니다.

HTTP 응답 body 포맷

아래와 같은 포맷의 JSON 형식의 결과를 전달해야 합니다.

일련번호 key Value type 설명
1 autoScalingGroupName String Auto-scaling group 이름
2 selectedInstanceNoList List<String> 반납 대상으로 선택된 서버 인스턴스 번호(식별자)의 리스트

상기 ‘selectedInstanceNoList’ 키의 값인 스트링의 리스트에 대한 유의 사항은 다음과 같습니다.

  • 반드시 반납 후보로 전달된 서버 인스턴스 중에서 선택해야 합니다.

  • 반납 가능한 대상을 우선 순위대로 나열해서 주시면 됩니다.

  • 조정 규모(adjustmentMagnitude)보다 많이 주셔도 되고 적게 주셔도 됩니다.

  • 반납하기 어려운 서버가 많아서 조정 규모(adjustmentMagnitude)보다 적게 주셨다면, 결과로 주신 서버만 반납을 합니다. 빈 리스트를 주셔도 됩니다.

  • 조정 규모(adjustmentMagnitude)보다 선택한 서버가 많은 경우, 조정 규모만큼의 서버만 먼저 나열한 순서로 선택해서 반납합니다.

  • 스케일링 정책이 실행될 때, 전달한 서버 리스트 사이즈에 상관 없이 조정 규모만큼 기대 용량(desired capacity)이 조정됩니다.

  • 전달한 리스트 사이즈가 조정 규모보다 작은 경우, 반납 절차 후에도 실제 용량이 기대 용량보다 큰 상태로 남게 되어, 시간이 지난 뒤 그 차이를 없애기 위해 API가 자동으로 다시 호출됩니다. 전달한 리스트가 조정 규모보다 작긴하지만 빈 리스트가 아닌 경우, 반납 절차가 완료된 이후 API가 다시 호출되고, 전달한 리스트가 빈 리스트이면 1 분 뒤 API가 다시 호출됩니다.

  • API에 의해 선택된 서버 인스턴스를 반납한 이후, 설령 실제 용량과 기대 용량이 같더라도 쿹다운(cool-down) 시간이 지난 뒤, 다시 scaling policy가 실행될 상황인지 조사해서 API로 문의합니다.

결과의 예시는 다음과 같습니다.

{ "selectedInstanceNoList":["380515","380522","380525"],

 "autoScalingGroupName":"group-1” }

HTTP 요청 시 HTTP 메시지 포맷

HTTP query의 요청 라인과 HTTP header은 다음과 같습니다.

POST /url-path HTTP/1.1
Host: 10.2.3.4:5304
Authorization: Basic dXNlcjpwYXNz
Accept: application/json
Content-Type: application/json; charset=UTF-8
User-Agent: Auto-Scaling Manager/1.0
Connection: close
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 383

<json-type body>
  • HTTP protocol 버전은 1.1이고, connection을 유지 하지 않습니다. 응답을 받은 후 바로 닫습니다.

  • 인증이 필요한 경우, Basic Authentication 방식으로 Authorization 헤더로 전달해서 인증합니다.

API 호출 실시 예

  1. Auto-scaling group ‘group-1’은 최소 용량이 1, 최대 용량이 10, 기대 용량이 8입니다.

  2. CPU 사용량 그룹 평균이 1분 넘게 30% 이하이면, 서버를 2대 감소하도록 scaling policy를 설정을 했습니다.

  3. 현재 ‘group-1’은 기대 용량이 8, 실제 용량이 8입니다.

  4. CPU 사용량 그룹 평균이 1분 넘게 30% 이하여서 상기 정책(policy)가 실행되었습니다.

  5. 이에 기대 용량이 6, 실제 용량이 8이 되었습니다.

  6. 사용자가 지정한 API에 현재 서버 8대 정보를 후보로 (조정 규모는 2) 전달합니다.

  7. API callee는 5대 서버가 반납 가능하다고 전달합니다.

  8. 조정 규모가 2이므로 전달한 리스트에서 맨 앞의 2대 서버를 선택해서 반납합니다.

  9. 이제 기대 용량이 6, 실제 용량이 6이 되었습니다.

  10. Cool-down 시간 이후에도 계속 CPU 사용량 그룹 평균이 계속 30% 이하입니다.

  11. 다시 상기 정책이 실행되었습니다.

  12. 이에 기대 용량이 4, 실제 용량이 6이 되었습니다.

  13. 사용자가 지정한 API에 현재 서버 6대 정보를 후보로 (조정 규모는 2) 전달합니다.

  14. API callee는 6대 모두 현재 사용중이어서 반납할 수 없기에, 빈 리스트를 전달합니다.

  15. 휴지 기간 1분 후에도, 기대 용량(4)과 실제 용량(6)이 차이가 나므로 (정책을 실행할 조건이 아니어도) API를 다시 호출합니다.

""에 대한 건이 검색되었습니다.

    ""에 대한 검색 결과가 없습니다.

    처리중...