[AWS] EC2 Linux 서버 Load Balancing 과 Auto Scaling 설정하기
Auto Scaling 과 Load Balancing
오토 스케일링(Auto Scaling) 이란 서버에 부하가 발생할 때, 자동적으로 서버 수를 늘려 부하를 분산하는 방식입니다.
Load Balancing 은 들어오는 요청을 여러 서버로 분산해 주는 역할입니다.
Auto Scaling 그룹에 묶인 EC2 서버의 앞단에는 Load Balancing 을 구성하여, 늘어난 서버로 부하를 분산할 수 있도록 구성해 주어야 합니다.
테스트 목표 및 전제조건
테스트 목표
퍼블릭 서브넷을 사용하여 외부로부터 접근하여 프라이빗 서브넷에 있는 서버에 부하를 발생시킵니다.
프라이빗 서브넷에 있는 서버 앞단에는 로드밸런싱이 구성되어 있고
서버에 부하가 발생함에 따라 오토 스케일링으로 서버 대수가 증가합니다.
전제조건
1. VPC 생성이 되어있으며 외부에서 접속가능한 퍼블릭 서브넷과, 외부에서 접근불가능한 프라이빗 서브넷이 생성되어 있습니다.
2. 로드밸런서 내에 서버를 구성할 HTTP 웹서버용 AMI 가 생성되어 있습니다.
AMI 확인은 EC2 의 이미지 - AMI 를 확인하시면 됩니다.
3. Http 접속이 가능하도록 설정된 보안그룹이 생성되어 있습니다.
보안그룹 확인은 EC2 의 네트워크 및 보안 - 보안그룹 을 확인하시면 됩니다.
Load Balancing 설정방법
단일 DNS 주소 아래에 EC2 인스턴스 그룹 풀을 생성하는 로드밸런서를 생성합니다.
1. EC2 서버를 클릭합니다.
2. 로드 밸런싱의 로드밸런서를 클릭합니다.
3. Load Balancer 생성을 클릭합니다.
4. Application Load Balancer 를 클릭합니다.
상황에 따라 다른 Load Balancer 를 선택할 수 있습니다.
5. Load Balancer 를 구성합니다.
유형 | 설명 |
이름 | 원하는 이름을 입력 |
가용영역 | 로드밸런서가 사용해야 하는 VPC 와 서브넷을 지정 로드 밸런서는 외부와 통신이 가능해야 하기 때문에 퍼블릭 서브넷으로 선택 참고로 VPC / 서브넷은 사전에 만들어져 있는 상태 |
5. 보안 설정을 구성합니다.
여기서는 패스하겠습니다.
6. 보안 그룹을 구성합니다.
HTTP 포트만 IN BOUND 할수 있는 보안그룹을 선택합니다.
모든 포트를 IN BOUND 할 수 있는 default 보안그룹을 선택해도 가능하나 보안상 이슈가 발생할 수 있습니다.
참고로 보안그룹은 사전에 만들어져 있는 상태입니다.
7. 라우팅을 구성합니다.
대상 그룹은 로드밸런서로 들어오는 트래픽을 전송할 위치를 정의합니다.
Application Load Balancer 는 수신 요청 URL 을 기반으로 여러 대상그룹에 트래픽을 보낼 수 있습니다.
라우팅 구성시 DNS + 경로로 접속하여 상태에 이상없는지 체크를 진행합니다.
8. 대상을 등록합니다.
아직 웹 애플리케이션 전용 인스턴스를 만들지 않았기 때문에 이 단계는 패스합니다.
9. 로드 밸런서가 생성되었습니다.
Auto Scaling 시작 구성 생성
시작 구성은 새로운 EC2 인스턴스를 생성하는 데 사용할 AMI 를 지정할 때 Auto Scaling 그룹에서 사용하는 구성입니다.
이 포스팅에서는 사전에 만들어 놓은 AMI 를 시작하며, AMI 는 시작되면 웹서버로 자동으로 구성합니다.
1. Auto Scaling 의 시작구성을 클릭합니다.
2. 시작 구성 생성을 클릭합니다.
3. 시작 구성을 생성합니다.
원하는 명을 입력 합니다.
사전에 만들어놓은 AMI 를 선택합니다.
인스턴스 유형을 선택합니다.
Cloudwatch 내에서 EC2 인스턴스의 세부 모니터링 활성화를 선택합니다.
보안그룹과 키 페어를 선택 후 작업을 완료합니다.
Auto Scaling 그룹 생성
Auto Scaling 그룹은 로드밸런서 뒤에 구성할 수 있는 최소개수의 EC2 인스턴스를 생성합니다.
이후에는 Amazon CloudWatch 에 의해 트리거되는 경보에 반응하여 실행 중인 인스턴스 수를 늘리거나 줄입니다.
1. 생성한 시작 구성을 클릭 후 Auto Scaling 그룹 생성을 클릭합니다.
2. 시작 템플릿을 구성합니다.
이름에는 원하는 Auto Scaling 그룹이름을 작성합니다.
시작 구성에는 위에서 만든 시작구성 명을 선택합니다.
3. 설정을 구성합니다.
EC2 가 구성될 VPC 와 서브넷을 선택합니다.
로드밸런서의 VPC 와 같은 VPC 여야 하며
EC2 는 사설영역에 구성되기 때문에 Private 으로 선택하시면 됩니다.
4. 고급 옵션 구성을 진행합니다.
기존에 만든 로드밸런서와 연결을 진행합니다.
모니터링에서 CloudWatch 내에서 그룹 지표 수집 활성화를 체크합니다.
5. 그룹 크기 및 조정 정책 구성을 진행합니다.
인스턴스의 최소/최대 숫자와 기본적으로 원하는 용량을 기입합니다.
조정 정책에서 '대상 추적 조정 정책' 을 체크 후 원하는 임계치를 설정합니다.
6. 알림 추가를 구성합니다.
이 부분 Auto Scaling 이 발생하면 발송되는 알람구성이며 패스하겠습니다.
7. 태그를 추가합니다.
원하는 태그를 추가하시면 되며 패스하겠습니다.
8. 설정이 이상없는지 검토 후 Auto Scaling 그룹 생성을 클릭합니다.
9. Auto Scaling 그룹에 속한 인스턴스가 추가되었습니다.
Auto Scaling 그룹에서 관리되는 인스턴스 ID 를 확인할 수 있습니다.
EC2 에 가서 추가된 서버를 확인할 수도 있습니다.
Auto Scaling 테스트 진행
위 단계까지 진행했으면, 테스트 목표의 구성이 완료되었습니다.
로드밸런서를 통해 서버에 부하를 발생시킵니다.
1. 로드밸런서를 통해 부하를 발생시킵니다.
클라우드와치의 경보에 CPU 사용률이 45% 가 넘었다는 알람이 발생했습니다.
2. Auto Scaling 그룹에 자동으로 인스턴스 하나가 더 추가되었습니다.
마치며
만약 특정 서버로 접속한 세션이 장시간 CPU 를 100퍼센트 사용하는 단일 작업을 진행한다고 가정합니다.
이런경우 서버가 오토 스케일링 되더라도 늘어나더라도, 특정 인스턴스는 CPU 가 100퍼센트이기 때문에 최대 용량까지 늘어나게 될 것입니다.
CPU 를 100퍼센트 사용하는 단일 작업을 장시간 돌리는 일은 없으시길 바라겠습니다.