AWS_Elastic Load Balancing(ELB) 및 Auto Scaling
by 현생사는갓생지망생실습 3: 아키텍처를 조정 및 로드 밸런싱
Elastic Load Balancing(ELB)과 Auto Scaling 서비스를 사용하여 인프라를 로드 밸런싱하고
자동으로 조정하는 과정을 살펴본다.
ELB (Elastic Load Balancing)
수신되는 애플리케이션 트래픽을 여러 Amazon EC2 인스턴스에 자동으로 분산한다.
애플리케이션 트래픽을 라우팅하는 데 필요한 로드 밸런싱 용량을 원활하게 제공하여
애플리케이션의 내결함성을 달성하도록 한다.
Elastic Load Balancing은 고가용성, 자동 조정 및 강력한 보안이 모두 적용된 두 가지 유형의 로드 밸런서를 제공한다.
Classic Load Balancer
애플리케이션 또는 네트워크 수준 정보를 기반으로 트래픽을 라우팅한다.
여러 EC2 인스턴스에 걸쳐 간단하게 트래픽을 로드 밸런싱하는 데 적합하다.
Application Load Balancer
요청 콘텐츠를 비롯하여 고급 애플리케이션 수준 정보를 기반으로 트래픽을 라우팅한다.
고급 라우팅 기능, 마이크로서비스 및 컨테이너 기반 아키텍처가 필요한 애플리케이션에 적합하다.
트래픽을 여러 서비스에 라우팅하고 동일한 EC2 인스턴스에 있는 여러 포트에
로드를 균등하게 분산하는 기능을 제공한다.
Auto Scaling
애플리케이션 가용성을 보다 간편하게 관리할 수 있으며, Amazon EC2 용량이 사용자가
정의한 조건에 따라 자동으로 확장 또는 축소된다.
Auto Scaling을 활용하면 실행 중인 Amazon EC2 인스턴스의
수를 원하는 수준으로 유지할 수 있다.
또한 수요가 급증할 경우 Amazon EC2 인스턴스의 수를 자동으로 증가시키기 때문에
성능을 그대로 유지할 수 있으며, 수요가 적을 경우 자동으로 용량을 감소시켜 비용 낭비를 막아준다.
Auto Scaling은 수요 변화가 많지 않은 애플리케이션과 사용량이 시, 일, 주 단위로 변하는 애플리케이션에 적합하다.
목표
1. 실행 중인 인스턴스에서 Amazon 머신 이미지 (AMI) 생성
2. 로드 밸런서 생성
3. 시작 구성 및 Auto Scaling 그룹 생성
4. 프라이빗 서브넷 내에서 새 인스턴스를 자동으로 조정
5. Amazon CloudWatch 경보 생성 및 인프라 성능 모니터링
시나리오
↓
인프라의 최종 구성 상태.
과제 1: Auto Scaling용 AMI 생성
Auto Scaling에서 사용할 새로운 인스턴스를 시작하는 출발점으로 AMI를 생성한다.
AWS Management Console의 Services 메뉴에서 EC2를 선택한다.
왼쪽 탐색 창에서 Instances을 클릭하여 Web Server 1의 Status Checks가 2/2 checks passed로
표시되어 있는지 확인한다.
Web Server 1을 우클릭하여 Image > Create Image를 클릭한다.
Image name : Web Server AMI
Image description : Lab AMI for Web Server
설정을 완료했다면 Create Image를 클릭하여 이미지를 생성한다.
과제 2: 로드 밸런서 생성
로드 밸런서를 생성하여 2개의 가용 영역에서 여러 EC2 인스턴스에 걸쳐 트래픽을 밸런싱한다.
왼쪽 탐색 창에서 Load Balancers를 클릭 후, Create Load Balancer를 클릭한다.
Application Load Balancer에서 Create를 클릭한다.
Name : LabELB
VPC : My Lab VPC
Availability Zones : Public Subnet 1, Public Subnet 2를 선택.
경고를 무시하고 Next: Configure Security Groups를 클릭한다.
Name에 WebSecurityGroup을 포함하며 Description에 Enable HTTP access을 포함하는
보안 그룹을 선택하고 default 선택을 해제한다.
Name : LabGroup
Healthy threshold : 2
Unhealthy threshold : 3
Timeout : 10
Next: Register Targets를 클릭한다.
Auto Scaling이 나중에 인스턴스를 자동으로 추가한다.
Next: Review를 클릭하여 로드 밸런서의 구성을 확인한다.
로드 밸런서가 성공적으로 생성되었다.
과제 3: 시작 구성 및 Auto Scaling 그룹 생성
Auto Scaling 그룹에 대한 시작 구성을 생성한다.
시작 구성은 Auto Scaling 그룹에서 EC2 인스턴스를 시작하는 데 사용하는 템플릿이다.
시작 구성을 생성할 때는 AMI, 인스턴스 유형, 키 페어, 하나 이상의 보안 그룹,
블록 디바이스 매핑 등의 인스턴스에 대한 정보를 지정한다.
Auto Scaling 그룹에는 유사한 특성을 공유하고 인스턴스 조정 및 관리 목적의 논리적 그룹으로
취급되는 EC2 인스턴스 모음이 포함되어 있다.
왼쪽 탐색 창에서 Auto Scaling Groups을 선택하여 Create Auto Scaling group을 클릭한다.
왼쪽 탐색 창에서 My AMIs 선택 후 Web Server AMI 행에서 Select를 클릭한다.
t2.micro 선택을 수락한다.
Name : LabConfig
Monitoring : Enable CloudWatch detailed monitoring
설정을 완료했다면 Next: Add Storage
그대로 다음을 클릭해준다.
Select an existing security group을 클릭하고
이름이 WebSecurityGroup이며 설명이 Enable HTTP access로 되어있는 보안 그룹을 선택한다.
이러한 경고는 무시해도 무방하다.
Choose an existing key pair를 클릭하고 Qwiklabs 키 페어를 선택 후 승인 확인란을 체크해준다.
Group name : Lab AS Group
Group size : 2 instances
Network : My Lab VPC
Subnet : Private Subnet 1(10.0.3.0/24), Private Subnet 2(10.0.4.0/24)
Advanced Details를 확장하여 다음 설정을 구성한다.
Load Balancing : Receive traffic from one of more load balancers 체크
Target Groups : LabGroup
Health Check Type : ELB
Monitoring : Enable CloudWatch detailed monitoring 체크
Use scaling policies to adjust the capacity of this group을 선택한다.
2~6개 인스턴스 범위 내에서 조정할 수 있도록 Scale between 텍스트 상자를 수정 후
Scale the Auto Scaling group using step or simple scaling policies를 클릭한다.
Increase Group Size의 Execute policy when에서 Add new alarm을 클릭한다.
Send a notification to: 선택 취소한다.
위와 같이 구성 후 Create Alarm을 클릭한다.
Take the action : 1을 입력하고 instances를 클릭한 후 65를 입력한다.
Instances need : 60 (각 단계 완료 후 준비에 몇 초가 소요됨)
위와 같이 구성 후 Create Alarm을 클릭한다.
20% 미만으로 설정할 것이므로 ls: <=로 변경해주어야 한다.
Take the action : Remove를 클릭하고 1을 입력한 다음 instances을 선택 후 20을 입력한다.
설정을 완료했다면 Next: Configure Notifications
Next: Configure Tags을 클릭한다.
Key : Name
Value : Lab Web Instances
Auto Scaling 그룹의 세부 정보를 확인한 다음 Create Auto Scaling group을 클릭한다.
생성된 Auto Scaling group을 확인한다.
과제 4: Auto Scaling 작동 확인
왼쪽 탐색 창에서 Instances를 클릭한다.
Web Server 1, NAT Server, Lab Web Instance 2개 총 4개의 인스턴스가 실행 중으로 표시된다.
왼쪽 Target Groups에서 LabGroup을 선택하고 Targets 탭을 클릭한다.
이 대상 그룹에 대해 Lab Web Instance 인스턴스 2개가 나열 되어야 한다.
두 인스턴스의 Status가 healthy로 전환될 때까지 기다린다.
LabELB-426283818.ap-northeast-2.elb.amazonaws.com
왼쪽 Load balancer에서 LabELB를 선택하고 Description 탭을 클릭한다.
로드 밸런서의 DNS Name을 적어둔다.
이때 (A Record)는 생략한다.
과제 5: Auto Scaling 테스트
인스턴스가 최소 2개, 최대 6개인 Auto Scaling 그룹을 생성하였다.
Auto Scaling 그룹을 한번에 인스턴스 하나씩 증가하거나 축소하는 Auto Scaling 정책을 생성했다.
그룹의 전체 평균 CPU 사용률이 >= 65% 와 <= 20% 일 때 각각 해당 정책을 트리거하는
Amazon CloudWatch 경보를 생성하였다.
최소 크기는 2이고 부하가 전혀 없으므로 현재 2개의 인스턴스가 실행 중이다.
생성한 CloudWatch 경보를 사용하여 인프라를 모니터링할 수 있다.
Services 메뉴에서 CloudWatch을 선택한다.
왼쪽 탐색 창에서 Alarms를 클릭한다.
두 경보 High CPU Utilization 및 Low CPU Utilization이 표시된다.
Low CPU Utilization에는 ALARM이라는 State가 표시되고 High CPU Utilization에는 OK라는
State가 표시된다. 이는 현재 그룹 CPU 사용률이 20% 미만이기 때문이다.
그룹 크기가 현재 최소 크기인 2이므로, Auto Scaling은 어떠한 인스턴스도 제거하지 않는다.
위에서 복사한 로드 밸런서의 DNS Name을 새 브라우저 창에 붙여넣기 한다.
Load Test를 클릭한다.
애플리케이션이 인스턴스에 대한 부하 테스트를 수행하고 자동 새로 고침이 5초 간격으로
수행된다. [Current CPU Load]가 100%로 상승한다.
Load Test 링크는 간단한 백그라운드 프로세스를 트리거한다.
이 탭을 그대로 두고 AWS CloudWatch console로 돌아가면 5분 이내에 Low CPU Utilization
경보 상태가 OK로 변경되고, High CPU 경보 상태가 ALARM으로 변경될 것이다.
왼쪽 탐색 창에서 Instances를 클릭해보면 Lab Web Instances라는 인스턴스가 3개 이상
실행 중일 것이다.
과제 6: (선택 사항) Web Server 1 종료
Public Subnet 2에서 Web Server 1을 종료한다.
Auto Scaling 그룹이 프라이빗 서브넷에서 인스턴스를 시작했으므로, 공개적으로 액세스 가능한
원래의 웹 서버는 더 이상 필요 없다.
Services 메뉴에서 EC2 선택 후 Instances를 클릭한다.
Web Server 1을 마우스 오른쪽 버튼으로 클릭하고 Instance State > Terminate를 클릭한다.
'AWS 공부기록 > 종합 실습' 카테고리의 다른 글
AWS_Auto Scaling 및 Load Balancer를 이용한 고가용성 환경 구축(2) (0) | 2019.01.02 |
---|---|
AWS_Auto Scaling 및 Load Balancer를 이용한 고가용성 환경 구축(1) (0) | 2019.01.02 |
AWS_웹 애플리케이션 배포 (0) | 2019.01.02 |
AWS_Amazon Relational Database Service(RDS) (0) | 2018.12.28 |
AWS_VPC 구축 및 웹 서버 시작 (0) | 2018.12.27 |
블로그의 정보
현생이네
현생사는갓생지망생