로드밸런서&오토스케일

오토스케일링, 서버가 언제 증가되고 언제 감소하는가?

부하율이 높아지면 서버를 증가시키고, 부하율이 낮아지면 서버를 감소시키므로써 합리적인 비용으로 서비스를 운영할 수 있습니다.

이것이 바로 오토스케일링 장점이자, 오토스케일링을 사용하는 목적입니다.

 
오토스케일링은 최소 1대의 서버만 운영할 수도, 최대 250대의 서버를 운영할 수도 있습니다. 

운영중인 서버가 1대라면, 1대의 부하율을 기준으로 서버를 증가/감소시키고,

운영중인 서버가 여러대라면, 부하율 평균을 계산하여 그 기준으로 서버를 증가/감소시킵니다.

 

오토스케일링은 운영중인 모든 서버의 부하율을 1분 주기로 기록합니다. ( 분당 부하율 ) 

1분 주기로 기록된 부하율을 그래프 형태로 보여줍니다 ( 각 서버의 부하율 그래프 / 모든 서버의 평균 부하율 그래프 )

 

분당 부하율은 서버증가/감소를 계산하기 위한 기초 데이터로 사용됩니다.

분당 부하율과 회원이 설정한 '서버증가설정'/'서버감소설정' 데이터를 믹싱하여 평균 부하율을 계산하고, 그 결과값에 따라 서버를 증가시키기도 감소시키기도 합니다.

  

 

분당 CPU 부하율 그래프

그림1  분당 CPU 부하율 그래프 

 

 

분당 CPU 부하율

그림2    분당 CPU 부하율 ( 15:01 ~ 16:20 ) 

 

 

그림3    서버증가/감소 설정 ( 회원이 직접설정 )  

 

 

 

서버 증가에 대해 알아보겠습니다.


 매 분마다 평균 부하율을 계산하고, 계산된 결과에 따라 서버를 증가할지? 서버를 감소할지? 그대로 있을지? 를 결정합니다.

위 2개의 그림(그림2, 그림3)으로 평균 부하율을 계산해 보도록 하겠습니다.

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 

현재시간이 15시 15분일 때, 

 

1> 과거 15분 데이터를 가지고 옵니다. ( 15분 : 모니터링주기 * 연속횟수, 데이터 : 모든 서버의 CPU 평균 부하율 )

     

 

2> 5분 평균 부하율을 구합니다. ( 5분 : 모니터링주기 )

     

 

3> 3개 모두 70% 를 초과하였다면 서버를 증가시킵니다. ( 70% : 회원이 설정한 사용률[임계치] )

     평균 부하율이 모두 70% 초과하지 못하였기에 서버를 증가시키지 않습니다. ( 60%, 70%, 80% )

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 

현재시간이 15시 16분일 때,

 

1> 과거 15분 데이터를 가지고 옵니다.

     

 

2> 5분 평균 부하율을 구합니다.

      

 

3> 3개 모두 70% 를 초과하였다면 서버를 증가시킵니다.

     평균 부하율이 모두 70% 초과하지 못하였기에 서버를 증가시키지 않습니다. ( 62%, 72%, 82% )

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

현재시간이 15시 17분일 때,

 

1> 과거 15분 데이터를 가지고 옵니다.

     

 

2> 5분 평균 부하율을 구합니다.

     

 

3> 3개 모두 70% 를 초과하였다면 서버를 증가시킵니다.

     평균 부하율이 모두 70% 초과하지 못하였기에 서버를 증가시키지 않습니다. ( 64%, 74%, 84% )

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

....

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

현재시간이 15시 20분일 때,

 

1> 과거 15분 데이터를 가지고 옵니다.

     

 

2> 5분 평균 부하율을 구합니다.

     

 

3> 3개 모두 70% 를 초과하였다면 서버를 증가시킵니다.

     평균 부하율이 모두 70% 초과하여 서버를 증가시킵니다. ( 70%, 80%, 90% )

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 

현재시간이 15시 21분일 때

현재시간이 15시 22분일 때

현재시간이 15시 23분일 때 ....

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

이렇게 매 분마다 서버증가/감소여부를 결정하게 됩니다.

 

아래와 같은 내용이 궁금하실거라 생각됩니다.

 

1. 매 분마다 서버증가/감소 여부를 결정한다고 하였는데, 서버증가 후, 1분후, 2분후, 3분후에도 부하율이 임계치보다 높다면, 서버가 증가될까요?

   서버가 증가됩니다. 허나 해당 설정에서는 서버가 증가되지 않습니다.

   왜냐하면, '서버증가 Term' 설정이 5분으로 되어 있어 서버가 증가되지 않습니다. ( 서버증가 Term 5분 : 서버증가 후 5분내에 서버를 증가시키지 말라!! )

 

2. 언제까지 서버가 증가 될까요?(그림4 참조)

    15시31분에 서버 증가가 멈춘다고 생각하실 겁니다. ( 평균부하율 : 88% , 78% , 68% )

    아닙니다. 실제로 서버 증가가 멈추는 시간은 15시41분입니다. ( 평균부하율 : 68%, 58%, 48% )

    3개의 부하율 모두 임계치 미만이어야 서버증가가 멈춥니다.



3. 15:00 ~ 15:14분에는 왜 서버증가가 되지 않을까요?

    모니터링주기 * 연속횟수 만큼의 데이터가 수집되지 않으면, 서버증가/감소 여부를 아예 결정하지 않습니다.

    필요한 만큼의 데이터가 모여야 서버증가/감소 여부를 결정합니다.

 

#그림2 와 #그림3 을 기반으로 서버증가시점과 서비스증가가 멈추는 시점의 시뮬레이션

그림 4    그림2그림3을 기반으로 서버증가시점과 서버증가가 멈추는 시점의 시뮬레이션

 

 

 

 

 

 

 

그럼 이제는 서버 감소에 대해 알아보겠습니다. ( 방식은 서버증가와 동일합니다. )


매 분마다 평균 부하율을 계산하고, 계산된 결과에 따라 서버를 증가할지? 서버를 감소할지? 그대로 있을지? 를 결정합니다.

위 2개의 그림(그림2, 그림3)으로 평균 부하율을 계산해 보도록 하겠습니다.

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------   

현재시간이 15시 50분일 때,

 

1> 과거 6분 데이터를 가지고 옵니다. ( 6분 : 모니터링주기 * 연속횟수, 데이터 : 모든 서버의 CPU 평균 부하율 )

        

 

2> 3분 평균 부하율을 구합니다. ( 3분 : 모니터링주기 )

     

 

3> 2개 모두 30% 미만이라면, 서버를 감소시킵니다. ( 30% : 회원이 설정한 사용률[임계치] )

     평균 부하율이 모두 30% 미만이 아니기에 서버를 감소시키지 않습니다. ( 33%, 30% )

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

현재시간이 15시 51분일 때,

 

1> 과거 6분 데이터를 가지고 옵니다.

     

 

2> 3분 평균 부하율을 구합니다.

     

 

3> 2개 모두 30% 미만이라면, 서버를 감소시킵니다.

     평균 부하율이 모두 30% 미만이 아니기에 서버를 감소시키지 않습니다. ( 30%, 27% )

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 현재시간이 15시 52분일 때,

 

1> 과거 6분 데이터를 가지고 옵니다.

     

 

그림32> 3분 평균 부하율을 구합니다.

     

 

3> 2개 모두 30% 미만이라면, 서버를 감소시킵니다.

     평균 부하율이 모두 30% 미만이 아니기에 서버를 감소시키지 않습니다. ( 30%, 23% )

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

현재시간이 15시 53분일 때,

 

1> 과거 6분 데이터를 가지고 옵니다.

      

 

2> 3분 평균 부하율을 구합니다.

     

 

3> 2개 모두 30% 미만이라면, 서버를 감소시킵니다.

    평균 부하율이 모두 30% 미만이 아니기에 서버를 감소시키지 않습니다. ( 30%, 20% )

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 현재시간이 15시 54분일 때,

 

1> 과거 6분 데이터를 가지고 옵니다.

     

 

2> 3분 평균 부하율을 구합니다.

     

 

3> 2개 모두 30% 미만이라면, 서버를 감소시킵니다.

     평균 부하율이 모두 30% 미만이므로 서버를 감소시킵니다. ( 27%, 20% )

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 

현재시간이 15시 55분일 때

현재시간이 15시 56분일 때

현재시간이 15시 57분일 때 ...

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 

 

 


이렇게 매 분마다 서버증가/감소여부를 결정하게 됩니다.

 

아래와 같은 내용이 궁금하실거라 생각됩니다.

 

1. 매 분마다 서버증가/감소 여부를 결정한다고 하였는데, 서버감소 후, 1분후, 2분후, 3분후에도 부하율이 임계치보다 낮다면, 서버가 감소될까요?

    서버가 감소됩니다. 허나 해당 설정에서는 서버가 감소되기도, 감소되지 않기도 합니다.

    왜냐하면, '서버감소 Term' 설정이 2분으로 되어 있어 서버감소 후 2분동안에는 서버가 감소되지 않습니다. ( 서버감소 Term 2분 : 서버감소 후 2분내에는 서버를 감소시키지 말라!! )

    그렇지만, 3분후부터는 서버를 감소시킵니다.

 

2. 언제까지 서버가 감소 될까요?( 그림5 참조 )

    16시08분에 서버 감소가 멈춘다고 생각하실 겁니다. ( 평균부하율 : 30% , 20% )

    아닙니다. 실제로 서버 감소가 멈추는 시간은 16시11분입니다. ( 평균부하율 : 33%, 30% )

    2개의 부하율이 모두 임계치 이상이어야 서버감소가 멈춥니다.

 
 

그림 5    그림2그림3 을 기반으로 서버감소시점과 서버감소가 멈추는 시점의 시뮬레이션

 

 

 

 

 

 나는 어떤 설정을 하여야 하는가?


 1. 짧은 시간에 많은 서버를 증가시켜야 하는 서비스라면, 서버증가설정(그림3)의 '모니터링주기', '연속횟수', '서버증가Term' 을 낮게 설정하시기 바랍니다.

     

       서버증가시점 시뮬레이션( 부하율이 계속 높다는 가정하에 시뮬레이션 )

 

 

2. 짧은 시간에 서버감소를 하고 싶다면, 서버감소설정의(그림3) '모니터링주기', '연속횟수', '서버감소Term' 을 낮게 설정하시기 바랍니다.

    

     서버감소시점 시뮬레이션 ( 부하율이 계속 낮다는 가정하에 시뮬레이션 )

 


3. 천천히 서버증가를 하고 싶다면, 서버증가설정의(그림3) '모니터링주기', '연속횟수', '서버증가Term' 을 높게 설정하시기 바랍니다.

   

     서버증가시점 시뮬레이션 ( 부하율이 계속 높다는 가정하에 시뮬레이션 )

 

 

4. 천천히 서버감소를 하고 싶다면, 서버감소설정의(그림3) '모니터링주기', '연속횟수', '서버증가Term' 을 낮게 설정하시기 바랍니다.

    

      서버감소시점 시뮬레이션 ( 부하율이 계속 낮다는 가정하에 시뮬레이션 ) 

 

 

5. 계산하기 복잡하고 잘 모르겠다 싶으면, 아래와 같이 설정하시기 바랍니다.

      

       서버증가/감소시점 시뮬레이션

 

 

 

 

 

기타


1. 설정

    - 기본 설정

           

        1> 최소수

            - 최소로 운영될 서버수 ( 아무리 평균 부하율이 낮아도, 최소수 미만으로 감소되지 않습니다. )

 

        2> 서버 증/감수

            - 부하율이 임계치보다 높거나 낮아 서버가 증가되거나 감소될 때, 한번에 증가/감소되는 서버수를 의미합니다.

            - 유의사항

                1. 최대수(10대), 서버증/감수(2대), 현재 운영중인 서버수(9대) 일 때, 아무리 평균 부하율이 높아도 서버증가되지 않음

                    왜냐하면, 2대가 증가되면, 운영중인 서버수가 11대가 되기 때문에 서버증가를 시키지 않음 ( 최대수에 걸림 )

                2. 최소수(2대), 서버증/감수(2대), 현재 운영중인 서버수(3대) 일 때, 아무리 평균 부하율이 낮아도 서버감소되지 않음

                    왜냐하면, 2대가 감소되면, 운영중인 서버수가 1대가 되기 때문에 서버감소를 시키지 않음 ( 최소수에 걸림 )

 
        3> 최대수

            - 최대로 운영 가능한 서버수 ( 아무리 평균 부하율이 높아도, 최대수보다 많게 증가되지 않습니다. )

 

        4> 서버 생성 시 실행 스크립트

            - 서버 증가 될 시, 증가되는 서버는 부팅중에 입력되어 있는 스크립트를 실행합니다. ( 서버증가 시에 딱 1번만 실행됨 )

 


    - 서버증가/감소 설정

      

        1> 서버증가 설정

            - 모니터링 주기

                1. 입력한 시간 단위로 자원을 모니터링 함 ( 1분 ~ 30분 )

                2. 부하율이 임계치를 초과하여 '모니터링주기 * 연속회수' 시간만큼 유지될 때 서버증가여부 결정

 

            - 서버증가 설정

                 1. 자원

                     - 모니터링 할 자원 ( CPU, Memory )

                 2. 사용률

                     - 임계치라고도 하며, 부하율이 임계치를 초과하였을 때에 서버가 증가됩니다.

                 3. 연속횟수

                     - 부하율이 임계치를 초과하여 '모니터링주기 * 연속회수' 시간만큼 유지될 때 서버가 증가됩니다. ( 1회 ~ 3회 )

 

            - 모니터링 주기 ( `서버증가설정` 이 '모두/하나라도' 충족되면 서버를 증가시킵니다. )

                1. `모두/하나라도`는 `서버 증가 설정`을 2개(CPU와 Memory) 모두 선택하였을 때만 해당되는 설정입니다.

                    `모두`는 CPU, Memory 모두 임계치를 초과하였다면 서버가 증가되며,

                    `하나라도`는 CPU, Memory 둘 중에 1개라도 임계치를 초과하였다면 서버가 증가됩니다.

  

            - 서버증가 Term

                 1. 서버증가 후 해당 시간내에 서버는 증가 되지 않음 ( 0분 ~ 60분 )

  

        2> 서버감소 설정

             - 모니터링 주기

                 1. 입력한 시간 단위로 자원을 모니터링 함 ( 1분 ~ 30분 )

                 2. 부하율이 임계치 미만으로 '모니터링주기 * 연속회수' 시간만큼 유지될 때 서버감소여부 결정

 

            - 서버감소 설정

                 1. 자원

                     - 모니터링 할 자원 ( CPU, Memory )

                 2. 사용률

                     - 임계치라고도 하며, 부하율이 임계치 미만일 때에 서버감소여부를 결정할 하나의 기준

                 3. 연속횟수

                     - 부하율이 임계치 미만으로 '모니터링주기 * 연속회수' 시간만큼 유지될 때 서버감소여부 결정 ( 1회 ~ 3회 )

 

            - 모니터링 주기 ( `서버감소설정`이 '모두/하나라도' 충족되면 서버를 감소시킵니다. )

                1. `모두/하나라도`는 `서버 감소 설정`을 2개(CPU와 Memory) 모두 선택하였을 때만 해당되는 설정입니다.

                    `모두`는 CPU, Memory 모두 임계치 미만이면 서버가 감소되며,

                    `하나라도`는 CPU, Memory 둘 중에 1개라도 임계치 미만이면 서버가 감소됩니다.

 

            - 서버감소 Term

                 1. 서버감소 후 해당 시간내에 서버는 감소 되지 않음 ( 0분 ~ 60분 )

  

 

2. 블록 스토리지 증가/감소

     운영체제에 블록 스토리지가 포함되어 있다면,

     서버증가 시, 블록 스토리지도 증가(생성)되며, 서버감소 시, 증가된 블록 스토리지도 감소(삭제) 됩니다.

 


3. 운영체제 변경

    

    - 운영중인 오토스케일링 운영체제를 변경할 수 있습니다.

      운영체제 변경 시, 기존에 운영되었던 모든 서버는 삭제됩니다. 그 후 바로 변경된 운영체제 서버가 생성됩니다.

      부하율이 높아지면, 변경된 운영체제로 서버가 증가됩니다.

      1> 만약 기존에 운영되고 있는 서버에 블록 스토리지가 있었다면, 블록 스토리지도 모두 삭제됩니다.

      2> 만약 변경된 운영체제에 블록 스토리지가 포함되어 있다면, 서버 생성(증가)시에 블록 스토리지도 같이 생성(증가)됩니다.

 

4. 기타

    - 서버감소 시, 서버가 감소되는 순서는 가장 오래 서버부터 감소됩니다.

    - 운영중인 서버를 off 시켜 놓았다면, 해당 서버 부하율은 0 으로 계산됩니다.

    - 기본 트래픽

      서버 총 사용시간이 24시간을 초과할 때마다, 7GB 기본 트래픽을 무료로 제공

      예1> 사용시간이 50시간이면, 14 GB 기본 트래픽 제공

      예2> 사용시간이 35시간이면, 7 GB 기본 트래픽 제공

      예3> 사용시간이 22시간이면, 0 GB 기본 트래픽