[CLOUD-005][기초] 가상 서버를 늘리고 줄이는 오토스케일링 > IT 기술 공유

본문 바로가기
사이트 내 전체검색

IT 기술 공유

[CLOUD-005][기초] 가상 서버를 늘리고 줄이는 오토스케일링

페이지 정보

profile_image
작성자 기술팀장
댓글 0건 조회 235회 작성일 26-09-01 05:39

본문

[이번 수업]

클라우드에서 가상 서버를 만드는 데 필요한 요소와 사용량에 맞춰 서버 수를 자동으로 조절하는 오토스케일링을 배웁니다. 실제 클라우드 비용이나 계정 없이 로컬 Python 프로그램으로 확장 정책을 안전하게 실험합니다.

[선수지식]

CLOUD-001~004의 서비스 모델, 리전·가용영역, 최소 권한, VPC·서브넷 개념을 알고 있으면 좋습니다. Python 실행 방법만 알면 따라 할 수 있습니다.

[학습목표]

1. 가상 서버를 구성하는 이미지·크기·네트워크·초기화 데이터의 역할을 설명한다.
2. 수평 확장과 수직 확장을 구분한다.
3. 최소·희망·최대 용량이 있는 간단한 자동 확장 정책을 구현한다.

[핵심개념]

가상 서버는 물리 서버의 CPU, 메모리, 디스크를 가상화해 독립된 컴퓨터처럼 제공하는 인스턴스입니다. 인스턴스를 만들 때는 운영체제와 기본 프로그램을 담은 이미지, vCPU·메모리·디스크 크기, 연결할 네트워크, 접근 규칙, 로그인 키를 선택합니다. user-data는 첫 부팅 때 설정을 전달하는 초기화 데이터입니다. 같은 이미지를 사용하면 비슷한 서버를 반복해서 만들기 쉽습니다.

서버 한 대의 CPU·메모리를 키우는 방식은 수직 확장(scale up), 비슷한 서버의 대수를 늘리는 방식은 수평 확장(scale out)입니다. 오토스케일링은 측정값이나 일정에 따라 그룹의 희망 용량을 바꾸고 인스턴스를 생성하거나 제거하는 자동화입니다. NIST가 정의한 클라우드의 빠른 탄력성은 자원을 신속하게 늘리고 줄일 수 있는 특성을 뜻합니다.

자동 확장 그룹에는 최소 용량, 현재 목표인 희망 용량, 최대 용량이 필요합니다. 정책은 CPU 사용률, 요청 수, 작업 대기열처럼 서비스와 관련된 지표를 관찰합니다. 임계값을 넘으면 확장하고 충분히 낮으면 축소합니다. 짧은 변화마다 서버가 오르내리는 플래핑을 막으려면 관찰 시간과 쿨다운을 둡니다. 새 서버의 부팅과 상태 점검에는 시간이 걸리므로 확장은 즉시 끝나지 않습니다.

여러 서버 앞에는 요청을 나누는 로드 밸런서와 정상 서버를 가리는 상태 점검이 필요합니다. 세션이나 업로드 파일을 한 서버의 로컬 디스크에만 두면 그 서버가 제거될 때 데이터가 사라질 수 있습니다. 공유 저장소나 외부 데이터 저장소를 사용하고, 축소 전에는 새 요청을 중단한 뒤 진행 중인 작업을 마치는 연결 배출 절차를 설계합니다.

[따라하기]

아래 내용을 scale_demo.py로 저장합니다. 외부 서버에 접속하지 않는 로컬 시뮬레이션입니다.

```python
loads = [82, 78, 55, 24, 20]
minimum, desired, maximum = 2, 2, 5

for load in loads:
    action = "유지"
    if load >= 70 and desired < maximum:
        desired += 1
        action = "확장"
    elif load <= 30 and desired > minimum:
        desired -= 1
        action = "축소"
    print(f"부하={load}% 동작={action} 서버={desired}대")
```

macOS·Linux는 `python3 scale_demo.py`, Windows는 `py scale_demo.py`를 실행합니다. py가 없다면 `python scale_demo.py`를 사용하세요. 예상 결과는 다음과 같습니다.

```text
부하=82% 동작=확장 서버=3대
부하=78% 동작=확장 서버=4대
부하=55% 동작=유지 서버=4대
부하=24% 동작=축소 서버=3대
부하=20% 동작=축소 서버=2대
```

[흔한 실수]

- CPU 임계값 하나만 정하면 모든 서비스에 맞는다고 생각합니다. 실제 병목이 요청 수, 메모리, 대기열인지 먼저 측정해야 합니다.
- 서버 수를 늘리면 데이터베이스 같은 뒤쪽 구성요소도 무한히 버틴다고 생각합니다. 전체 경로의 한계와 할당량을 함께 확인해야 합니다.
- 최소 용량을 0으로 낮추고 시작 지연이나 장애 시 여유 용량을 고려하지 않습니다.

[보안 주의]

검증되지 않은 이미지를 사용하거나 이미지와 user-data에 비밀번호·API 키를 넣지 마세요. 인스턴스에는 필요한 역할과 네트워크 권한만 주고, 최신 보안 패치가 적용된 기준 이미지를 사용합니다. 자동 확장 권한은 서버 생성·삭제를 수행하므로 관리자 계정과 분리하고 최소 권한으로 제한합니다. 실습은 본인 소유의 로컬·격리 환경에서만 하며 실제 자원을 만들 때는 비용 한도, 최대 용량, 로그와 알림을 먼저 설정하세요.

[직접 해볼 과제]

1. 최대 용량을 3으로 바꾸고 결과가 상한을 넘지 않는지 확인하세요.
2. 40~60%에서는 유지하고 3회 연속 70% 이상일 때만 확장하도록 관찰 규칙을 추가해 보세요.

[확인문제]

1. 이미지, 서버 크기, user-data는 각각 어떤 역할을 하나요?
2. 수직 확장과 수평 확장의 차이는 무엇인가요?
3. 최소·희망·최대 용량과 쿨다운이 필요한 이유는 무엇인가요?

[다음 학습]

CLOUD-006에서는 객체 스토리지와 CDN으로 정적 파일을 저장하고 가까운 위치에서 전달하는 방식을 배웁니다.

[공식 참고 자료]

- NIST SP 800-145 클라우드 정의: https://csrc.nist.gov/pubs/sp/800/145/final
- OpenStack 가상 서버 실행 문서: https://docs.openstack.org/nova/latest/user/launch-instances.html
- OpenStack 자동 확장 그룹·정책 문서: https://docs.openstack.org/heat/latest/template_guide/openstack.html
- cloud-init user-data 형식 문서: https://cloudinit.readthedocs.io/topics/format.html

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

회사명 : 회사명 / 대표 : 대표자명
주소 : OO도 OO시 OO구 OO동 123-45
사업자 등록번호 : 123-45-67890
전화 : 02-123-4567 팩스 : 02-123-4568
통신판매업신고번호 : 제 OO구 - 123호
개인정보관리책임자 : 정보책임자명

접속자집계

오늘
1,738
어제
5,103
최대
16,772
전체
772,792
Copyright © 소유하신 도메인. All rights reserved.