끄적끄적 아무기록

AWS_Auto Scaling 및 Load Balancer를 이용한 고가용성 환경 구축(2)

by 현생사는갓생지망생
반응형

고가용성 환경 만들기



작업 6: 애플리케이션 로드 밸런서 생성


여러 Amazon EC2 인스턴스에 요청을 분산하는 Application Load Balancer를 생성한다.

로드 밸런서는 인스턴스 상태 확인을 수행하고 정상 인스턴스로만 요청을 전송하기 때문에

고가용성 구조의 핵심 구성 요소이다.




아직 아무 인스턴스도 존재하지 않는다인스턴스는 다음 작업에서 Auto Scaling 그룹이 생성할 것이다.

 






Services 메뉴에서 EC2 선택 후 왼쪽 탐색 창에서 Load Balancers를 클릭한다.

Create Load Balancer를 클릭하면 세 가지 유형의 로드 밸런서가 표시된다.

Application Load Balancer 아래의 Create를 클릭한다.

 






Name : LB1

 






아래에 Availability Zones 섹션을 찾는다.

VPC : Lab VPC

이제 로드 밸런서를 사용할 서브넷을 지정한다로드 밸런서는 인터넷 연결 부하를 분산하므로

퍼블릭 서브넷 두 개를 모두 선택한다.





 


설명에 Security group for the web servers이 있는 보안 그룹을 선택한다.

이 보안 그룹은 들어오는 HTTP 트래픽만 허용하므로 로드 밸런서와 웹 서버 양쪽에 사용할 수 있다.

 






대상 그룹은 로드 밸런서로 들어오는 트래픽을 전송할 위치를 정의한다애플리케이션

로드 밸런서는 수신 요청 URL을 기준으로 트래픽을 여러 대상 그룹으로 전송할 수 있다.

실습에서의 웹 애플리케이션은 하나의 대상 그룹만 사용할 것이다.

 

Advanced health check settings를 클릭하여 확장한다.

애플리케이션 로드 밸런서는 자동으로 모든 인스턴스의 상태 확인을 수행하여 상태가 정상이고

요청에 응답하는지 확인한다기본 설정이 권장되지만실습을 위해 약간 빠르게 설정한다.

Healthy threshold : 2

Interval : 10

이렇게 하면 10초마다 상태 확인을 수행하고

인스턴스가 연속 두 번 정상적으로 응답하면 정상으로 간주한다.





 


대상은 로드 밸런서의 요청에 응답할 인스턴스이다아직 아무런 웹 애플리케이션 인스턴스가

없으므로 이 단계는 건너뛰어도 된다.





 


이제 로드 밸런서가 백그라운드에서 프로비저닝된다.

이제 Auto Scaling 그룹을 생성하여 Amazon EC2 인스턴스를 시작할 수 있다.

 

 


작업 7: Auto Scaling 그룹 생성


Auto Scaling은 사용자가 정의한 정책일정 및 상태 확인에 따라 자동으로 Amazon EC2

인스턴스를 시작하거나 종료하도록 설계된 웹 서비스이다또한인스턴스를 여러 가용 영역에

자동으로 분산하여 고가용성 애플리케이션을 만든다.

 

이번 작업에서는 Amazon EC2 인스턴스를 프라이빗 서브넷에 배포하는 Auto Scaling 그룹을

생성한다이렇게 하면 프라이빗 서브넷의 인스턴스가 인터넷에 접속할 수 없으므로

애플리케이션 배포 시 최상의 보안을 확보할 수 있다대신사용자는 요청을 로드 밸런서로

보내고 밸런서는 요청을 프라이빗 서브넷의 Amazon EC2 인스턴스로 전달한다.

 






왼쪽 탐색 창에서 Auto Scaling Groups를 클릭 후 Create Auto Scaling group을 클릭한다.

Get started을 클릭한다.

시작 구성은 Auto Scaling이 시작할 인스턴스 유형을 정의한다

인터페이스가 Amazon EC2 인스턴스를 시작하는 것과 비슷하게 보이지만

인스턴스를 시작하기보다는 나중에 사용할 수 있도록 구성을 저장한다.

이전에 생성한 AMI를 사용하도록 시작 구성을 설정한다여기에는 구성 서버에 설치한 소프트웨어 복사본이 포함된다.

 






My AMIs > Web application > Select를 클릭한다.







기본값(t2.micro)을 적용한다.

 






Name : Web application

 






이 인스턴스에서는 추가 스토리지가 필요 없으므로설정은 기본값으로 유지한다.

 






Select an existing security group 클릭 후 Security group for the web servers을 선택한다.

 






SSH를 통해 인스턴스에 연결할 수 없다는 경고 메시지가 표시될 수 있다.

서버 구성이 이미 AMI에 정의되었으며 인스턴스에 로그인할 필요가 없으므로 경고 메시지는 무시해도 무방하다.

 






qwikLABS 키 페어를 수락하고 승인 확인란을 선택한 후, Create를 클릭한다.

이제 Auto Scaling 그룹을 생성하라는 메시지가 나타난다.

여기에는 인스턴스 수와 인스턴스가 시작되어야 하는 위치가 정의되어 있다.

 






Group name : Web application

Group size : Start with 2 instances

Network : Lab VPC

Subnet : Private Subnet 1, Private Subnet 2

Auto Scaling은 선택된 각기 다른 가용 영역에 있는 서브넷으로 인스턴스를 자동 분산한다.

이렇게 하면 하나의 가용 영역에 문제가 발생해도 애플리케이션이 작동하기 때문에 탁월한

고가용성을 유지할 수 있다.







Advanced Details를 클릭하여 확장한다.

Load Balancing 체크 박스를 체크하고 Target Groups을 Group1로 선택한다.

 






이 구성은 Auto Scaling이 항상 Auto Scaling 그룹에 두 개의 인스턴스를 유지할 것을 지시한다.

이렇게 하면 하나의 인스턴스에 문제가 발생해도 애플리케이션이 계속 운영되므로 고가용성에

이상적이다인스턴스에 문제가 발생하면 Auto Scaling이 자동으로 대체 인스턴스를 시작한다.

 






어떤 알림도 설정하지 않는다.

 






Auto Scaling 그룹에 배치된 태그도 Auto Scaling이 시작한 인스턴스에 자동으로 전파할 수 있다.

Key : Name

Value : Web application

 






처음에는 Auto Scaling 그룹이 0개의 인스턴스를 보여주지만 곧 2개의 인스턴스로 업데이트된다.

 



작업 8: 애플리케이션 테스트하기


웹 애플리케이션 실행을 확인하고 고가용성을 테스트한다.

 



왼쪽 탐색 창에서 Target Groups를 선택하고 Targets 탭을 클릭한다.

두 인스턴스의 Status가 모두 healthy로 표시될 때까지 기다린다.

로드 밸런서에 연결하여 애플리케이션을 테스트하고 Amazon EC2 인스턴스 중 하나에 요청을 전송할 것이다

로드 밸런서의 DNS 이름을 검색해야 한다.

 






왼쪽 탐색 창에서 Load Balancers를 클릭한다. Description 탭에서 DNS name을 복사한다.

LB1-827152099.ap-northeast-2.elb.amazonaws.com

 






새로운 웹 브라우저 탭을 열고 DNS name을 붙여 넣는다.

로드 밸런서가 요청을 Amazon EC2 인스턴스 중 하나로 전달하였다인스턴스 ID와 가용 영역은

웹 애플리케이션 하단에 표시된다.







웹 브라우저를 새로 고침 해보면 인스턴스 ID와 가용 영역이 가끔 두 인스턴스 간에

변경되는 것이 확인된다.

 

이 웹 애플리케이션이 표시될 때 정보 흐름은 다음과 같다.





1. 인터넷과 연결된 퍼블릭 서브넷에 있는 로드 밸런서에 요청을 보낸다.


2. Load Balancer는 프라이빗 서브넷에 있는 Amazon EC2 인스턴스 중 하나를 선택하여 요청을 전달한다.


3. Amazon EC2 인스턴스는 freegeoip.app에서 지리 정보를 요청한다.

이 요청은 인스턴스와 같은 가용 영역에 있는 NAT Gateway를 통해 인터넷으로 나간다.


4. 그런 다음 Amazon EC2 인스턴스가 로드 밸런서로 웹 페이지를 돌려주고

로드 밸런서는 웹 브라우저로 페이지를 전달한다.

 



작업 9: 고가용성 테스트


Amazon EC2 인스턴스 중 하나를 중지시켜 고가용성을 확인할 수 있다.

 



먼저 Configuration Server는 더 이상 필요하지 않으므로 종료해도 무관하다.

그런 다음웹 애플리케이션 인스턴스 중 하나를 중지시켜 오류 상황을 시뮬레이션한다.

 






둘 중 어떤 인스턴스를 선택하든 관계 없다.

 






잠시 후로드 밸런서가 해당 인스턴스가 응답하지 않는 것을 감지하고 자동으로 모든 요청을

남은 인스턴스로 전달되도록 경로를 지정한다.

 






웹 브라우저의 웹 애플리케이션 탭으로 돌아가 페이지를 여러 번 새로 고침한다.

페이지 아래쪽에 표시되는 Availability Zone이 바뀌지 않는 것이 확인된다.

 






몇 분 후, Auto Scaling도 인스턴스 오류를 감지한다. Auto Scaling은 두 개의 인스턴스가

실행되도록 구성되었으므로 Auto Scaling이 자동으로 대체 인스턴스를 시작한다.

몇 분 후새로운 인스턴스에 대한 상태 확인이 정상이 되고 로드 밸런서가 두 가용 영역으로

트래픽을 전달할 것이다.

반응형

블로그의 정보

현생이네

현생사는갓생지망생

활동하기