AWS의 오토 스케일링 기능을 알아보고 로드밸런싱과 함께 구성하는 실습을 진행한다.
Auto Scaling
오토 스케일링은 서비스를 필요에 따라 빠르게 확장하거나 축소하는 기술을 말한다.
온 프레미스 환경과 다르게 클라우드는 가상 머신으로 구동되기 때문에 쉽게 추가/감소가 가능하다.
비용과 가용성에서 큰 이점을 가질 수 있으며 클라우드 컴퓨팅을 사용하는 이유라고도 할 수 있다.
EC2 Auto Scaling
EC2 인스턴스를 오토 스케일링 그룹으로 지정할 수 있다.
장애나 공격으로 인해 인스턴스가 응답하지 않는 경우 새 인스턴스를 생성해서 항상 서비스 가능한 상태를 유지한다.
- 최소, 최대, 권장 개수 등을 설정하여 운용이 가능하다.
Target Tracking 기능을 이용해 트래픽이 높아지면 추가로 인스턴스를 실행할 수 있도록 설정 가능
Target Tracking 예시
- CPU 사용률 70% 기준으로 지정 시 70%를 넘길 시 인스턴스를 추가로 생성
- 추가 생성으로 인한 CPU 사용률 안정화되어 일정 수치 이하가 되면 인스턴스 축소
스케일링 종류
Scale out : 서버의 개수를 늘리는 것
Scale in : 서버의 개수를 줄이는 것
Scale up : 고사양 스펙으로 변경하는 것
Scale down : 저사양 스펙으로 변경하는 것
실습
Auto Scaling을 이용하여 웹 서비스 구축하는 실습을 진행해본다.
사용되는 기능은 VPC, EC2, NLB를 이용하며 기초적인 생성 방법에 대해서는 다루지 않기 때문에 이전 글을 참고한다.
2022.10.17 - [보안 이론/클라우드 보안] - AWS - VPC(Virtual Private Cloud)
2022.10.19 - [보안 이론/클라우드 보안] - AWS - Amazon Linux로 WordPress 웹 서버 구축
2022.10.26 - [보안 이론/클라우드 보안] - AWS - Load Balancing(ALB, NLB)
아키텍처 설명
1. 클라이언트는 인터넷 게이트웨이를 통해 VPC에 접근한다.
2. 인터넷 게이트웨이에서는에서는 EIP가 지정된 Network Load balancer를 접근한다.
3. Auto Scaling Group을 private subnet에 배치한다.
4. 외부에서 접속할 수 없는 Auto Scaling이 적용된 private 웹 서버를 NLB를 통해 접근한다.
5. public에 bastion host를 통해 private 웹 서버를 관리 목적으로 접근할 수 있다.
6. 임의로 Auto Scaling의 인스턴스를 종료해도 설정한 수만큼 다시 생성된다.
EC2 생성
AMI 생성
먼저 이미지를 생성하기 위한 EC2 인스턴스를 퍼블릭으로 설정 후 OS는 우분투를 설정하여 생성한다.
생성이 완료되면 SSH 접속 후 다음과 같은 과정을 진행한다.
sudo apt update
sudo apt install apache2
이번 실습에서는 내부 html 파일에 대해서는 따로 수정하지 않고 진행할 것이다.
이미지를 만들기 전 해당 인스턴스의 퍼블릭 주소를 접속하여 apache 서버가 제대로 동작하는 지 확인한다.
이렇게 Apache2의 디폴트 페이지가 나오면 성공이다.
이제 이미지 생성을 진행한다.
이미지 생성이 완료되기전 인스턴스를 종료시킬 시 오류가 발생할 수 있음을 주의한다.
NLB 생성
우리는 이전과 같이 EIP가 연결된 Network Load balencer를 생성할 것이다.
자세한 생성은 이전 글을 참조한다.
이전과 다른 점은 Network Load Balencer를 생성하면서 빈 타겟그룹을 생성한 뒤 지정한다는 점이다.
Create target group 버튼을 눌러 생성을 진행한다.
Instance를 클릭하고 이름과 올바른 VPC를 설정하고 다음으로 진행한다.
타겟 설정에서 아무 EC2도 선택하지 않은 채 타겟 그룹을 생성한다.
이는 후에 Auto Scaling에서 지정하기 위함이다.
선택을 마쳤다면 다른 설정들은 이전과 동일하게 진행하고 생성해준다.
Auto Scaling 시작 구성
사이드 바에서 시작구성을 찾아 선택한 뒤 시작 구성 생성을 클릭한다.
시작 구성 생성 페이지에 들어오면 다음과 같이 진행한다.
시작 구성 이름
원하는 이름으로 설정한다. 실습에서는 시작 구성의 줄임말인 lc를 붙여 Tae-lc로 설정하였다.
AMI 선택
오토 스케일링 시 생성될 EC2 이미지를 선택하는 옵션이다. 위에서 만든 AMI를 선택한다.
인스턴스 유형
만들 인스턴스의 성능을 선택하는 옵션이다. 우리는 항상 t2.micro를 이용했으므로 이번해도 동일하게 진행한다.
보안 그룹 선택
이전에 사용했던 웹서버 보안 그룹을 이용한다.
내용으로는 SSH는 내IP 허용, HTTP, HTTPS는 모든 IP가 허용되어있다.
키 페어
기존 생성했던 키페어로 진행한다. 새로 만들어도 무방하다.
Auto Scaling 그룹 생성
사이드 바에서 Auto Scaling 그룹을 선택하여 생성화면으로 들어간다.
생성은 아래와 같이 차례대로 진행한다.
Auto Scaling 그룹 이름 설정
원하는 이름으로 설정한다. 실습에서는 오토 스케일링의 줄임말인 as를 붙여 Tae-as로 설정하였다.
시작 구성 설정
초기에는 시작 템플릿으로 나와있을 것이다. 오른쪽에 시작 구성 전환 버튼을 눌러 시작 구성으로 생성할 수 있도록 한다.
시작 구성은 위에서 만든 것을 선택한다.
네트워크 설정
실습 전 아키텍쳐를 보면 우리는 오토 스케일링 그룹을 프라이빗에 설정한다고 명시하였다.
올바른 VPC를 선택한 후 private subnet 두 개를 선택하여 프라이빗에 배치하고 가용성을 높여준다.
로드 밸런싱 선택
오토 스케일링 생성시에 로드 밸런서를 함께 만들 수 있으나 우리는 미리 만든 로드밸런서를 연결한다.
또한 로드 밸런서 대상 그룹 선택으로 위에서 만든 빈 대상 그룹을 지정한다.
대상 그룹이 비어있다고 하나 오토 스케일링이 생성되면 아까 선택한 AMI가 채워질 것이다.
그룹 크기 설정
용량 한도를 설정한다. 설정에 따라 인스턴스가 늘어나고 줄어들 것이다.
실습에서는 권장 2, 최소 1, 최대 3으로 설정하였다.
크기 조정 정책 (option)
이론에서 설명한 Target Tracking을 설정할 수 있는 부분이다.
설정하게되면 CPU 사용률이나 네트워크 입출력 등을 기준으로 자동으로 EC2를 추가하거나 감소시킬 수 있다.
실습에서는 적용하지 않았다.
이밖에 언급되지 않은 설정들은 기본값으로 진행한 뒤 생성한다.
동작 확인
오토 스케일링 그룹 생성이 완료되면 로드밸런서의 EIP 주소로 내부 EC2에 접근할 수 있다.
다음과 같은 페이지가 나온다면 정상적으로 설정이 된 것이다.
이제 오토스케일링의 기능을 살펴보자
EC2 인스턴스를 보면 어느새 이름없는 인스턴스가 2개 생성된 것을 볼 수 있다.
이는 아까 권장 크기를 2로 설정하였기 때문에 AMI로 2개의 인스턴스를 만들어낸 것이다.
인스턴스가 오류 혹은 고장이나서 종료되는 상황을 가정하기 위해 두 개 모두 종료시켜보자
종료가 완료된 뒤 조금 기다렸다가 다시 확인하면 새로운 인스턴스가 실행되려고 준비중인 것을 볼 수 있다.
조금 더 오래 기다리면 다시 2개의 인스턴스가 동작하고 있음을 볼 수 있다.
이 처럼 오토 스케일링은 상황에 따라 자동으로 서버를 새로 추가하여 가용성을 보장하는 기능이다.
우리는 AWS의 오토 스케일링이 어떤 기능을 하는지에 대해 알고 VPC, EC2, 로드밸런싱, 오토 스케일링을 모두 사용하여 웹 서버를 구축해 어떻게 가용성을 보장하는 지에 대해 직접 실습해보았다.
'보안 이론 > 클라우드 보안' 카테고리의 다른 글
Docker - Volume, Network (0) | 2022.11.06 |
---|---|
Docker - 이론 및 기본 사용법 (0) | 2022.11.04 |
AWS - Load Balancing(ALB, NLB) (0) | 2022.10.26 |
AWS - RDS 활용 3-Tier 구축 (0) | 2022.10.19 |
AWS - Amazon Linux로 WordPress 웹 서버 구축 (0) | 2022.10.19 |