준비물 : 2개의 EC2 인스턴스(Amazon Linux 2) , SSH 원격접속 프로그램(MobaXterm)
Auto Scaling 자동 동기화 시리즈 시나리오
다음 사진은 ELB 와 Auto Scaling EC2로 생성한 간단한 고가용성 아키텍처다.
이미지를 기반으로 실행하는 Auto Scaling은 다음과 같은 불편함을 가진다.
•
AutoScaling은 손쉽게 고가용성을 달성하게 해주지만 지정한 이미지를 기준으로 EC2를 생성한다.
•
실행중인 EC2
새로 생성된 EC2 사이에 상태 차이가 발생한다.
•
기존 서버 내부 파일을 변경하는 경우에도 변경 전 이미지로 EC2가 추가되기 때문에 동일한 상태를 유지하기 어렵다.
•
매번 서버 내부 정보가 바뀔 때 이미지를 새로 생성하고 AutoScaling 구성을 다시 설정하는 것은 사실상 불가능하다.
내가 생각한 요구사항은 다음과 같다.
1.
서버들이 파일을 한 공간에 저장하고
2.
Auto Scaling으로 생성된 새로운 서버도 별도의 설정 없이 해당 공간에 접근할 수 있으며
3.
Auto Scaling으로 서버가 추가될 때 모든 변경된 파일들을 자동으로 받을 수 있는 환경!
생각해낸 아키텍처는 다음과 같다.
•
EFS (NFS or NAS로 생각하면 좋을 것 같다) 를 통해 모든 EC2가 한 공간에 파일을 저장한다.
•
EFS 마운트 정보를 가진 AMI를 생성하여 생성되는 모든 EC2가 EFS에 마운트된다.
•
System Manager의 Run-Command 기능을 활용하여 Auto Scaling에서 정한 태그를 가진 모든 서버에 명령을 실행
•
AutoScaling을 통해 EC2가 Scale-Out(추가)될 때 CloudWatch가 해당 이벤트를 감지하여 Run-Command를 자동으로 실행
ALB 생성부터 차근차근 시작한다.
시작 전
시리즈 포스팅 링크
•
여기를 눌러 EC2 Instance를 생성할 수 있다.
•
여기를 눌러 CentOS, Ubuntu와 같은 타 배포판에서 AWS CLI 환경을 구성할 수 있다.
◦
Amazon Linux 2 AMI는 프리티어이면서 AWS CLI환경이 구성된 이미지다.
•
목적 : Application Load Balancer를 만들고 EC2 Instance와 연결하여 로드밸런싱 환경을 구축한다.
•
기능 확인을 위한 최소한의 환경만 구성하였다.
Application Load Balancer
대상그룹 생성
Load Balancer 생성
EC2 연동 테스트
테스트
결론
•
ALB를 생성하여 HTTP로 접근하는 웹서버에 대한 로드밸런싱을 수행할 수 있다.