본문 바로가기

클라우드/Public Cloud(Naver, Amazon)

aws 인프라 관리 (tech-3)

Elastic Load Balancing은 수신되는 애플리케이션 트래픽을 여러 Amazon EC2 인스턴스에

자동으로 분산한다. 애플리케이션 트래픽을 라우팅하는 데 필요한 로드 밸런싱 용량을

원활하게 제공하여 애플리케이션의 내결함성을 달성하도록 한다. ELB는 고가용성, 자동

조정 및 강력한 보안이 모두 적용된 두 가지 유형의 로드 밸런서를 제공한다. 즉 애플리

케이션 또는 네트워크 수준 정보를 기반으로 트래픽을 라우팅하는 Classic Load Balancer

와 요청 콘텐츠를 비롯하여 고급 애플리케이션 수준 정보를 기반으로 트래픽을 라우팅하

ALB를 제공한다. Classic Load Balancer는 여러 EC2 인스턴스에 걸쳐 간단하게 트래픽

을 로드 밸런싱하는 데 적합하며, Application Load Balancer를는 고급 라우팅 기능, 마이

크로서비스 및 컨테이너 기반 아키텍처가 필요한 애플리케이션에 적합하다. ALB는 트래

픽을 여러 서비스에 라우팅하고 동일한 EC2 인스턴스에 있는 여러 포트에 로드를 균등

하게 분산하는 기능을 제공한다.

Auto Scaling을 사용하면 애플리케이션 가용성을 보다 간편한게 관리할 수 있으며 EC2

용량이 사용자가 정의한 조건에 따라 자동으로 확장 또는 축소된다. Auto Scaling을 활

용하면 실행중인 EC2 인스턴스의 수를 원하는 수준으로 유지할 수 있다. 또한 Auto SC

Aling은 수요가 급증할 경우 EC2 인스턴스의 수를 자동으로 증가시키기 떄문에 성능을

그대로 유지할 수 있으며 수요가 적을 경우 자동으로 용량을 감소 시켜 비용 낭비를 막

아 준다. Auto Scaling은 수요 변화가 많지 않은 애플리케이션과 사용량이 시, , 주 단

위로 변하는 애플리케이션에 적합하다.

그림과 같이 로드밸런스를 구성하고 오토스케일링도 구성하겠다.

 

 

먼저 생성된 인스턴스의 Status2/2 checks passed인지 확인하여야 한다.

Web Sever의 이미지 생성을 위해 오른쪽 마우스 클릭하여 Create Image를 선택한다.

이름과 설명을 입력한 후 이미지 생성한다. (이미지 생성을 통해 인스턴스를 만들게 되면

편하다. 같은 구성에 인스턴스를 쉽게 만들 수 있다.)

로드밸런스를 생성하여 보겠다. 로드 밸런스를 생성하여 2개의 가용영역에서 여러 EC2

인스턴스에 걸쳐 트래픽을 밸런싱한다. Load blancer탭에서 Load Balancer을 생성한다.

HTTP HTTPS 트래픽을 사용하는 웹 애플리케이션을 위한 유연한 기능이 필요한 경우

Application Load Balancer를 선택한다. 요청 수준에 따라 작동하는 Application Load

Balancer는 마이크로서비스 및 컨테이너를 비롯한 애플리케이션 아키텍처를 대상으로 하

는 고급 라우팅 및 표시 기능을 제공한다. Application load balancer을 선택하겠다.

이름은 LabELB로 설정한 후 VPCMy Lab VPC로 설정한다. 가용 영역은 둘다 체크 한

다음 Public Subnet1, Public Subnet2를 선택한다.

보안 그룹은 기존에 있던 Enable HTTP access를 선택한다.

Routing의 이름은 LabGroup을 입력한다.

Review를 확인하고 create하면 로드밸런스가 생성된다.

Launch Configurations를 클릭한 후 생성한다.(어떤 os를 올릴지, 어떤보안을 할지 등등)

(오토 스케일링하면 인스턴스 올려야 하는데 이 부분을 정의하는 부분)

처음에 미리 만들어 두었던 나의 이미지를 선택한다.

Free tire 자격이므로 T2.micro를 선택한다.

이름은 LabConfig로 설정하고 넘어간다.

저장소도 추가한다.

보안 그룹은 기존에 존재한 Enable HTTP access를 클릭한다.

세부 정보를 검토하고 Create launch configuration 클릭!

키페어 사용하기 위해 키 페어 설정하고 create한다.

그 다음 Create an Auto Scaling group using this launch configuration 클릭한다.

Launch configuration을 이용해서 오토 스케일링 그룹을 생성한다.

Auto scaling group이름을 설정 후 시작하는 최소 인스턴스 수 2개로 설정하고 VPC망을 설정한 후 Private Subnet 1, Private Subnet 2를 클릭한다.

화면아래 Advanced Details 부분을 확장하고 설정을 구성한다. Load Balancing : Receive traffic from one or more load balancers를 클릭한다. Target group 아까 만든 LabGroup을 클릭한다. CloudWatch monitoring을 클릭한 후 넘어간다.

Auto Scaling Group을 설정한다. User scaling policies to adjust the capacity of this group을 선택한다. 2~6개 인스턴스 범위 내에 조정할 수 있도록 Scale between 텍스트 상자를 수정한다. Target value값을 60으로 한다. (CPU 활용도)

TagNameLab Instance값을 입력하여 추가한다.

Create 누르면 무사히 오토 스케일링 그룹이 생성된다.

Auto Scaling의 올바르게 작동하고 있는지 확인을 해야한다. 먼저 instance 부분에 Lab Instance라고 2개가 생겨났음을 확인할 수 있다.

왼쪽에서 Target Groups를 클릭한다. Labgroup을 클릭한다.

Tagets 탭에서 2개의 lab 인스턴스가 등록되었는지 확인한다.(healthy여야 한다.)

왼쪽 탐색 창에서 Load Balancers를 클릭한다. LabELB를 클릭한 후 DNS Name을 복사한 뒤 적어 놓는다.

새로운 브라우저에 방금 복사한 URL을 입력하고 웹 페이지가 정상 작동을 확인한다.

정상 작동을 확인하였으면 브라우저에서 새로고침을 몇 번 수행해보면서 화면상에 보이는 Instanceld 값이 변경되는지도 확인한다. 값이 변경된다면 정상적으로 ELB가 동작한다.

Auto Scaling 테스트를 하겠다. 인스턴스가 최소 2개에서 최대 6개까지 확장가능한 Auto Scailing 그룹을 생성했다. 현재 그룹에 어떠한 부하도 가해지지 않아서 현재는 두개의 인스턴스만 동작한다. Auto Scailing에 부하를 가하여 추가 인스턴스를 생성하도록 한다.

Sevices 메뉴에서 CloudWatch를 클릭한다.

Auto Scailing group에 의해서 두 개의 알람이 자동으로 생성되어 있는 것을 볼 수 있다.

Ok 알람을 클릭하여 아까 설정해놓은 CPU Utilizaion을 볼 수 있다.

아까 복사해 놓은 dns이름을 브라우저에 복사하고 enter을 누른다.

그 후 Load TEST를 누른다. CPU Load100%가 됨을 확인할 수 있다.

시간이 어느정도 지나면 AlarmLow 경보 상태가 OK로 변경되고 AlarmHigh 경보 상태가 alarm으로 변경된다. 서로 바뀌었음을 확인할 수 있다.

인스턴스 확인을 위해 EC2 Service로 이동한다.

이전단계에서 생성한 CloudWatch Alarm기반으로 Auto Scaling이 새 인스턴스를 생성했다. Cpu 가용성이 60%가 넘자마자 alarm이 울리며 autoscailing이 작동해 자동적으로 인스턴스가 새로 생겨남으로써 cpu 부하를 막아낼 수 있다.