크래프톤정글/정글생활

[나만무] AWS 환경 구성

아람2 2024. 12. 21. 01:34
반응형

나만무는 AWS 에 배포해야 하기 때문에 AWS 환경을 구성해야 한다 

저번에 들었던 AWS 교육 자료를 참고하여 (따라해서) 그림속마음의 AWS 환경을 구성했다 

 

VPC, Instance 를 만들고 AMIs Image 를 만들어준다 

 

VPC 

Virtual Private Cloud 

논리적으로 격리된 가상 네트워크에서 AWS 리소스를 시작할 수 있다 

VPC 에는 리전의 각 가용상 영역에 하나의 서브넷이 있고, 각 서브넷에 EC2 인스턴스가 있고,

VPC 의 리소스와 인터넷 간의 통신을 허용하는 인터넷 게이트웨이가 있다 

🐣 VPC 를 설치할 때는 NAT Gateway 에서 시간이 조금 소요된다 

마찬가지로 삭제할 때 NAT Gateway 삭제가 오래 걸리기도 하고,

NAT 에 걸리는 게 많아서 삭제가 조금, 사실 엄청 많이 번거롭다 🐣

Instance 

AMI, Amazon Machine Image 

진짜 열심히 썼는데,... 다 날아가서 너무너무 속상해서 다시 쓸 힘이 없다 

게다가 지금 벌써 1시a.m.도 넘었다ㅠ 이 밑에서부터 다시 써야지 


🐣 AMI 는 인스턴스 생성 시 필수적이지만 반드시 직접 만들 필요는 없다 

기본 AMI 는 AWS 가 미리 제공하는 템플릿이고, AWS 계정마다 동일한 이미지 목록을 사용할 수 있다 🐣 

Instance 를 이용하여  Auto Scaling 에 사용하기 위해 AMI 를 만들어줬으니 인스턴스는 지워도 된다 

VPC + Instance + AMIs 까지 구현했을 때의 아키텍처는 아래와 같다 

 

Load Balancer 

로드 밸런싱 Load Balancing 은 말 그대로, 네트워크 트래픽이나 작업 부하를 균등하게 분배하는 기술이다 

정리하면, 어플리케이션을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법이다 

우리는 HTTP 요청을 부하 분산 처리하는 Application Load Balancer 를 구성하고 설정한다 

ALB 의 Subnet 도 Public 으로, Security Group 은 HTTP 만 설정한다 

시작 템플릿 

ALB 가 클라이언트의 요청을 받아서 실제로 요청을 처리할, 적절한 EC2 인스턴스에 분배하는 역할을 하기 때문에 

ALB 뒤에 EC2 인스턴스를 배치해야만 로드 밸런서가 요청을 정상적으로 분배할 수 있다 

그리고 Auto Scaling Group 에서 시작할 Amazon EC2 Instance 를 구성하려면 

시작 템플릿, 시작 구성, EC2 Instance 를 사용할 수 있고, 우리는 시작 템플릿을 사용한다 

 

시작 템플릿은 한 리소스 내의 모든 시작 파라미터를 한꺼번에 구성하도록 되어 있어서 인스턴스 생성에 필요한 단계 수를 줄일 수 있다 

AMI 및 인스턴스 유형과 같이 Amazon EC2 가 인스턴스를 시작하는 데 필요한 정보가 포함되어 있고, 

Auto Scaling Group 은 이를 참조하여 확장 (Scale Out) 이벤트가 발생할 때 새로운 인스턴스를 추가하게 된다 

 

🐣 시작 템플릿을 뭐가 좋은건지 궁금했는데 아래의 사유 때문이라고 한다

1. 자동화된 인프라 관리 - 리소스를 수동으로 설정하는 것보다 템플릿을 사용하는 것이 효율적이다

2. 재사용성 - 여러 개의 환경을 설정할 때 일관성 있는 인프라 환경을 구성할 수 있다

3. 버전 관리 - 인프라 변경 사항을 추적하고 버전 관리를 할 수 있다

4. 효율적인 리소스 관리 - 리소스를 선언적으로 정의할 수 있기 때문에 복잡한 리소스 간의 관계를 한 번에 이해하고 관리할 수 있다

5. 서버리스 및 확장성 - 서버리스 리소스를 쉽게 설정할 수 있도록 템플릿을 제공함으로써 확장성이 뛰어난 인프라를 구축할 수 있다 🐣

 

시작 템플릿을 만들 때 Auto Scaling Guidance 도 Check 해줬다 

이 항목을 선택하면, 생성하는 템플릿이 Amazon EC2 Auto Scaling 에서 활용되도록 할 수 있다 

 

Auto Scaling Group 

Auto Scaling 을 사용하면 어플리케이션의 로드를 처리할 수 있는 정확한 수의 EC2 인스턴스를 유지할 수 있다 

최소 인스턴스 수, 최대 인스턴스 수를 설정해서 딱 그만큼만의 인스턴스를 사용할 수 있다 

여기도 진짜 열심히 썼는데 다시 쓰려니까 너무 기운이 없다,.... 긱사 문 닫히기 전에 내려가야겠다 

Auto Scaling 을 사용하면 시스템 자원들의 메트릭 Metric 값을 모니터링하여 서버 사이즈를 자동으로 조절해 준다 

 

여기에서는 Subnet 을 Private 로 설정해 준다 

아까 설정한 로드 밸런서를 선택해 주고 최소/ 최대 인스턴스 수도 설정해 준다 

그렇게 Load Balancer 와 Auto Scaling Group 까지 설정해 주면, 아키텍처가 완성된다 

 

Auto Scaling Group 확인해 보기

Load Balancer 의 DNS 이름으로 접속하면 아래와 같이 ap-northeast-2a 의 웹 인스턴스에서 서비스하고 있음을 알 수 있다 

여기서 LOAD TEST 를 눌러주면 CPU Load 가 올라간다 

 

Auto Scaling Groups 의 Monitoring Tab 에서 CPU Utilization 을 확인할 수 있다 

CPU Load 가 100% 일 때 인스턴스를 4개 (MAX) 사용하고, 시간이 지난 후에 다시 2개 (Default) 로 줄어드는 것을 볼 수 있다 

 

 

반응형