-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CallLog: Need to check the elapsed time of the CSP Call #359
Comments
[현황 분석 및 이슈][드라이버별 확인 사항] @dev4unet @hyokyungk @innodreamer
AWS 참고
GCP 참고
Azure 참고
Alibaba 참고
OpenStack 참고
CloudIt 참고
NCP 드라이버 단에서 자체 확인---------------------- 참고 |
driver별 확인 결과 comment로 작성 부탁드립니다.
예시)
|
@powerkimhub [런닝 상태를 체크하는 이유] |
@powerkimhub 음..추가로... AWS는 동기 방식이라 VM 생성까지 진행되지만 GCP의 경우에는 비동기 방식이라서 Running 외의 다른 상태에서 조회가 가능할지는 모르겠네요. |
|
@powerkimhub CSP에 따라서 다르다 보니 VM 생성 하자마자 조회하면 에러 나는 경우들이 있습니다.^^ GCP의 경우 비동기로 동작하는데 API 호출이 성공했어도 완전히 생성되기 전에 조회 API를 호출하면 에러가 발생합니다. AWS의 경우 기존 답변처럼 VM 생성 요청이 성공한다면 조회도 문제가 없기 때문에 생성된 VM에 EIP같은 특정 추가 작업이 진행되지 않는다면 굳이 런닝 상태를 기다릴 필요는 없어서 조회되는 정보가 적을 뿐 큰 이슈는 없고 동기 방식이라 가장 문제가 적으리라 봅니다. Alibaba Cloud의 경우 AWS하고 비슷하게 동작하기는 하지만 VM 생성 요청이 성공했어도 VM 정보 조회할 때 정보가 바로 나오지는 않고 일정 시간은 Not Found로 리턴됩니다. [요약]
AWS - VM생성 시 WaitForRun 제거시(resources.VMInfo) { GCP - VM생성 시 WaitForRun 제거 시테스트 필요 AlibabaCloud - VM생성 시 WaitForRun 제거 시리턴값 생성된 VM 정보 조회 - Not Found 발생 {"Instances":{"Instance":[]},"TotalCount":0,"RequestId":"15C16CCC-1D5F-4314-8428-81B4C2A6FB13","PageSize":10,"NextToken":"","PageNumber":1} [VM을 생성하자 마자 GetVM호출할 경우] - Private IP 정보 조회 시 Null 예외 처리 필요 {"Instances":{"Instance":[{"ResourceGroupId":"","Memory":512,"InstanceChargeType":"PostPaid","Cpu":1,"OSName":"Ubuntu 18.04 64位","InstanceNetworkType":"vpc","InnerIpAddress":{"IpAddress":[]},"ExpiredTime":"2099-12-31T15:59Z","ImageId":"ubuntu_18_04_x64_20G_alibase_20210318.vhd","EipAddress":{"AllocationId":"","IpAddress":"","InternetChargeType":""},"HostName":"","VlanId":"","Status":"Pending","HibernationOptions":{"Configured":false},"MetadataOptions":{"HttpTokens":"","HttpEndpoint":""},"InstanceId":"i-6weipz7d6g3ltkf9id1z","StoppedMode":"KeepCharging","CpuOptions":{"ThreadsPerCore":1,"Numa":"","CoreCount":1},"StartTime":"2021-05-11T01:13Z","DeletionProtection":false,"SecurityGroupIds":{"SecurityGroupId":["sg-6we1jpq012lnye7i4np4"]},"VpcAttributes":{"PrivateIpAddress":{"IpAddress":[]},"VpcId":"vpc-6welivp7nl6yw5a2rxj2w","VSwitchId":"vsw-6wedntef8vkfzctdps7dl","NatIpAddress":""},"InternetChargeType":"PayByBandwidth","InstanceName":"mcloud-barista-vm-test","DeploymentSetId":"","InternetMaxBandwidthOut":5,"SerialNumber":"","OSType":"linux","CreationTime":"2021-05-11T01:13Z","AutoReleaseTime":"","Description":"","InstanceTypeFamily":"ecs.t5","DedicatedInstanceAttribute":{"Tenancy":"","Affinity":""},"PublicIpAddress":{"IpAddress":[]},"GPUSpec":"","NetworkInterfaces":{"NetworkInterface":[{"Type":"Primary","NetworkInterfaceId":"eni-6we8ra7f0f32lknh4bkz","PrivateIpSets":{"PrivateIpSet":[{"Primary":true}]}}]},"SpotPriceLimit":0.0,"DeviceAvailable":true,"SaleCycle":"","InstanceType":"ecs.t5-lc2m1.nano","OSNameEn":"Ubuntu 18.04 64 bit","SpotStrategy":"NoSpot","KeyPairName":"CB-KeyPairTest123123","IoOptimized":true,"ZoneId":"ap-northeast-1a","ClusterId":"","EcsCapacityReservationAttr":{"CapacityReservationPreference":"","CapacityReservationId":""},"DedicatedHostAttribute":{"DedicatedHostId":"","DedicatedHostName":"","DedicatedHostClusterId":""},"GPUAmount":0,"OperationLocks":{"LockReason":[]},"InternetMaxBandwidthIn":100,"Recyclable":false,"RegionId":"ap-northeast-1","CreditSpecification":"Standard"}]},"TotalCount":1,"RequestId":"07C9FDCA-D007-4312-96E9-15E11C5D4492","PageSize":10,"NextToken":"4f1d7cc9f51e189000ee3c8c84872b550f55a0c7c15e43d4","PageNumber":1} goroutine 1 [running]: |
@powerkimhub 이 경우 VM 생성 후 리턴되는 정보는 아래와 같습니다. |
|
@powerkimhub 소스 반영은 WaitForRun 반영 상태로 돌려 놓고 WaitForRun 없이 호출하게될 경우 에러 나서 수정된 부분은 예외 처리가 추가된 부분이라 어차피 반영되어야 하는 부분이니 해당 부분만 반영된 상태로 나중에 Commit 할 때 모아서 반영하겠습니다. GCP의 StartVM에서 VM 생성 API 호출후 WaitForRun 없이 곧바로 GetVM이 호출되었을 때의 리턴 정보입니다. |
|
Azure, OpenStack, Cloudit 드라이버의 StartVM() elapsed time 관련 내부 로직을 전리해 공유드립니다. [Azure]
[OpenStack]
[Cloudit]
|
|
@dev4unet @hyokyungk @inno-cloudbarista @innodreamer 다음과 같이 2가지로 분리하여 마무리 하도록 하겠습니다. 1. CallLog 처리
2. Waiting Loop 유무 및 개선
|
@powerkimhub NCP driver의 경우, StartVM() 실행시, 구동되는 과정에서 WaitToGetInfo() 라는 function을 이용해서 VM status가 "Creating" / "Booting" 일때는 계속 기다리다 "Running" 상태일때 GetVM()으로 VM info를 가져옵니다. 참고로, VM termination 시에는 TerminateVM()이 실행된 후 "Suspended" / "Terminating" 상태가 완전히 끝날때까지 기다렸다가 (termination이 완료되면) VM에 mapping 되어 있던 public IP를 반납합니다. Waiting이 없이 반납하면 때때로 error가 발생되어서요. |
Azure 드라이버 수정사항을 적용해 PR 요청을 올렸으니, 확인 부탁드리겠습니다. |
|
@dev4unet @hyokyungk @inno-cloudbarista @innodreamer 1. CallLog 처리
과정에서, @powerkimhub이 다음 내용을 소스 반영하였습니다.
2. Waiting Loop 유무 및 개선
|
Fixed it. |
What happened
What you expected to happen
Proposed solution
The text was updated successfully, but these errors were encountered: