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 type의 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-type 포맷일 경우만 유효한 응답으로 간주한다. 그렇지 않은 경우, 예를 들어 응답 상태가 400이거나 읽기 타임아웃이 난 경우, 기본 설정된 반납 정책에 따라 서버를 반납하여 scale-in을 한다.

HTTP 응답 body 포맷

아래와 같은 포맷의 Json type의 결과를 전달해야 한다.

일련번호 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를 다시 호출한다.

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

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

    처리중...