[ Auto Scaling ] 요금 최적화

2024. 8. 19. 11:25·🌥️Cloud Study🌥️/Etc

Auto Scaling

인스턴스를 자동으로 확장하고 축소하는 기능으로, 사용자가 정의한 조정 정책에 따라 인스턴스 수가 증가되거나 축소된다.

ex) 서버의 로드가 증가(감소)하면 인스턴스 개수가 추가(감소)됨

 

위 그림처럼 오토 스케일링 그룹을 생성하면, 이 그룹은 최초로 가질 인스턴스 개수, 최대로 가질 인스턴스 개수를 가진다.

그리고 어떤 상황에서 오토 스케일링이 일어날지 추가로 설정해줘야 하는데, 구성 요소는 아래와 같다 :

 

시작 템플릿 : 어떤 이미지를 활용할지 설정

조정 옵션 : 오토 스케일링이 일어나는 조건 설정

 


NHN Cloud에서의 설정 방법

이미지는 미리 Instance에서 생성한 Priavate 인스턴스의 이미지를 사용하였다.

 

로드밸런서 생성

로드밸런서와 Private DNS 생성

 


스케일링 그룹 생성

전체적인 생성 과정은 인스턴스 생성과 동일하게 흘러가고, 스케일링 그룹 정보 부분부터 살펴보자 :

위와 같이 설정해주었다.


Private DNS 이용

NHN Cloud Document

초기 로드밸런싱은 public 인스턴스에서 Nginx의 Reverse Proxy를 사용해서 구현했기 때문에
Nginx 설정파일에 IP를 직접 추가하는 방식이 아닌, 증설된 인스턴스의 IP를 DNS를 이용하여 자동으로 추가하도록 수정해보자.

(NHN Cloud의 콘솔 창에서, Network - Private DNS에서 설정할 수 있다.)

 

생성 후에는 nginx의 설정을 변경해주어야 한다.

 

http {
    ...

    log_format  main  ...
                      'backend_server=$upstream_addr'; # 추가됨

    # Define the resolver to use for DNS lookups
    resolver 127.0.0.1(예시);# 프라이빗 DNS 서버의 IP 주소
    resolver_timeout 10s;

변경된 내용을 먼저 확인해보자면 upstream과 resolver부분이다.

resolver : DNS 조회를 수행할 DNS 서버의 IP 주소 설정

resolver_timeout : DNS 조회의 타임아웃 시간을 설정

 

upstream nginx {
        server your-private-dns-name.nhncloud.internal:8080;
    }

    server {
        location / {
            proxy_pass http://nginx;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }
    }

백엔드 서버 그룹을 정의하는 upstream에 프라이빗 DNS를 포함시켰다.

DNS 이름으로 여러 IP 주소를 반환할 수 있기 때문에 해당 설정으로 NHN Cloud의 Private DS에서 인스턴스의 IP 주소 목록을 동적으로 관리한다.

 

아래 코드 예시 전문을 올려두었다.

# Nginx 설정 파일 열기
sudo nano /etc/nginx/nginx.conf

# 수정 후 아래 명령어로 적용
sudo systemctl restart nginx

# 전체 코드 예시
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"'
                      'backend_server=$upstream_addr'; # 추가됨

# Define the resolver to use for DNS lookups
    resolver 127.0.0.1(예시);# 프라이빗 DNS 서버의 IP 주소
    resolver_timeout 10s;

    upstream nginx {
        server your-private-dns-name.nhncloud.internal:8080;
    }

    server {
        location / {
            proxy_pass http://nginx;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }
    }

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    keepalive_timeout  65;

# gzip  on;
}

'🌥️Cloud Study🌥️ > Etc' 카테고리의 다른 글

[ Database ] DB 이중화, MySQL Replication 설정  (1) 2024.08.21
[ 트래픽 ] 트래픽 폭주 제어 -1 (시나리오 예시 및 스트레스 테스트)  (0) 2024.08.19
[ 모니터링 ] Prometheus Federation 설정 -2  (0) 2024.08.19
[ 모니터링 ] Grafana의 Alerting 이용, 인스턴스 다운 시 메일 알림 전송  (0) 2024.08.13
[ Logging ] Log Reporting, 이메일로 로그 전송하기  (0) 2024.08.13
'🌥️Cloud Study🌥️/Etc' 카테고리의 다른 글
  • [ Database ] DB 이중화, MySQL Replication 설정
  • [ 트래픽 ] 트래픽 폭주 제어 -1 (시나리오 예시 및 스트레스 테스트)
  • [ 모니터링 ] Prometheus Federation 설정 -2
  • [ 모니터링 ] Grafana의 Alerting 이용, 인스턴스 다운 시 메일 알림 전송
L_Chae
L_Chae
🎮😻🤓🖥✨
  • L_Chae
    Cherish
    L_Chae
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 🌥️Cloud Study🌥️
        • AWS
        • NHN
        • KT
        • Microsoft (Azure 900)
        • TroubleShooting
        • IaC
        • Etc
      • STUDY
        • English
        • Japanese
        • 개인정보보호 관련
      • 초등학교 AI 교육 진행
        • 2024학년도 1학년-2학년
        • 2025학년도 4학년
      • 2024 KDT 📕
        • Lecture
        • Study 📗
        • Study-JAVA
        • Project
        • etc
      • INTERLUDE ✦
        • 2022 SYSTEM STUDY
        • 2022 Winter Study
        • 2023 AutoMobility STUDY
        • 2023 Summer Study (CPPG)
        • 2023 Reversing STUDY
        • etc
      • Private🔒
        • MacBook 💻
        • Screenshot 🩷
        • Photo 🖼️
        • FFXIV - Backup 🎮
        • Tistory
      • PBL 📗
        • 논문 스터디
        • Backup
      • Project 🖤
        • 2022-2) 개인정보보호 소학회
        • 2022-2) winter GURU2 - iOS
        • 2023-1) PBL 3
        • 2023-2) PBL 4
        • 2024-1) SW-AI교육 실습 일지
      • CTF 🚩
        • 2022
        • 2023
      • News scrap 📰
        • 2022
        • 2023
      • 2022 공부 로그 🐯
      • 2023 공부 로그🐰
  • 블로그 메뉴

    • 글쓰기
    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    content collection
    멱등성
    ansible
    deprecation warning
    jlpt n1 도전기
    JLPT N1
    N1
    JLPT
    ansible galaxy
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
L_Chae
[ Auto Scaling ] 요금 최적화
상단으로

티스토리툴바