본문 바로가기

Cloud/Oracle Cloud Infrastructure

OCI Autoscaling 사용 후기

작성자: 정영균

Autoscaling 테스트해 보았습니다. 이미 OCI Docs에는 내용이 반영되어 있습니다.

https://docs.cloud.oracle.com/iaas/Content/Compute/Tasks/autoscalinginstancepools.htm

Autoscaling 되려면 먼저 인스턴스에 대한 모니터링이 되어야 하고, 메트릭을 수집해야 가능한데, 컴퓨트 인스턴스쪽에 보면 아래와 같이 메트릭 정보를 그래프로 보여주도록 업데이트가 되어 있습니다. 참고로 최신 VM 이미지는 메트릭 수집이 기본적으로 활성화되어 있고, 버전 또는 기존 사용자 이미지는 OracleCloudAgent 소프트웨어를 설치해야 하는 것으로 나옵니다.


Autoscaling 설정 작업 절차는 다음과 같습니다.

참고로 선택적으로 로드밸런서를 설정할 있습니다. 이럴 경우, scale-out 했을 백엔드 셋에 해당 인스턴스가 자동으로 등록된다고 합니다. 이부분은 테스트 안해 봤습니다.

1. Instance Configuration Creation

Autoscaling 기준 템플릿 VM 같은 겁니다. Pool 여러개 만들 인스턴스의 템플릿이라고 생각하면 듯합니다. 인스턴스 상세 화면에서 생성합니다.

2. Instance Pool Creation

[Compute] > [Instance Pools]에서 생성합니다. Pool 인스턴스를 몇개를 만들 설정합니다. 이때 앞서 생성한 Instance Configuration 지정합니다. 이렇게 하면 Instance Configuration으로 설정한 VM 지정한 갯수만큼 만들어집니다. AD, VCN, Subnet 네트웍도 지정합니다.

3. Autoscaling Configuration

Autoscaling 정책을 설정합니다.

-        Autoscaling 할때 어떤 기준으로 – CPU or Memory

-        최소 유지 인스턴스 , 최대 인스턴스 , 최초 인스턴스

-        Scale-out 기준 Threshold, Scale-in Threahold

 메트릭 정보는 1분마다 수집합니다. 그리고 그림에는 나오지 않는데 Autoscaling 정책 만들때

“Cooldown in seconds”라는 것을 지정합니다. 이는 Threshold 도달해도 바로 Scale-out, Scale-in 하지 않고 지정한 시간만큼 기다렸다가 작동을 하게 합니다. 기본값은 300초입니다.

Instance Pool 만들 최대 인스턴스 수로 지정했던 2 인스턴스가 만들어집니다. 그리고 Autoscaling 정책을 만들고 나면, 최초 인스턴스 수로 1 지정했기 때문에 하나가 삭제되었습니다.

만들어진 인스턴스의 호스트 이름은 “instpub-7055” 같이 Instance Configration 만들었던 호스트명에 “-숫자 붙인 형태로 만들어 졌습니다.

Autoscaling 테스트하기 위해 Pool 있는 인스턴스에 SSH 접속을 했습니다.

SSH 접속 부하 툴인 “stress” 설치했습니다.

$ ssh -i C:\\Users\\youjung\\.ssh\\id_rsa opc@132.145.192.62

Last login: Wed Mar  6 05:44:55 2019 from instpub.subnetpub.demovcn.oraclevcn.com

[opc@instpub-7055 ~]$ sudo yum install stress -y

Loaded plugins: langpacks, ulninfo

Resolving Dependencies

--> Running transaction check

---> Package stress.x86_64 0:1.0.4-16.el7 will be installed

--> Finished Dependency Resolution

 

Dependencies Resolved

 

================================================================================================================

 Package              Arch                 Version                       Repository                        Size

================================================================================================================

Installing:

 stress               x86_64               1.0.4-16.el7                  ol7_developer_EPEL                39 k

 

Transaction Summary

================================================================================================================

Install  1 Package

 

Total download size: 39 k

Installed size: 94 k

Downloading packages:

stress-1.0.4-16.el7.x86_64.rpm                                                           |  39 kB  00:00:00

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

  Installing : stress-1.0.4-16.el7.x86_64                                                                   1/1

  Verifying  : stress-1.0.4-16.el7.x86_64                                                                   1/1

 

Installed:

  stress.x86_64 0:1.0.4-16.el7

 

Complete!

[opc@instpub-7055 ~]$ rpm -qa | grep stress

stress-1.0.4-16.el7.x86_64

 

Instance Configuration 1 OCPU VM Shape이라 2 프로세스를 쓰도록 “stress” 수행했습니다.

[opc@instpub-7055 ~]$ stress -c 2

stress: info: [16041] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd

 

 

잠시 , 인스턴스가 Scale-out 것을 확인할 있었습니다.

다시 “stress” 다시 수행해서 프로세서를 하나만 쓰도록 실행해 봤습니다.

[opc@instpub-7055 ~]$ ps -ef | grep stress | grep -v grep

opc      16041 15888  0 05:54 pts/0    00:00:00 stress -c 2

opc      16042 16041 99 05:54 pts/0    01:03:12 stress -c 2

opc      16043 16041 99 05:54 pts/0    01:03:15 stress -c 2

[opc@instpub-7055 ~]$ kill -9 16041

[opc@instpub-7055 ~]$ kill -9 16042

[opc@instpub-7055 ~]$ kill -9 16043

[opc@instpub-7055 ~]$ ps -ef | grep stress

opc      12030 11980  0 06:59 pts/2    00:00:00 grep --color=auto stress

[opc@instpub-7055 ~]$ stress -c 1

stress: info: [12033] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd

 

 메트릭은 지연이 있기는 하지만 그려주고 있습니다. Interval 1분이 최소 단위입니다.

“stress” 툴을 중지 시켜서 부하를 제거해 보았습니다.

[opc@instpub-7055 ~]$ ps -ef | grep stress | grep -v grep

opc      12033 11980  0 06:59 pts/2    00:00:00 stress -c 1

opc      12034 12033 99 06:59 pts/2    00:37:11 stress -c 1

[opc@instpub-7055 ~]$ kill -9 12033

[opc@instpub-7055 ~]$ kill -9 12034

 

잠시 Instance Pool “running”에서 “scaling” 변경되고, 인스턴스 한개는 삭제되었습니다.