ucloud autoscaling API v 1.6 2014.3
1. 개요... 4 1.1 유클라우드오토스케일링 API 개요... 4 1.2 API 요청... 4 1.3 API 응답... 8 2. 사용팁 (QUICK START)... 11 2.1 오토스케일링의기본시나리오... 12 2.2 오토스케일링그룹의변경사항을이메일로전송받는시나리오... 19 2.3 정책수행시나리오... 26 3. 개념... 32 3.1 오토스케일링동작... 32 3.2 개념및용어설명... 33 4. 명령어... 38 4.1 createautoscalinggroup... 39 4.2 deleteautoscalinggroup... 44 4.3 updateautoscalinggroup... 46 4.4 setdesiredcapacity... 48 4.5 listautoscalinggroups... 50 4.6 listautoscalinginstances... 53 4.7 setinstancehealth... 56 4.8 terminateinstanceinautoscalinggroup... 58 4.9 createlaunchconfiguration... 60 4.10 deletelaunchconfiguration... 62 4.11 listlaunchconfigurations... 64 4.12 disablemetricscollection... 67 4.13 enablemetricscollection... 70 4.14 listmetriccollectiontypes... 72 4.15 putnotificationconfiguration... 74 4.16 listnotificationconfigurations... 76 4.17 deletenotificationconfiguration... 78 4.18 listautoscalingnotificationtypes... 80 4.19 executepolicy... 82 4.20 deletepolicy... 84 4.21 putscalingpolicy... 86 4.22 listpolicies... 89 4.23 listadjustmenttypes... 92 4.24 resumeprocesses... 94 4.25 suspendprocesses... 96 4.26 listscalingprocesstypes... 98 1
4.27 listscalingactivities... 100 4.28 deletescheduledaction... 103 4.29 listscheduledactions... 105 4.30 putscheduledupdategroupaction... 108 APPENDIX... 110 A.1 CLI 설치방법... 110 2
Revision History Version 변경사항작성일 1.0 OBT 버전 2013 년 2 월 25 일 createautoscalinggroup 의 LoadBalancer 추가 1.1 createlaunchconfiguration 의 VolumeMapping 추가 2013 년 4 월 12 일 데이터타입관련어펜딕스삭제 1.2 CLI 설치설명수정 2013 년 4 월 25 일 LaunchConfiguration 의 diskofferingid 필수속성삭제 1.3 에러응답정리 2013 년 5 월 29 일 응답메시지에 requestid 추가 CLI 도움화면출력형식수정 1.4 RemoveFromLoadBalancer ProcessType 삭제 createautoscaling 요청의예에서 MPX 의경우 2013 년 6 월 21 일 PrivatePort 가빠져있던것추가 LB api 변경에따라 MPX 관련항목을 MPX 로변경 1.5 createautoscalinggroup 에 NAS 관련설명및예제 2013 년 8 월 8 일 추가 1.6 LaunchConfiguration 의 ProductCode 항목추가 2014 년 3 월 10 일 3
1. 개요 본문서는유클라우드오토스케일링 API 의규격을제시한다. API 요청 / 응답메시지와공개하고있는명령어의설명및예시를포함하고있다. 사용자는유클라우드오토스케일링 API 를통하여 ucloud server 의 VM 인스턴스그룹을생성하고, 그그룹을특정정책에따라자동으로관리할수있다. 1.1 유클라우드오토스케일링 API 개요 1.2 API 요청 API 요청메시지는아래와같이구성된다. (1)API URL + (2) 요청명령어 + (3) 명령어파라미터 + (4) 응답포맷 + (5)API Key + (6) 인증서명서 각필드의값과내용은아래표와같다. Field (1) API URL Description 유클라우드오토스케일링 API URL Value : https://api.ucloudbiz.olleh.com/autoscaling/v1/client/api? (2) 요청명령어 유클라우드오토스케일링서비스에서제공하는명령어 Syntax : command= 명령어이름, (3) 명령어파라미터 요청명령어관련파라미터 Syntax : &field=value* (4) 응답포맷 XML, JSON 응답포맷을지원한다. (Optional 필드 ) Syntax : &response=(xml or json), default 는 xml. (5) API Key 사용자계정별 API Key (ucloudbiz site 에서확인 ) Syntax : &apikey=apikey (6) 인증서명서 API 요청메시지수행권한여부를체크하는인증서명서 Syntax : &signature= 인증서명서 4
API Key, Secret Key 확인 (1) https://ucloudbiz.olleh.com 로그인 (2) 클라우드콘솔선택 (3) API Key 관리메뉴선택 API 요청 Sample https://api.ucloudbiz.olleh.com/autoscaling/v1/client/api?command=listautoscalinggroups &autoscalinggroupnames.member.1=test&response=xml&apikey=mivr6x&signature=zc1 u%2b03yj592lz%2bgma3ac%2fqthws%3d\ API 요청 Sample 분석 (1) https://api.ucloudbiz.olleh.com/autoscaling/v1/client/api? <- API URL (2) command=listautoscalinggroups <- 요청명령어 (3) &autoscalinggroupnames.member.1=test <- 명령어파라미터 (4) &response=xml <- 응답포맷 (5) &apikey=mivr6x <- API Key (6) &signature=zc1u%2b03yj592lz%2bgma3ac%2fqthws%3d <- 인증서명서 5
1.2.1 인증서명서 유클라우드오토스케일링에서는 API Key 와인증서명서로인증을수행한다. 사용자별로발급되는 Secret Key 와 HMAC SHA-1 알고리즘그리고명령문자열 (2 번 ~5 번 ) 을이용하여인증서명서를 생성한다. 인증서명서생성 o Secret Key 예 : keokzhd o 명령문자열 _ 예 : command=listautoscalinggroups&autoscalinggroupnames.member.1=test&respon se=xml&apikey=mivr6 (1) 명령문자열의각필드와값을 URL 인코딩한다. URL 인코딩 : 공백문자가 %20 으로인코딩되도록해야한다. ( + 안됨 ) API 요청메시지 : API_URL + URL 인코딩된문자열 + &signature= 인증서명서 (2) 명령문자열을소문자로변경한다. (3) 필드이름을기준으로알파벳순으로정렬한다. apikey=mivr6&autoscalinggroupnames.member.1=test&command=listautoscalinggroups &response=xml (4) Secret Key 와 HMAC SHA - 1 해시알고리즘을이용하여명령문자열을암호화한다. 아래는 java sample code 이다. Mac mac = Mac.getInstance ( "HmacSHA1" ); SecretKeySpec keyspec = new SecretKeySpec(secretkey.getBytes(), "HmacSHA1"); mac.init( keyspec ); mac.update ( commandstring.getbytes() ); byte[] encryptedbytes = mac.dofinal(); (5) 마지막으로얻어진바이트배열을 Base64 인코딩후, 다시 UTF - 8 로 URL 인코딩을수행한다. 생성된인증서명서와 API 요청메시지는다음과같다. 인증서명서 : ZC1u%2B03yj592LZ%2BgmA3ac%2FQThws%3D https://api.ucloudbiz.olleh.com/autoscaling/v1/client/api?command=listautoscalinggroups &response=xml&apikey=mivr6x&signautre=zc1u%2b03yj592lz%2bgma3ac%2fqthws%3 D 1.2.2 명령어유형 6
유클라우드오토스케일링은비동기명령어를사용하지않는다. 7
1.2.3 파라미터 API 요청시수행되는파라미터는앞에서언급한것과같이쌍 (field=value) 으로존재하며대소문자 사용규칙은다음과같다. field : 대소문자구별안함, command 만대소문자구별. value : 대소문자구별함. 1.3 API 응답 지원하고있는응답포맷설명과명령유형 ( 동기명령어, 비동기명령어 ) 에따른 API 응답확인 절차를기술한다. 1.3.1 API 응답포맷 API 응답포맷으로 xml, json 을지원하며, API 요청시 response=xml 과같이응답포맷을지정할수있다. 응답메시지는 <command 이름 + response> 태그로시작하고모든태그는소문자이다. 복수개의응답은 <count> 태그를통하여개수를표시한다. 다음표는응답포맷예제이다. 예제에서는사용자의보기편의성을위하여인덴테이션이되어있으나실재응답메시지에서는인덴테이션처리는되어있지않다. Response Format xml Sample <?xml version="1.0" encoding="utf-8" standalone="yes"?> <listautoscalinggroupsresponse> <count>1</count> <autoscalinggroups> <autoscalinggroup> <autoscalinggroupname>test-asg-8</autoscalinggroupname> <autoscalinggroupurn>urn:ucloud:uas:m1234:autoscalinggroupname/test-asg- 8</autoscalinggroupurn> <launchconfigurationname>webserver</launchconfigurationname> <availabilityzones> <availabilityzone>eceb5d65-6571-4696-875f-5a17949f3317</availabilityzone> </availabilityzones> <minsize>0</minsize> <maxsize>1</maxsize> <desiredcapacity>1</desiredcapacity> <instances> <instance> <instanceid>534df561-729f-4f97-bce8-b171b37bd8e9</instanceid> <launchconfigurationname>webserver</launchconfigurationname> <lifecyclestate>terminated</lifecyclestate> 8
</instance> <instance> <instanceid>c8b05f8e-9370-4df9-ba50-6c97cbb6574b</instanceid> <launchconfigurationname>webserver</launchconfigurationname> <lifecyclestate>inservice</lifecyclestate> </instance> </instances> </autoscalinggroup> </autoscalinggroups> <nexttoken>-1</nexttoken> <responsemetadata> <requestid>fe2f6fc7-6931-4756-892b-9332220844e8</requestid> </responsemetadata> </listautoscalinggroupsresponse> json {"listautoscalinggroupsresponse": {"count":1, "responsemetadata" : { "requestid" : "28ba58ba-3201-4a1e-ad7d-664eecda533c" }, "autoscalinggroups": [{"instances": [{"instanceid":"534df561-729f-4f97-bce8-b171b37bd8e9", "launchconfigurationname":"webserver", "lifecyclestate":"terminated"}, {"instanceid":"c8b05f8e-9370-4df9-ba50-6c97cbb6574b", "launchconfigurationname":"webserver", "lifecyclestate":"inservice"}], "autoscalinggroupname":"test-asg-8", "autoscalinggroupurn":"urn:ucloud:uas:m1234:autoscalinggroupname/test-asg-8", "launchconfigurationname":"webserver", "availabilityzones": ["eceb5d65-6571-4696-875f-5a17949f3317"], "minsize":0, "maxsize":1, "desiredcapacity":1}], "nexttoken":-1} } 1.3.2 비동기명령어응답 유클라우드오토스케일링은비동기명령어를사용하지않는다. 9
1.3.3 ERROR HANDLING API 요청이잘못되거나처리도중오류가발생하면 Error 정보를응답메시지로돌려준다. Error 정보는 <errorcode> 태그와 <errortext> 태그를통해표시한다. 다음은에러정보의 XML 반환 형식이다. <command + response> <errorcode>error Code</errorcode> <errortext>error Type: Description</errortext> <responsemetadata> <requestid>request ID</requestid> </responsemetadata> </command + response> 현재지원하는에러는다음과같다. Error Code Status Description 401 Authentication error Bad signature, missing API keys or no permission to execute command 430 Malformed parameter error The query string is malformed 431 Param error A request parameter does not comply with the associated constraints 434 Invalid parameter combination Parameters that must not be used together were used together 435 Missing parameter An input parameter that is mandatory for processing the request is not supplied 436 Invalid command The command or operation requested is invalid 437 Missing command The request is missing a command or operation parameter 530 Internal error An internal service error occured 1304 Resource not found The named resource does not exist 1305 Invalid next token The next token specified is invalid 1306 Already exists Resource with the name requested already exists 1307 Limit exceeded Quota for the resource has already been reached 1308 Resource in use This is returned when you cannot delete a launch configuration or autoscaling group because it is being used 1309 Scaling activity in You cannot delete an autoscaling group while there are scaling 10
progress activities in progress for that group Example 인스턴스를가지고있는 AutoScalingGroup 을삭제할경우 <deleteautoscalinggroupresponse> <errorcode>1308</errorcode> <errortext>resource in use: AutoScalingGroup nas-sample has instances.</errortext> <responsemetadata> <requestid>bb2b6baa-db88-4290-8308-0c317779b5b3</requestid> </responsemetadata> </deleteautoscalinggroupresponse> 2. 사용팁 (QUICK START) 이장에서는 API 와 CLI(Command Line Interface) 를통한유클라우드오토스케일링서비스의활용방법에대해몇가지시나리오를바탕으로기술한다. 유클라우드오토스케일링 API 를사용하려면사용자의 apikey 와 signatature 를 API 파라미터로전달해줘야한다. signature 는사용자의 secretkey 와 API 호출시파라미터를이용하여생성해야한다. 이에대한자세한방법은 "1.2 API 요청 " 을참고하기바란다. apikey 와 secretkey 는 ucloud biz 회원에가입하면발급된다. 유클라우드오토스케일링의 CLI 는 API 를사용함에있어입력방법과시그네쳐생성의기능을제공하는툴이다. 사용자는 CLI 를통해서유클라우드오토스케일링서비스를더욱편하게이용할수있다. CLI 는윈도우버전과리눅스버전이있는데, 본예제에서는리눅스버전위주로설명한다.(CLI 설치방법 ) 모든시나리오는시나리오의실행을위한 API 와 CLI 입력예제를포함한다. 각시나리오는 API 를 기본으로설명되며같이사용하는괄호에 API 에해당하는 CLI 명령어를표기한다. 시그니쳐와 apikey 는사용자가 API 를사용하기위해서명령어를요청할때 1.2 의방식으로 시그네쳐를생성해야한다. 또한모든예제의응답은 XML 형식 ( 서비스기본설정, 옵션으로 JSON 형식지원 ) 으로반환되도록설정한다. 시나리오는다음과같다. 유클라우드오토스케일링서비스의기본시나리오 오토스케일링그룹의변경사항을이메일로전송받는시나리오 정책수행시나리오 11
2.1 오토스케일링의기본시나리오 사용자는여러가지방법으로유클라우드오토스케일링서비스를활용할수있다. 예를들면, 운영하는가상머신의수를일정하게유지하거나일정한패턴으로가상머신의수를늘리거나줄일수있다. 사용자가어떤방법으로유클라우드오토스케일링서비스를활용하던지간에기본적으로거쳐야하는과정들이있다. 이시나리오는사용자가유클라우드오토스케일링서비스를이용하기위해기본적으로익혀야할예제를설명한다. 이시나리오에서다음의유클라우드오토스케일링서비스의 API 를사용한다. createlaunchconfiguration(create-launch-configuration) listlaunchconfigurations(list-launch-configurations) createautoscalinggroup(create-auto-scaling-group) listautoscalinggroups(list-auto-scaling-groups) listautoscalinginstances(list-auto-scaling-instances) 12
2.1.1 구동설정생성 구동설정은유클라우드오토스케일링서비스가 ucloud server 에 VM 인스턴스를생성할때사용하는템플릿이다. 이템플릿은오토스케일링으로생성되는 VM 인스턴스를구동하기위해필요한정보를포함한다. 아래예제에서사용자는 createlaunchconfiguration API(create-launchconfiguration) 를사용한다. createlaunchconfiguration(create-launch-configuration) API 의필수파라미터는 LaunchConfigurationName, TemplateId, ServiceOfferingId 이고다음과같이설정한다. TemplateId, ServiceOfferingId, DiskOfferingId 파라미터들은 ucloud server 의 API 가이드를확인한다. LaunchConfigurationName : MyLaunchConfig TemplateId : b1c8383a-de6e-425f-ba18-12cadad827d3 ServiceOfferingId : c504e367-20d6-47c6-a82c-183b12d357f2 DiskOfferingId : 87c0a6f6-c684-4fbe-a393-d8412bcf788d HTTP 요청쿼리는다음과같다. ${API_URL}? command=createlaunchconfiguration &launchconfigurationname=mylaunchconfig &templateid=b1c8383a-de6e-425f-ba18-12cadad827d3 &serviceofferingid=c504e367-20d6-47c6-a82c-183b12d357f2 &diskofferingid=87c0a6f6-c684-4fbe-a393-d8412bcf788d &response=xml&apikey=${apikey}&signature=${signature} CLI 를이용한명령어는다음과같다../create-launch-configuration --launch-configuration-name MylaunchConfig --template-id b1c8383a-de6e- 425f-ba18-12cadad827d3 --service-offering-id c504e367-20d6-47c6-a82c-183b12d357f2 --disk-offering-id 87c0a6f6-c684-4fbe-a393-d8412bcf788d 실행결과는 HTTP 응답코드가 200 이면정상적으로구동설정이생성됐음을의미하고다른결과는 에러가발생했음을의미한다. 13
2.1.2 생성된구동설정확인 앞의예제에서생성한 "MylaunchConfig" 구동설정은 listlaunchconfigurations(list-launchconfigurations) API 를이용하여확인할수있다. listlaunchconfigurations(list-launch-configurations) API 의필수파라미터는없고, 아무입력이 없으면사용자의모든구동설정들을보여준다. 본예제에서는위에서생성한 "MylaunchConfig" 를 확인하기위하여파라미터로 LaunchConfigurationNames 를설정한다. LaunchConfigurationNames.member.N : MylaunchConfig HTTP 요청쿼리는다음과같다. ${API_URL}? command=listlaunchconfigurations &launchconfigurationnames.member.1=mylaunchconfig &response=xml&apikey=${apikey}&signature=${signature} CLI 를이용한명령어는다음과같다../list-launch-configurations --launch-configuration-names MylaunchConfig 실행결과는다음과같다. 구동설정을생성하면생성시간과구동설정의자원이름이추가로 부여된다. <?xml version="1.0" encoding="utf-8" standalone="yes"?> <listlaunchconfigurationsresponse> <count>1</count> <launchconfigurations> <launchconfiguration> <launchconfigurationname>mylaunchconfig</launchconfigurationname> <launchconfigurationurn>urn:ucloud:uas:m1234:launchconfigurationname/mylaunchconfig</launchconfigura tionurn> <serviceofferingid>c504e367-20d6-47c6-a82c-183b12d357f2</serviceofferingid> <diskofferingid>87c0a6f6-c684-4fbe-a393-d8412bcf788d</diskofferingid> <templateid>b1c8383a-de6e-425f-ba18-12cadad827d3</templateid> <createdtime>2013-02-01t12:00:00</createdtime> </launchconfiguration> </launchconfigurations> <nexttoken>1</nexttoken> <responsemetadata> <requestid>5b5190f0-f3a8-448f-afc2-b1fa53c8be7a</requestid> </responsemetadata> </listlaunchconfigurationsresponse> 14
2.1.3 오토스케일링그룹생성 앞의예제에서생성한구동설정은오토스케일링그룹의핵심요소이다. 이번예제에서는앞에서 생성한구동설정을이용하여오토스케일링그룹을생성한다. 아래예제에서사용자는 createautoscalinggroup(create-auto-scaling-group) API 를사용한다. createautoscalinggroup(create-auto-scaling-group) API 의필수파라미터는 AutoScalingGroupName, AvailabilityZones.member.N, LaunchConfigurationName, MaxSize, MinSize 이고다음과같이설정한다. AutoScalingGroupName : MyGroup AvailabilityZones.member.1 : 9845bd17-d438-4bde-816d-1b12f37d5080 launchconfigurationname : MylaunchConfig MaxSize : 2 MinSize : 1 HTTP 요청쿼리는다음과같다. ${API_URL}? command=createautoscalinggroup &autoscalinggroupname=mygroup &availabilityzones.member.1=9845bd17-d438-4bde-816d-1b12f37d5080 &launchconfigurationname=mylaunchconfig &maxsize=2 &minsize=1 &response=xml&apikey=${apikey}&signature=${signature} CLI 를이용한명령어는다음과같다../create-auto-scaling-group --auto-scaling-group-name MyGroup --availability-zones 9845bd17-d438-4bde- 816d-1b12f37d5080 --launch-configuration-name MylaunchConfig --max-size 2 --min-size 1 실행결과는 HTTP 응답코드가 200 이면정상적으로오토스케일링그룹이생성됐음을의미하고 다른결과는에러가발생했음을의미한다. 15
2.1.4 생성된오토스케일링그룹확인 앞의예제에서생성한 "MyGroup" 오토스케일링그룹은 listautoscalinggroups(list-auto-scalinggroups) API 를이용하여확인할수있다. listautoscalinggroups(list-auto-scaling-groups) API 의필수파라미터는없고, 아무입력이없으면 사용자의모든오토스케일링그룹들을보여준다. 본예제에서는위에서생성한 "MyGroup" 을 확인하기위하여파라미터로 AutoScalingGroupNames 를설정한다. AutoScalingGroupNames.member.N : MyGroup HTTP 요청쿼리는다음과같다. ${API_URL}? command=listautoscalinggroups &autoscalinggroupnames.member.1=mygroup &response=xml&apikey=${apikey}&signature=${signature} CLI 를이용한명령어는다음과같다../list-auto-scaling-groups --auto-scaling-group-names MyGroup 실행결과는다음과같다. 오토스케일링그룹을생성하면오토스케일링그룹의자원이름이추가로 부여된다. DesiredCapacity 를입력하지않을경우 MinSize 값으로자동으로설정된다. 그리고 instanceid 는 ucloud server 에서부여된다.?xml version="1.0" encoding="utf-8" standalone="yes"?> <listautoscalinggroupsresponse> <count>1</count> <autoscalinggroups> <autoscalinggroup> <autoscalinggroupname>mygroup</autoscalinggroupname> <autoscalinggroupurn>urn:ucloud:uas:m1234:autoscalinggroupname/mygroup</autoscalinggroupurn> <launchconfigurationname>mylaunchconfig</launchconfigurationname> <availabilityzones> <availabilityzone>9845bd17-d438-4bde-816d-1b12f37d5080</availabilityzone> </availabilityzones> <minsize>1</minsize> <maxsize>2</maxsize> <desiredcapacity>1</desiredcapacity> <instances> <instance> <instanceid>534df561-729f-4f97-bce8-b171b37bd8e9</instanceid> <launchconfigurationname>mylaunchconfig</launchconfigurationname> <lifecyclestate>inservice</lifecyclestate> </instance> 16
</instances> </autoscalinggroup> </autoscalinggroups> <nexttoken>-1</nexttoken> <responsemetadata> <requestid>c2dfd3b0-5b78-4000-b5f8-8299db9067d8</requestid> </responsemetadata> </listautoscalinggroupsresponse> 17
2.1.5 오토스케일링으로생성된 VM 인스턴스확인 앞의예제에서생성한오토스케일링그룹 "MyGroup" 에속한 VM 인스턴스들은 listautoscalinggroupinstances(list-auto-scaling-instances) API 를이용하여확인할수있다. listautoscalinggroupinstances(list-auto-scaling-instances) API 의필수파라미터는없고, 아무입력이 없으면 autoscaling 서비스의구동설정을이용하여생성된모든 VM 인스턴스들을보여준다. HTTP 요청쿼리는다음과같다. ${API_URL}? command=listautoscalinginstances &response=xml&apikey=${apikey}&signature=${signature} CLI 를이용한명령어는다음과같다../list-auto-scaling-instances 실행결과는다음과같다. 결과값에서아이디가 "534df561-729f-4f97-bce8-b171b37bd8e9" 인 VM 을 확인할수있다. <?xml version="1.0" encoding="utf-8" standalone="yes"?> <listautoscalinginstancesresponse> <count>1</count> <autoscalinginstances> <autoscalinginstance> <autoscalinggroupname>mygroup</autoscalinggroupname> <instanceid>534df561-729f-4f97-bce8-b171b37bd8e9</instanceid> <launchconfigurationname>mylaunchconfig</launchconfigurationname> <lifecyclestate>inservice</lifecyclestate> </autoscalinginstance> </autoscalinginstances> <nexttoken>-1</nexttoken> <responsemetadata> <requestid>c2dfd3b0-5b78-4000-b5f8-8299db9067d8</requestid> </responsemetadata> </listautoscalinginstancesresponse> 18
2.2 오토스케일링그룹의변경사항을이메일로전송 받는시나리오 앞에시나리오대로오토스케일링그룹을생성했다면, 사용자는그그룹의변화를알고싶을것이다. 이번시나리오는그룹의변화정보를 ucloud message 서비스를이용하여이메일로받아보는것이다. 이시나리오는 ucloud message 서비스에이메일토픽이있다고가정한다. 사용자는 ucloud message 서비스에서토픽을생성한후생성된토픽의 URN 을사용해야한다.(ucloud message API 참조 ) 이시나리오에서다음의유클라우드오토스케일링서비스의 API 를사용한다. listautoscalingnotificationtypes(list-auto-scaling-notification-types) putnotificationconfiguration(put-notification-configuration) listnotificationconfiguration(list-notification-configuration) deletenotificationconfiguration(delete-notification-configuration) 19
2.2.1 오토스케일링그룹의알림항목조회 listautoscalingnotificationtypes(list-auto-scaling-notification-types) API 를통하여설정가능한 알림목록을확인한다. HTTP 요청쿼리는다음과같다. ${API_URL}? command=listautoscalingnotificationtypes &response=xml&apikey=${apikey}&signature=${signature} CLI 를이용한명령어는다음과같다../list-auto-scaling-notification-types 실행결과는다음과같다. <?xml version="1.0" encoding="utf-8" standalone="yes"?> <listautoscalingnotificationtypesresponse> <autoscalingnotificationtypes> <autoscalingnotificationtype>instanceterminate</autoscalingnotificationtype> <autoscalingnotificationtype>instanceterminateerror</autoscalingnotificationtype> <autoscalingnotificationtype>testnotification</autoscalingnotificationtype> <autoscalingnotificationtype>instancelauncherror</autoscalingnotificationtype> <autoscalingnotificationtype>instancelaunch</autoscalingnotificationtype> </autoscalingnotificationtypes> <responsemetadata> <requestid>9d6bdeac-87bd-40b8-9141-fa734a44ca1d</requestid> </responsemetadata> </listautoscalingnotificationtypesresponse> 20
2.2.2 알림설정생성 특정오토스케일링그룹의변화를통보받기위해서그그룹에 putnotificationconfiguration(putnotification-configuration) API 를이용하여알림을설정한다. 다음은앞에서생성한 "MyGroup" 에위에서조회한다섯가지알림을설정하는예제이다. putnotificationconfiguration(put-notification-configuration) API 의필수파라미터는 AutoScalingGroupName, NotificationTypes.member.N, TopicURN 이다. 사용자는 ucloud message 서비스에토픽을생성한후생성된토픽의 URN 을입력해야한다. AutoScalingGroupName : MyGroup NotificationTypes.member.N : InstanceTerminate, InstanceTerminateError, TestNotification, InstanceLaunchError, InstanceLaunch TopicURN : urn:ucloud:umsg:testuser:instancetopic HTTP 요청쿼리는다음과같다. ${API_URL}? command=putnotificationconfiguration &autoscalinggroupname=mygroup ¬ificationtypes.member.1=instancelaunch ¬ificationtypes.member.2=instancelauncherror ¬ificationtypes.member.3=instanceterminate ¬ificationtypes.member.4=instanceterminateerror ¬ificationtypes.member.5=testnotification &topicurn=urn:ucloud:umsg:testuser:instancetopic &response=xml&apikey=${apikey}&signature=${signature} CLI 를이용한명령어는다음과같다../put-notification-configuration --auto-scaling-group-name MyGroup --notification-types InstanceLaunch InstanceLaunchError InstanceTerminate InstanceTerminateError TestNotification --topic-urn urn:ucloud:umsg:testuser:instancetopic 실행결과는 HTTP 응답코드가 200 이면정상적으로알림설정이생성됐음을의미하고다른결과는 에러가발생했음을의미한다. 21
2.2.3 알림설정생성확인 앞의예제에서설정한 "MyGroup" 의알림설정상태는 listnotificationconfigurations(listnotification-configurations) API 를이용하여확인할수있다. listnotificationconfigurations(list-notification-configurations) API 의필수파라미터는없고, 아무입력이없으면사용자의모든오토스케일링그룹의알림설정들을보여준다. 본예제에서는위에서설정한 "MyGroup" 의알림설정을확인하기위하여파라미터로 AutoScalingGroupNames 를설정한다. AutoScalingGroupNames.member.N : MyGroup HTTP 요청쿼리는다음과같다. ${API_URL}? command=listnotificationconfigurations &autoscalinggroupnames.member.1=mygroup &response=xml&apikey=${apikey}&signature=${signature} CLI 를이용한명령어는다음과같다../list-notification-configurations --auto-scaling-group-names MyGroup 실행결과는다음과같다. <?xml version="1.0" encoding="utf-8" standalone="yes"?> <listnotificationconfigurationsresponse> <count>1</count> <notificationconfigurations> <notificationconfiguration> <autoscalinggroupname>mygroup</autoscalinggroupname> <notificationtypes> <notificationtype>instanceterminate</notificationtype> <notificationtype>instanceterminateerror</notificationtype> <notificationtype>testnotification</notificationtype> <notificationtype>instancelauncherror</notificationtype> <notificationtype>instancelaunch</notificationtype> </notificationtypes> <topicurn>urn:ucloud:umsg:testuser:instancetopic</topicurn> </notificationconfiguration> </notificationconfigurations> <nexttoken>-1</nexttoken> <responsemetadata> <requestid>9d6bdeac-87bd-40b8-9141-fa734a44ca1d</requestid> </responsemetadata> </listnotificationconfigurationsresponse> 22
23
2.2.4 알림설정변경 알림이설정된오토스케일링그룹의알림설정항목을변경하거나 ucloud message 토픽의변경이필요할때는 putnotificationconfiguration(put-notification-configuration) API 를이용한다. 위의예제에서설정한 "MyGroup" 알림중 "TestNotification" 에대한알림을받지않고싶을때는해당그룹의알림설정을수정해야한다. 여기서주의할점은알림설정을수정할때도생성할때와같이모든파라미터를입력해야한다는것이다. AutoScalingGroupName : MyGroup NotificationTypes.member.N : InstanceTerminate, InstanceTerminateError, InstanceLaunchError, InstanceLaunch TopicURN : urn:ucloud:umsg:testuser:instancetopic HTTP 요청쿼리는다음과같다. ${API_URL}? command=putnotificationconfiguration &autoscalinggroupname=mygroup ¬ificationtypes.member.1=instancelaunch ¬ificationtypes.member.2=instancelauncherror ¬ificationtypes.member.3=instanceterminate ¬ificationtypes.member.4=instanceterminateerror &topicurn=urn:ucloud:umsg:testuser:instancetopic &response=xml&apikey=${apikey}&signature=${signature} CLI 를이용한명령어는다음과같다../put-notification-configuration --auto-scaling-group-name MyGroup --notification-types InstanceLaunch InstanceLaunchError InstanceTerminate InstanceTerminateError --topic-urn urn:ucloud:umsg:testuser:instancetopic 실행결과는 HTTP 응답코드가 200 이면정상적으로알림설정이수정됐음을의미하고다른결과는 에러가발생했음을의미한다. 24
2.2.5 알림설정삭제 특정오토스케일링그룹에설정된알림을삭제하기위해서 deletenotificationconfiguration(deletenotification-configuration) API 를사용한다. 앞의예제에서설정한 "MyGroup" 의알림을삭제하기위해서는 deletenotificationconfiguration(delete-notification-configuration) API 의필수파라미터인 AutoScalingGroupName, TopicURN 을입력한다. AutoScalingGroupName : MyGroup TopicURN : urn:ucloud:umsg:testuser:instancetopic HTTP 요청쿼리는다음과같다. ${API_URL}? command=deletenotificationconfiguration &autoscalinggroupname=mygroup &topicurn=urn:ucloud:umsg:testuser:instancetopic &response=xml&apikey=${apikey}&signature=${signature} CLI 를이용한명령어는다음과같다../delete-notification-configuration --auto-scaling-group-name MyGroup --topic-urn urn:ucloud:umsg:testuser:instancetopic 실행결과는 HTTP 응답코드가 200 이면정상적으로알림설정이삭제됐음을의미하고다른결과는 에러가발생했음을의미한다. 25
2.3 정책수행시나리오 앞의시나리오를통해사용자는오토스케일링그룹을생성하고오토스케일링그룹의변화를통보받을수있게됐다. 이번시나리오는오토스케일링그룹의변화를일으키는방법에대한것이다. 오토스케일링그룹의스케일링은 ucloud watch 의알람을통해스케일링정책이수행되거나미리예약된시간에정해진정책에의하여수행된다. 또한사용자가직접그룹의스케일링을일으킬수도있다. 이번시나리오를통해사용자는다음의유클라우드오토스케일링서비스의 API 를경험할수있다. putscalingpolicy listpolicies executepolicy deletepolicy putscheduledupdategroupaction listscheduledactions deletescheduledaction 26
2.3.1 ucloud watch 알람을통한정책수행 ucloud watch 서비스의알람은모니터링하는메트릭의값에따라 OK, ALARM, INSUFFICIENT_DATA 상태를갖고, 상태의변화에대해알람액션을수행한다.(ucloud watch 알람참조 ) 이때수행할수있는액션중에유클라우드오토스케일링서비스의정책 (Policy) 을입력하면, 해당알람의상태변화에따라서오토스케일링그룹의정책이수행된다. 사용자는 ucloud watch 알람을사용하기위해 ucloud watch 알람을생성할때, 액션에오토 스케일링정책 URN 을입력해야한다. 이번예제는 ucloud watch 알람에입력할오토스케일링정책을생성하고조회한다. 오토스케일링 정책은 putscalingpolicy(put-scaling-policy) API 를이용하여생성수정하며, listpolicies(list-policies) API 로조회한다. putscalingpolicy(put-scaling-policy) API 의필수입력파라미터는 AdjustmentType, AutoScalingGroupName, PolicyName, ScalingAdjustment 이고, 앞의시나리오에서생성한 "MyGroup" 의 VM 인스턴스의개수를 0 개로변경하는정책을생성하는예제이다. AutoScalingGroupName : MyGroup PolicyName : MyPolicy AdjustmentType : ExactCapacity ScalingAdjustment : 0 HTTP 요청쿼리는다음과같다. ${API_URL}? command=putscalingpolicy &adjustmenttype=exactcapacity &autoscalinggroupname=mygroup &scalingadjustment=0 &policyname=mypolicy &response=xml&apikey=${apikey}&signature=${signature} CLI 를이용한명령어는다음과같다../put-scaling-policy --auto-scaling-group-name MyGroup --policy-name MyPolicy --adjustment-type ExactCapacity --scaling-adjustment 0 실행결과는 HTTP 응답코드가 200 이면정상적으로정책이생성됐음을의미하고다른결과는 에러가발생했음을의미한다. 27
사용자가생성한정책은 listpolicies(list-policies) API 를이용하여조회한다. listpolicies(list-policies) API 의필수입력파라미터는없지만, 앞에서생성한정책을조회하기위하여 AutoScalingGroupName 파라미터를입력하여조회한다. AutoScalingGroupName : MyGroup HTTP 요청쿼리는다음과같다. ${API_URL}? command=listpolicies &autoscalinggroupname=mygroup &response=xml&apikey=${apikey}&signature=${signature} CLI 를이용한명령어는다음과같다../list-policies --auto-scaling-group-name MyGroup 실행결과는다음과같다. 정책을생성하면오토스케일링정책리소스이름이자동으로생성되는데, 이리소스이름은 ucloud watch 의알람의액션을설정할때입력해야한다. <?xml version="1.0" encoding="utf-8" standalone="yes"?> <listpoliciesresponse> <count>1</count> <scalingpolicies> <scalingpolicy> <policyname>mypolicy</policyname> <policyurn>urn:ucloud:uas:m1234:autoscalinggroupname/mygroup:policyname/mypolicy</policyurn> <autoscalinggroupname>mygroup</autoscalinggroupname> <adjustmenttype>exactcapacity</adjustmenttype> <scalingadjustment>0</scalingadjustment> </scalingpolicy> </scalingpolicies> <nexttoken>-1</nexttoken> <responsemetadata> <requestid>9d6bdeac-87bd-40b8-9141-fa734a44ca1d</requestid> </responsemetadata> </listpoliciesresponse> 28
2.3.2 사용자가직접정책수행 사용자는 putscalingpolicy(put-scaling-policy) API 로생성된정책을 executepolicy(execute-policy) API 를이용하여임의로수행할수있다. executepolicy(execute-policy) API 의필수입력파라미터는 AutoScalingGroupName 과 PolicyName 이고다음은이전예제에서생성한정책을임의로수행하는예제이다. AutoScalingGroupName : MyGroup PolicyName : MyPolicy HTTP 요청쿼리는다음과같다. ${API_URL}? command=executepolicy &autoscalinggroupname=mygroup &policyname=mypolicy &response=xml&apikey=${apikey}&signature=${signature} CLI 를이용한명령어는다음과같다../execute-policy --auto-scaling-group-name MyGroup --policy-name MyPolicy 실행결과는 HTTP 응답코드가 200 이면정상적으로정책이수행됐음을의미하고다른결과는 에러가발생했음을의미한다. 29
2.3.3 일정에따른정책수행 유클라우드오토스케일링서비스는미래의특정한시간에스케일링이가능하게하는기능을 지원한다. 사용자는 " 매주월요일오전 9 시에 VM 인스턴스의수를 5 개로설정 " 과같이스케일링을 스케쥴할수있다. 스케쥴의범위는 CRON 문법이표현할수있는시간범위에서가능하다. 이스케쥴정책은 putscheduledupdategroupaction(put-scheduled-update-group-action) API 를 이용하여생성수정하며, listscheduledactions(list-scheduled-actions) API 를이용하여조회하고, deletescheduledaction(delete-scheduled-action) API 를이용하여삭제한다. 이번예제는 "MyGroup" 의 VM 을매주월요일오전 9 시에 5 개로설정하는스케쥴액션을살펴본다. putscheduledupdategroupaction(put-scheduled-update-group-action) API 의필수입력파라미터는 AutoScalingGroupName 과 ScheduledActionName 두가지이지만, 이두가지만입력하면에러가발생한다. StartTime 이나 Recurrence 를반드시설정해줘야한다. AutoScalingGroupName : MyGroup ScheduledActionName : MyScheduledAction DesiredCapacity : 5 Recurrence : 0 9 * * 1 HTTP 요청쿼리는다음과같다. ${API_URL}? command=putscheduledupdategroupaction &autoscalinggroupname=mygroup &desiredcapacity=5 &recurrence=0 9 * * 1 &scheduledactionnames=myscheduledaction &response=xml&apikey=${apikey}&signature=${signature} CLI 를이용한명령어는다음과같다../put-scheduled-update-group-action --auto-scaling-group-name MyGroup --scheduled-action-name MyScheduledAction --desired-capacity 5 --recurrence "0 9 * * 1" 실행결과는 HTTP 응답코드가 200 이면정상적으로스케쥴정책이생성됐음을의미하고다른 결과는에러가발생했음을의미한다. 사용자가생성한스케쥴정책은 listscheduledactions(list-scheduled-actions) API 를이용하여조회한다. listscheduledactions(list-scheduled-actions) API 의필수입력파라미터는없지만, 앞에서생성한정책을조회하기위하여 AutoScalingGroupName 파라미터와 ScheduledActionNames 를입력하여조회한다. 30
AutoScalingGroupName : MyGroup ScheduledActionNames.member.N : MyScheduledAction HTTP 요청쿼리는다음과같다. ${API_URL}? command=listscheduledactions &autoscalinggroupname=mygroup &scheduledactionnames.member.1=myscheduledaction &response=xml&apikey=${apikey}&signature=${signature} CLI 를이용한명령어는다음과같다../list-scheduled-actions --auto-scaling-group-name MyGroup --scheduled-action-names MyScheduledAction 실행결과는다음과같다. <?xml version="1.0" encoding="utf-8" standalone="yes"?> <listscheduledactionsresponse> <count>1</count> <scheduledupdategroupactions> <scheduledupdategroupaction> <scheduledactionname>myscheduledaction</scheduledactionname> <autoscalinggroupname>mygroup</autoscalinggroupname> <desiredcapacity>5</desiredcapacity> <recurrence>0 9 * * 1</recurrence> </scheduledupdategroupaction> </scheduledupdategroupactions> <nexttoken>-1</nexttoken> <responsemetadata> <requestid>9d6bdeac-87bd-40b8-9141-fa734a44ca1d</requestid> </responsemetadata> </listscheduledactionsresponse> 31
3. 개념 클라우드기반으로동작하는어플리케이션에있어서스케일링은비용및자원관리의중요한부분이다. 서비스를제공할때부하가높아지면서버수를늘리거나서버용량을키우게되고, 반대로부하가낮아지면전체적인서버수를줄이거나서버용량을낮추게된다. 이런식으로서버를늘렸다줄이는것을스케일링이라고하는데, 서버의개수를변경하는수평적스케일링과서버의용량을변경하는수직적스케일링으로나누어말할수있다. 수직적스케일링의경우에는스케일링을할때마다서버의설정을바꿔줘야되는번거로움이있겠지만, 수평적스케일링의경우에는단순히서버수를늘리거나줄이면된다. 이런수평적혹은수직적스케일링은상황에따라, 비용, 성능, 인프라에따라결정지어질것이다. 오토스케일링서비스는서버의요구용량을맞춰주기위해클라우드자원을자동으로추가 / 삭제한다. 오토스케일링서비스를사용하면필요에따라자동적으로서버수를늘려주고또최소한의비용만발생되도록서버수를낮춰줄수있다. 이런스케일링작업을자동으로처리해주는것이오토스케일링서비스이며, 이것이오토스케일링서비스의핵심이다. 오토스케일링서비스는시간, 일간, 주간등의주기적인변화나사용량변화에따른수평적스케일링을처리하는데알맞게되어있다. 오토스케일링서비스는트래픽의정확한예측이나자원의사용계획등을수립하는것을자유롭게해준다. 3.1 오토스케일링동작 보통의웹어플리케이션시나리오를보면, 대량의요청을처리하기위해여러개의서버를띄운다. 여러개의서버는 ucloud VM 인스턴스가될것이고, 오토스케일링서비스는이 VM 인스턴스를 생성하고삭제하는일을처리한다. 오토스케일링서비스를사용할때에는 VM 인스턴스들을스케일링하고관리하기위해오토스케일링그룹으로묶는데, 이오토스케일링그룹은인스턴스의최대 / 최소 / 요구용량을가지도록설정된다. 또한, 오토스케일링그룹은 VM 인스턴스를생성하기위해구동설정을사용한다. 구동설정은 VM 인스턴스를생성할때필요한 ServiceOfferingId, TemplateId, DiskOfferingId, VolumeMapping, Userdata 정보를가진다. 오토스케일링그룹과구동설정을생성하고나서스케일링계획을세울필요가있다. 스케일링계획은특정조건에따라변화시킬수도있고스케쥴에따라주기적으로변화시킬수도있다. 스케일링계획에따라바뀌는 VM 인스턴스수는오토스케일링그룹의최대 / 최소용량사이에서변화한다. 보통의안정적인상황에서는최소용량에맞게유지되지만요구용량이설정된경우에는요구용량에맞게유지된다. 이렇게유지되는것은스케일링계획이설정되지않은경우에도마찬가지이다. 오토스케일링서비스는스케일링계획이없이도언제든지직접서버인스턴스수를조절할수있도록지원한다. 32
3.2 개념및용어설명 3.2.1 오토스케일링그룹 오토스케일링그룹은주로 VM 인스턴스들의스케일링을자동화해서관리할목적으로운용되는 논리적그룹이다. 오토스케일링서비스가새로운 VM 인스턴스를생성할때필요한정보들이이곳에 정의되는데대표적으로구동설정, 최대 / 최소 / 요구용량등이있다. 오토스케일링그룹은최소용량 ( 혹은요구요량이있다면요구용량 ) 으로시작하며정의된스케일링 계획에따라 VM 인스턴스를실행 / 삭제한다. 3.2.2 구동설정 오토스케일링그룹내에서 VM 인스턴스를생성할때사용하는설정을정의해놓은템플릿을구동설정이라고한다. 구동설정은 VM 인스턴스를생성할때필요한 ServiceOfferingId, TemplateId, DiskOfferingId, VolumeMapping, Userdata 정보를가진다. 오토스케일링그룹을생성할때반드시구동설정을포함해야한다. 오토스케일링그룹에는하나의구동설정만을포함해야하지만나중에바꿀수있다. 그러나구동설정자체를수정할수는없고, 새로운구동설정을만들고오토스케일링그룹에포함시켜줘야한다. 오토스케일링그룹에새로운구동설정을하면이후에생성되는서버인스턴스들은새로운구동설정에따라생성된다. 하지만, 그전에생생되어있던 VM 인스턴스들의설정이바뀌지는않는다. 3.2.3 알람 ucloud watch 서비스가제공하는알람은, 특정한하나의메트릭을관찰하는개체이다. 이알람은 메트릭의값에따라상태가변하는데다음의세가지상태를가진다. 1. OK 메트릭이주어진경계조건하에존재 2. ALARM 메트릭이주어진경계를벗어남 3. INSUFFICIENT_DATA 메트릭이존재하지않거나데이터가충분하지않음 메트릭을수집하는단위시간, 상태변화의기준이되는변량, 그리고해당상태를연속으로유지하는횟수를지정함으로써이조건이만족되었을때노티피케이션을사용자가전달받거나하나이상의스케일링정책을자동으로수행할수있다. 예컨데알람발생조건에대해다음과같은표현이가능하다. "3 분단위로메트릭을수집했을때, CPU 사용량의평균이 5 회연속으로 90% 를초과하면..." 단, OK 에서 ALARM 과 ALARM 에서 INSUFFICIENT_DATA 로의상태변화만이알람의대상이다. 33
이상에서설명한알람을이용한자동정책수행기능은 ucloud watch 서비스의영역이다. 따라서 스케일링정책설정은오토스케일링서비스를통해야하고, 해당정책의수행조건설정은 ucloud watch 서비스를통해야한다. 3.2.4 오토스케일링정책 ucloud watch 서비스로부터알람이발생했을때오토스케일링서비스에게오토스케일링정책의 수행을요청할수있다. 오토스케일링정책에는해당오토스케일링그룹내의 VM 인스턴스의 개수를조절하는것을기술한다. 3.2.5 가용성존 지역, 물리적으로구분된클라우드데이터센터를개별존 (Zone) 으로하여존간부하분산, 이중화및 DR 구성등의서비스중단없는고가용성서비스환경을지원한다. 각각의존은독립적인네트워크, 파워공조시스템이사용되며지역적으로분리되어홍수, 화재등의위험에서도안전하게서비스를제공할수있다. 3.2.6 로드밸런싱 오토스케일링그룹내의 VM 인스턴스들에부하를분산하기위해로드밸런서를이용할수있다. 로드밸런서는오토스케일링그룹내특정 VM 인스턴스에부하가몰리는것을최소화하기위해들어오는트래픽을여러 VM 인스턴스로분산시켜준다. 로드밸런서를생성하고나서오토스케일링그룹을로드밸런서에할당하면되고, 이로드밸런서가들어오는모든요청을받아들이는시작점이된다. 3.2.7 VM 인스턴스상태 VM 인스턴스는다음의상태를가진다. 1. Pending - 서버인스턴스가생성되는중 2. InService - 서버인스턴스가실행되고있음 3. Terminating - 서버인스턴스를삭제하고있음 4. Terminated - 서버인스턴스가더이상서비스되지않음. 오토스케일링서비스는서버 인스턴스가삭제되면바로해당정보를지워버림. 5. Quarantined - 서버인스턴스가사용중이지않음. 오토스케일링 VM 인스턴스를조회하는 listautoscalinginstances 명령을사용해서이상태를확인할 수있다. 34
35
3.2.8 스케일링액티비티 스케일링액티비티는오토스케일링그룹의 VM 인스턴스수가변경된다거나, 오작동하는인스턴스를대체하는등오토스케일링그룹에변경을가하는일련의프로세스를뜻한다. 스케일링액티비티를유발하는오토스케일링그룹의변경은주로알람에의한트리거링시스템, 혹은사용자의명시적인 API 호출을통한다. 스케일링액티비티조회를통해확인할수있다. 3.2.9 쿨다운 기본쿨다운은스케일링액티비티가종료되고나서다음스케일링액티비티가시작될수있을 때까지의시간 ( 초 ) 이다. 오토스케일링그룹을생성하거나수정할때기본쿨다운값을설정할수 있다. 알람을통해수행되는오토스케일링정책에도쿨다운을설정할수있다. 오토스케일링정책에 쿨다운이설정되어있는경우에는오토스케일링그룹의기본쿨다운대신사용된다. 오토스케일링 정책에쿨다운이설정되어있지않으면오토스케일링그룹의기본쿨다운이사용된다. 스케일링액티비티를수행할때쿨다운값을무시할수도있다. 이옵션을사용하면쿨다운시간 내라도오토스케일링그룹의크기를바꿀수있다. 3.2.10 오토스케일링 VM 인스턴스삭제 오토스케일링서비스가서버인스턴스를삭제할때에는오래된서버인스턴스부터삭제한다. 3.2.11 스케일링계획 오토스케일링서비스는오토스케일링그룹을설정하기위한다양한방법을제공한다. 자동으로용량을유지 오토스케일링서비스는자동으로항상최소용량 ( 혹은요구용량 ) 으로서버인스턴스수를 유지해준다. 수동스케일링 가장기본적인방법으로오토스케일링그룹의최대 / 최소 / 요구용량을설정하기만하면된다. 오토 스케일링서비스는용량을맞춰주기위해자동으로서버인스턴스를생성하거나삭제하는작업을 처리한다. 36
예약을통한스케일링 오토스케일링그룹내서버인스턴스의개수가늘거나줄어들필요가있는시점을알고있다면 스케쥴링을통해스케일링을할수있다. 이는정해진시간이나주기에자동적으로예약액션을 진행할수있다는뜻이다. 필요할때스케일링 좀더고급스러운스케일링방법으로특정상황에따라알람을통해스케일링정책을수행하는것이다. 보통은상황에따라인스턴스를늘리는스케일링정책과줄이는정책두가지를쌍으로두어야할것이다. CPU 사용량이높아서서버인스턴스를늘렸다면 CPU 사용량이낮아지면서버인스턴스를줄이는게맞다. 3.2.12 중지가능한프로세스 긴급한상황이나오토스케일링그룹을수동으로관리하고자하는상황에서는자동으로 스케일링되는프로세스를중단해야될경우가있다. 언제든지스케일링프로세스를중지할수있으며, 상황이바뀌었을때바로스케일링프로세스를재게할수도있다. 만약모든스케일링프로세스를중지시키면이후의스케일링액티비티는실행되지않는다. 다만이미동작중인스케일링액티비트는정상적으로실행된다. 이경우에도오토스케일링그룹의요구용량을바꿀수는있지만, 새로운서버인스턴스를생성하거나기존서버인스턴스가삭제되는일은수반되지않는다. 다음은중지가능한오토스케일링프로세스타입이다. 하나이상의프로세스타입을중지할수있다. 1. Launch - 새로운서버인스턴스를생성하는작업이무시된다. 2. Terminate - 서버인스턴스를삭제하는작업이무시된다. 3. AlarmNotification - 알람을통한오토스케일링정책수행이무시된다. 4. ScheduledActions - 예약실행되는액션이무시된다. 5. AddToLoadBalancer - 로드밸런서에서버인스턴스를할당하는작업이무시된다. 37
4. 명령어 이장에서는명령어와명령어파라미터정보및명령에대한응답을기술한다. 각명령어들은다음과 같은구조로설명된다. 설명 : 개별명령어의주요기능을간략하게기술한다. 제약사항 : 명령어사용시고려해야할제약사항을기술한다. 명령어파라미터 : 파라미터이름, 파라미터설명, 필수입력사항의여부를표로나열한다. 파라미터설명부분에해당파라미터의데이터타입과제약사항을포함한다. 각명령어는아래의공통파라미터를포함한다. 응답결과항목 : 이름, 설명, 데이터타입을표로나열한다. 에러 : 명령어가반환하는에러에대해, 에러코드와해당에러코드에대한설명을표로나열한다. 명령어공통으로반환되는에러는 1.3.3 에있기때문에개별명령어설명부분에는별도로기술하지않는다. Example : 명령어의이해를돕기위해샘플 HTTP 요청쿼리와샘플 xml 응답을기술한다. Example 에사용하는 ${variable} 는변수를나타내는부분으로 ${API_URL} 은 (https://api.ucloudbiz.olleh.com/autoscaling/v1/client/api?) 이고, ${APIKey} 와 ${Signature} 는 "1.2 API 요청 " 을참고하시오. 공통파라미터 Name apikey signature Description Required Yes Yes response xml or json Yes 공통에러 Error Code Status Description 401 Authentication error Bad signature, missing API keys or no permission to execute command 430 Malformed parameter The query string is malformed 431 Param error A request parameter does not comply with the associated constraints 434 Invalid parameter Parameters that must not be used together were used 38
combination 435 Missing parameter together An input parameter that is mandatory for processing the request is not supplied 436 Invalid command The command or operation requested is invalid 437 Missing command The request is missing a command or operation parameter 530 Internal error An internal service error occured 4.1 createautoscalinggroup 4.1.1 설명 새로운오토스케일링그룹을만든다. 4.1.2 제약사항 4.1.3 명령어파라미터 Name Description Required AutoScalingGroupName AvailabilityZones.member.N DefaultCooldown DesiredCapacity 오토스케일링그룹의이름. 타입 : String 길이제한 : 최소 1. 최대 255. VM 인스턴스를생성할 Availability Zone 의리스트. 타입 : String 길이제한 : 최소한 1 개의리스트아이템. 스케일링액티비티가끝나고 ( 트리거와연관된 ) 다른 스케일링액티비티가시작할수있는사이의초단위시간. 타입 : Integer 오토스케일링그룹에서동작해야할 VM 인스턴스의개수. 주어지지않으면 MinSize 값을가지고 MinSize 와 MaxSize 사이에있지않으면둘중가까운값을가진다. 타입 : Integer Yes Yes No No `DesiredCapacity` 는모니터링결과에의한트리거링또는 관련함수호출에의해변경되며, 오토스케일링서비스는 39
HealthCheckGracePeriod LaunchConfigurationName 현재인스턴스의개수를이값에맞추기위해스케일인또는아웃을수행한다. 물론 `CreateAutoScalingGroup`의파라미터로주어진경우초기에구동할인스턴스의수를의미한다. VM 인스턴스를만든후오토스케일링서비스가해당인스턴스에헬쓰체크를시작하기까지초단위유예기간. 타입 : Integer 이그룹의인스턴스를만들때사용할시작설정의이름. 타입 : String 길이제한 : 최소 1. 최대 255. No Yes LoadBalancers.member.N 사용할로드밸런서리스트. 타입 : LoadBalancer 리스트 (*)LoadBalancer 파라미터는다음의서브파라미터로구성된다. - LoadBalancerId : 로드밸런서아이디. 로드밸런서타입이 WAF 일경우, WafId 를사용한다. String 타입 - LoadBalancerType : 로드밸런서타입. RVM or MPX or WAF. String 타입 - IpAddressId : 로드밸런서타입이 MPX 일경우, VM 이사용할 Public Ip 주소의아이디. Integer 타입 - PublicPortRangeFrom : 로드밸런서타입이 MPX 일경우, 포트포워딩에필요한포트범위의시작. Integer 타입 - PublicPortRangeTo : 로드밸런서타입이 MPX 일경우, 포트포워딩에필요한포트범위의마지막. Integer 타입 No - PrivatePort : 로드밸런서타입이 MPX 일경우, VM 의서비스포트. Integer 타입 - WebServerPort : 로드밸런서타입이 WAF 일경우, VM 의서비스포트. Integer 타입 - ProxyPort1RangeFrom : 로드밸런서타입이 WAF 일경우, WAF VM1 에연결할포트범위의시작. Integer 타입 - ProxyPort1RangeTo : 로드밸런서타입이 WAF 일경우, WAF VM1 에연결할포트범위의마지막. Integer 타입 - ProxyPort2RangeFrom : 로드밸런서타입이 WAF 일경우, WAF VM2 에연결할포트범위의시작. Integer 타입 - ProxyPort2RangeTo : 로드밸런서타입이 WAF 일경우, WAF VM2 에연결할포트범위의마지막. Integer 타입 - SslMode : 로드밸런서타입이 WAF 일경우, SSL 모드. disabled or sslthru or sslterm. String 타입 40
NetworkIds.member.N MaxSize MinSize 모든타입에대해 LoadBalancerId 와 LoadBalancerType 은필수값이다. LoadBalancerType 이 RVM 일경우다른파라미터는필요하지않다. LoadBalancerType 이 MPX 나 WAF 일경우해당파라미터의값을입력해야한다. 이그룹의인스턴스를만들때사용할 network ID 의리스트. 타입 : String 미리생성된 NAS 를연동하기위해서는 networkids.member.1 에기본 networkid 값을입력하고, networkids.member.2 에 NAS 의 networkid 를입력하여야한다. 기본 networkid 와 NAS shared networkid 값은 server API 군의 listnetworks API 를호출하여값을확인할수있다. networkids 에적힌순서대로 eth0, eth1,... 이생성되므로순서가중요한의미를가진다. 이그룹 VM 인스턴스의최대개수. 타입 : Integer 이그룹 VM 인스턴스의최소개수. 타입 : Integer No Yes Yes 4.1.4 응답 정상적으로오트스케일링그룹이생성되면 http 응답코드 200 ok 가반환된다. 4.1.5 에러 Error Description HTTP Status Code Error Code AlreadyExists 해당이름의오토스케일링그룹이이미존재. 400 1306 LimitExceeded 이사용자가만들수있는오토스케일링그룹의최대 개수를넘어섬. 400 1307 4.1.6 Example Sample Request 1 간단한 AutoScalingGroup 생성 41
${API_URL}? command=createautoscalinggroup &autoscalinggroupname=test-asg-4 &availabilityzones.member.1=9845bd17-d438-4bde-816d-1b12f37d5080 &launchconfigurationname=webserver &maxsize=2 &minsize=1 &response=xml&apikey=${apikey}&signature=&{signature} Sample Request 2 RVM LoadBalancer 를포함한 AutoScalingGroup 생성 ${API_URL}? command=createautoscalinggroup &autoscalinggroupname=test-asg-rvm &availabilityzones.member.1=9845bd17-d438-4bde-816d-1b12f37d5080 &launchconfigurationname=webserver &maxsize=2 &minsize=1 &loadbalancers.member.1.loadbalancerid=87c0a6f6-c684-4fbe-a393-d8412bcf788d &loadbalancers.member.1.loadbalancertype=rvm &response=xml&apikey=${apikey}&signature=&{signature} Sample Request 3 MPX LoadBalancer 를포함한 AutoScalingGroup 생성 ${API_URL}? command=createautoscalinggroup &autoscalinggroupname=test-asg-mpx &availabilityzones.member.1=9845bd17-d438-4bde-816d-1b12f37d5080 &launchconfigurationname=webserver &maxsize=2 &minsize=1 &loadbalancers.member.1.loadbalancerid=234 &loadbalancers.member.1.loadbalancertype=mpx &loadbalancers.member.1.ipaddressid=9d64c8a6-792f-42bf-ae38-26b139544c82 &loadbalancers.member.1.publicportrangefrom=10000 &loadbalancers.member.1.publicportrangeto=10020 &loadbalancers.member.1.privateport=80 &response=xml&apikey=${apikey}&signature=&{signature} Sample Request 4 WAF LoadBalancer 를포함한 AutoScalingGroup 생성 ${API_URL}? command=createautoscalinggroup &autoscalinggroupname=test-asg-waf &availabilityzones.member.1=9845bd17-d438-4bde-816d-1b12f37d5080 &launchconfigurationname=webserver &maxsize=2 &minsize=1 &loadbalancers.member.1.loadbalancerid=b1c8383a-de6e-425f-ba18-12cadad827d3 &loadbalancers.member.1.loadbalancertype=waf 42
&loadbalancers.member.1.webserverport=80 &loadbalancers.member.1.proxyport1rangefrom=10000 &loadbalancers.member.1.proxyport1rangeto=10020 &loadbalancers.member.1.proxyport2rangefrom=10030 &loadbalancers.member.1.proxyport2rangeto=10040 &loadbalancers.member.1.sslmode=disabled &response=xml&apikey=${apikey}&signature=&{signature} Sample Request 5 NAS 와 WAF LoadBalancer 를포함한 AutoScalingGroup 생성 ${API_URL}? command=createautoscalinggroup &autoscalinggroupname=test-asg-waf &availabilityzones.member.1=9845bd17-d438-4bde-816d-1b12f37d5080 &launchconfigurationname=webserver &maxsize=2 &minsize=1 &loadbalancers.member.1.loadbalancerid=b1c8383a-de6e-425f-ba18-12cadad827d3 &loadbalancers.member.1.loadbalancertype=waf &loadbalancers.member.1.webserverport=80 &loadbalancers.member.1.proxyport1rangefrom=10000 &loadbalancers.member.1.proxyport1rangeto=10020 &loadbalancers.member.1.proxyport2rangefrom=10030 &loadbalancers.member.1.proxyport2rangeto=10040 &loadbalancers.member.1.sslmode=disabled &networkids.member.1=55eeae5c-50c0-4c32-a859-bab0135959fb &networkids.member.2=2331d469-9f5b-47c4-b672-00634b680868 &response=xml&apikey=${apikey}&signature=&{signature} Sample Response <createautoscalinggroupresponse> <responsemetadata> <requestid>3d03571a-cdc9-43e5-9ba5-97a82d5c90d1</requestid> </responsemetadata> </createautoscalinggroupresponse> 43
4.2 deleteautoscalinggroup 4.2.1 설명 오토스케일링그룹을삭제한다. 4.2.2 제약사항 ForceDelete 파라미터를 true 로지정해서호출하지않았을경우, 스케일링액티비티가진행중이거나 VM 인스턴스가존재한다면오류를반환한다. deleteautoscalinggroup 을호출하기전, updateautoscalinggroup 을통해 MinSize 와 MaxSize 를 0 으로설정하면모든 VM 인스턴스를제거할수있다. 4.2.3 명령어파라미터 Name Description Required AutoScalingGroupName DefaultCooldown 오토스케일링그룹의이름. 타입 : String 길이제한 : 최소 1. 최대 255. 관련된모든 VM 인스턴스에종료를명령한후 ( 결과확인을위해대기하지는않고 ) 해당오토스케일링그룹을삭제한다. 타입 : Boolean Yes No 4.2.4 응답 정상적으로오트스케일링그룹이삭제되면 http 응답코드 200 ok 가반환된다. 4.2.5 에러 Error Description HTTP Status Code Error Code ResourceInUse 해당그룹이사용중. 400 1308 ScalingActivityInProgress 해당그룹의스케일링액티비티가진행중. 400 1309 44
4.2.6 Example Sample Request ${API_URL}? command=deleteautoscalinggroup &autoscalinggroupname=test-asg-4 &forcedelete=true &response=xml&apikey=${apikey}&signature=${signature} Sample Response <deleteautoscalinggroupresponse> <responsemetadata> <requestid>3d03571a-cdc9-43e5-9ba5-97a82d5c90d1</requestid> </responsemetadata> </deleteautoscalinggroupresponse> 45
4.3 updateautoscalinggroup 4.3.1 설명 해당오토스케일링그룹의설정을변경한다. 4.3.2 제약사항 그룹메트릭이수집가능한구동설정을가진스케일링그룹에대해설정을변경하기위해서는먼저 disablemetricscollection API 를통해수집을불허한후이 API 를호출해야한다. 4.3.3 명령어파라미터 Name Description Required AutoScalingGroupName AvailabilityZones.member.N DefaultCooldown DesiredCapacity HealthCheckGracePeriod LaunchConfigurationName MaxSize 오토스케일링그룹의이름. 타입 : String 길이제한 : 최소 1. 최대 255. VM 인스턴스를생성할 Availability Zone 의리스트. 타입 : String 길이제한 : 최소한 1 개의리스트아이템. 스케일링액티비티가끝나고 ( 트리거와연관된 ) 다른 스케일링액티비티가시작할수있는사이의초단위시간. 타입 : Integer 오토스케일링그룹에서동작해야할 VM 인스턴스의개수. 주어지지않으면 MinSize 값을가지고 MinSize 와 MaxSize 사이에있지않으면둘중가까운값을가진다. 타입 : Integer VM 인스턴스를만든후오토스케일링서비스가해당 인스턴스에헬쓰체크를시작하기까지초단위유예기간. 타입 : Integer 이그룹의인스턴스를만들때사용할시작설정의이름. 타입 : String 길이제한 : 최소 1. 최대 255. 이그룹 VM 인스턴스의최대개수. 타입 : Integer Yes No No No No No No MinSize 이그룹 VM 인스턴스의최소개수. No 46
타입 : Integer 4.3.4 응답 정상적으로오트스케일링그룹의업데이트가성공하면 http 응답코드 200 ok 가반환된다. 4.3.5 에러 Error Description HTTP Status Code Error Code ScalingActivityInProgress 해당그룹의스케일링액티비티가진행중. 400 1309 4.3.6 Example Sample Request ${API_URL}? command=updateautoscalinggroup &autoscalinggroupname=test-asg-4 &minsize=0 &maxsize=0 &response=xml&apikey=${apikey}&signature=${signature} Sample Response <updateautoscalinggroupresponse> <responsemetadata> <requestid>3d03571a-cdc9-43e5-9ba5-97a82d5c90d1</requestid> </responsemetadata> </updateautoscalinggroupresponse> 47
4.4 setdesiredcapacity 4.4.1 설명 주어진오토스케일링그룹의 VM 인스턴스수를조절한다. 이 API 의호출에의해 VM 인스턴스를 늘이거나줄이는스케일링액티비티가시작된다. 4.4.2 제약사항 오토스케일링서비스를통해자동으로트리거링되는스케일링액티비티는 cooldown 기간에는 스케일링그룹의용량변경이거부되지만사용자가명시적으로이 API 를호출한경우에는 HonorCooldown 파라미터를 False 로둠으로서 cooldown 기간중에도용량을변경할수있다. 4.4.3 명령어파라미터 Name Description Required AutoScalingGroupName DesiredCapacity HonorCooldown 오토스케일링그룹의이름. 타입 : String 길이제한 : 최소 1. 최대 255. 해당오토스케일링그룹의새로운 VM 인스턴스용량. 타입 : Integer True 로지정하면오토스케일링그룹이 cooldown 상태일때정책의실행이거부된다. 타입 : Boolean Yes Yes No 4.4.4 응답 정상적으로수행되면 http 응답코드 200 ok 가반환된다. 4.4.5 에러 Error Description HTTP Status Code Error Code ScalingActivityInProgress 해당그룹의스케일링액티비티가진행중. 400 1309 48
4.4.6 Example Sample Request ${API_URL}? command=setdesiredcapacity &autoscalinggroupname=test-asg-8 &desiredcapacity=1 &response=xml&apikey=${apikey}&signature=${signature} Sample Response <setdesiredcapacityresponse> <responsemetadata> <requestid>3d03571a-cdc9-43e5-9ba5-97a82d5c90d1</requestid> </responsemetadata> </setdesiredcapacityresponse> 49
4.5 listautoscalinggroups 4.5.1 설명 주어진오토스케일링그룹에대한세세한설정을반환한다. 이설정에는해당그룹에포함된모든 VM 인스턴스가포함되어있다. 만약오토스케일링그룹리스트인자가주어지지않으면해당 사용자가생성한모든그룹의설정을반환한다. 4.5.2 제약사항 이함수는 NextToken 파라미터를통해여러번나누어받을수있다. 4.5.3 명령어파라미터 Name Description Required AutoScalingGroupNames.member.N MaxRecords NextToken 오토스케일링그룹이름의리스트. 타입 : String 한번에반환할최대그룹정보의개수. 타입 : Integer 이전함수호출에서반환된이번에반환할정보의위치를포함한토큰. 타입 : String No No No 4.5.4 응답 Name Description DataType Count 오토스케일링그룹리스트개수 Integer AutoScalingGroups 오토스케일링그룹리스트 AutoScalingGroup 리스트 NextToken 다음번반환할정보의위치를포함한토큰. String 4.5.5 에러 50
4.5.6 Example Sample Request ${API_URL}? command=listautoscalinggroups &autoscalinggroupnames.member.1=test-asg-8 &response=xml&apikey=${apikey}&signature=${signature} Sample Response xml response <?xml version="1.0" encoding="utf-8" standalone="yes"?> <listautoscalinggroupsresponse> <count>1</count> <autoscalinggroups> <autoscalinggroup> <autoscalinggroupname>test-asg-8</autoscalinggroupname> <autoscalinggroupurn>urn:ucloud:uas:m1234:autoscalinggroupname/test-asg-8</autoscalinggroupurn> <launchconfigurationname>webserver</launchconfigurationname> <availabilityzones> <availabilityzone>eceb5d65-6571-4696-875f-5a17949f3317</availabilityzone> </availabilityzones> <minsize>0</minsize> <maxsize>1</maxsize> <desiredcapacity>1</desiredcapacity> <instances> <instance> <instanceid>534df561-729f-4f97-bce8-b171b37bd8e9</instanceid> <launchconfigurationname>webserver</launchconfigurationname> <lifecyclestate>terminated</lifecyclestate> </instance> <instance> <instanceid>c8b05f8e-9370-4df9-ba50-6c97cbb6574b</instanceid> <launchconfigurationname>webserver</launchconfigurationname> <lifecyclestate>inservice</lifecyclestate> </instance> </instances> </autoscalinggroup> </autoscalinggroups> <nexttoken>-1</nexttoken> <responsemetadata> <requestid>3f06695b-1a32-4f16-a758-aed6aacd6a26</requestid> </responsemetadata> </listautoscalinggroupsresponse> 51
json response {"listautoscalinggroupsresponse": {"count":1, "responsemetadata" : { "requestid" : "d83580ba-9f8f-4e34-bf5b-0b9e7141cd1e" }, "autoscalinggroups": [{"instances": [{"instanceid":"534df561-729f-4f97-bce8-b171b37bd8e9", "launchconfigurationname":"webserver", "lifecyclestate":"terminated"}, {"instanceid":"c8b05f8e-9370-4df9-ba50-6c97cbb6574b", "launchconfigurationname":"webserver", "lifecyclestate":"inservice"}], "autoscalinggroupname":"test-asg-8", "autoscalinggroupurn":"urn:ucloud:uas:m1234:autoscalinggroupname/test-asg-8", "launchconfigurationname":"webserver", "availabilityzones": ["eceb5d65-6571-4696-875f-5a17949f3317"], "minsize":0, "maxsize":1, "desiredcapacity":1}], "nexttoken":-1} } 52
4.6 listautoscalinginstances 4.6.1 설명 InstanceIds 리스트를통해주어진오토스케일링인스턴스에대한세세한설정을반환한다. 만약 리스트인자가파라미터로주어지지않으면해당그룹에소속된모든인스턴스를반환한다. 4.6.2 제약사항 이함수는 NextToken 파라미터를통해여러번나누어받을수있다. 4.6.3 명령어파라미터 Name Description Required InstanceIds.member.N MaxRecords NextToken 오토스케일링인스턴스의리스트. 이파라미터가주어지지않으면해당사용자가생성한모든그룹의모든리스트가반환된다. 주어진인스턴스가유효하지않으면오류코드를반환하지않고단순히무시된다. 타입 : String 한번에반환할최대인스턴스정보의개수. 타입 : Integer 이전함수호출에서반환된이번에반환할정보의위치를포함한토큰. 타입 : String No No No 4.6.4 응답 Name Description DataType Count 오토스케일링그룹리스트개수 Integer AutoScalingInstances 오토스케일링인스턴스의리스트 AutoScalingInstanceDetails 리스트 NextToken 다음번반환할정보의위치를포함한 토큰. String 4.6.5 에러 53
54
4.6.6 Example Sample Request ${API_URL}? command=listautoscalinginstances &instanceids.member.1=534df561-729f-4f97-bce8-b171b37bd8e9 &response=xml&apikey=${apikey}&signature=${signature} Sample Response xml response <?xml version="1.0" encoding="utf-8" standalone="yes"?> <listautoscalinginstancesresponse> <count>1</count> <autoscalinginstances> <autoscalinginstance> <autoscalinggroupname>test-asg-8</autoscalinggroupname> <instanceid>534df561-729f-4f97-bce8-b171b37bd8e9</instanceid> <launchconfigurationname>webserver</launchconfigurationname> <lifecyclestate>inservice</lifecyclestate> </autoscalinginstance> </autoscalinginstances> <nexttoken>-1</nexttoken> <responsemetadata> <requestid>3f06695b-1a32-4f16-a758-aed6aacd6a26</requestid> </responsemetadata> </listautoscalinginstancesresponse> json response {"listautoscalinginstancesresponse": {"count":1, "responsemetadata" : { "requestid" : "d83580ba-9f8f-4e34-bf5b-0b9e7141cd1e" }, "autoscalinginstances": [{"autoscalinggroupname":"test-asg-8", "launchconfigurationname":"webserver", "instanceid":"534df561-729f-4f97-bce8-b171b37bd8e9", "lifecyclestate":"inservice"}], "nexttoken":-1 } } 55
4.7 setinstancehealth 4.7.1 설명 인스턴스의정상상태여부를지정한다. 4.7.2 제약사항 4.7.3 명령어파라미터 Name Description Required HealthStatus InstanceId ShouldRespectGracePeriod 해당인스턴스의정상상태여부. "Healthy" 은정상적으로작동함을 "Unhealthy" 는문제가있음을의미한다. "Unhealthy" 일경우오토스케일링서비스는해당인스턴스를종료하고새로운인스턴스로대채한다. 타입 : String 인스턴스식별자. 타입 : String 유예기간을존중해줄지여부. 타입 : Boolean Yes Yes No 4.7.4 응답 정상적으로수행되면 http 응답코드 200 ok 가반환된다. 4.7.5 에러 4.7.6 Example Sample Request ${API_URL}? command=setinstancehealth &instanceid=c8b05f8e-9370-4df9-ba50-6c97cbb6574b &healthstatus=unhealthy &shouldrespectgraceperiod=false &response=xml&apikey=${apikey}&signature=${signature} 56
Sample Response <setinstancehealthresponse> <responsemetadata> <requestid>3d03571a-cdc9-43e5-9ba5-97a82d5c90d1</requestid> </responsemetadata> </setinstancehealthresponse> 57
4.8 terminateinstanceinautoscalinggroup 4.8.1 설명 해당인스턴스를종료하는요청을생성한다. setdesiredcapacity 를통해인스턴스의용량을줄일 수도있지만종료할대상인스턴스를명시적으로지정할수있다는점에서차이가있다. 4.8.2 제약사항 4.8.3 명령어파라미터 Name Description Required InstanceId ShouldDecrementDesiredCapacity 종료한 VM 인스턴스의아이디. 타입 : String 인스턴스가소속된스케일링그룹의용량도같이하나줄일지여부. 타입 : Boolean Yes Yes 4.8.4 응답 Name Description DataType Activity 스케일링액티비티 Activity 4.8.5 에러 Error Description HTTP Status Code Error Code ScalingActivityInProgress 진행중인스케일링액티비티가존재. 400 1309 4.8.6 Example Sample Request ${API_URL}? command=terminateinstanceinautoscalinggroup &instanceid=c8b05f8e-9370-4df9-ba50-6c97cbb6574b &shoulddecrementdesiredcapacity=true &response=xml&apikey=${apikey}&signature=${signature} 58
Sample Response xml response <?xml version="1.0" encoding="utf-8" standalone="yes"?> <terminateinstanceinautoscalinggroupresponse> <activity> <cause>instance 6f5e1a71-aa54-4c12-9d0d-aa6d26f3144e was taken out of service in response to a user request</cause> <activityid>a7261ba5-de2d-486c-8db8-debf91f2332b</activityid> <autoscalinggroupname>test-asg-8</autoscalinggroupname> <starttime>2012-12-24t16:14:15</starttime> <statuscode>inprogress</statuscode> </activity> <responsemetadata> <requestid>3f06695b-1a32-4f16-a758-aed6aacd6a26</requestid> </responsemetadata> </terminateinstanceinautoscalinggroupresponse> json response {"terminateinstanceinautoscalinggroupresponse": {"activity": {"cause":"instance 6f5e1a71-aa54-4c12-9d0d-aa6d26f3144e was taken out of service in response to a user request", "activityid":"a7261ba5-de2d-486c-8db8-debf91f2332b", "autoscalinggroupname":"test-asg-8", "starttime":"2012-12-24t16:14:15", "statuscode":"inprogress"}, "responsemetadata" : { "requestid" : "d83580ba-9f8f-4e34-bf5b-0b9e7141cd1e" }, } } 59
4.9 createlaunchconfiguration 4.9.1 설명 새로운구동설정을만든다. 4.9.2 제약사항 4.9.3 명령어파라미터 Name Description Required LaunchConfigurationName TemplateId ServiceOfferingId ProductCode DiskOfferingId VolumeMappings.member.N 새로만들구동설정의이름. 타입 : String 길이제한 : 최소 1, 최대 255. VM 인스턴스를만들때사용할머신템플릿의아이디. ProductCode 항목이없을경우필수항목 타입 : String 길이제한 : 최소 1, 최대 255. VM 인스턴스에게허용할 CPU 성능, 메모리크기등을 분류한숫자아이디. ProductCode 항목이없을경우필수 항목 타입 : String 길이제한 : 최소 1, 최대 255. TemplateId, ServiceOfferingId 를대체하는아이디, ProductCode 가존재할경우, TemplateId, ServiceOfferingId 는무시된다. VM 인스턴스를만들때사용할루트볼륨의디스크오퍼링 아이디. 타입 : String 길이제한 : 최소 1, 최대 255. VM 인스턴스를생성할때사용할블럭디바이스의리스트. 타입 : VolumeMapping 리스트 크기제한 : 10 (*)VolumeMapping 파라미터는다음의서브파라미터로 구성된다. - VolumeName : 생성할볼륨이름, String 타입 Yes No No No No No 60