Creating a highly available EC2 instance
- EC2 인스턴스는 기본적으로 하나의 가용 영역에서만 실행되므로 가용성이 그리 높지 않지만 가용성을 높일 수 있음
- 웹 서버를 가동하고 있는 공용 EC2 인스턴스가 있고 웹 서버에 액세스하려고 한다면
EC2 인스턴스에 탄력적 IP를 연결하고 사용자가 탄력적 IP를 통해 웹사이트에 곧장 액세스하게 해야 함
그러면 사용자는 EC2 인스턴스에서 직접 작업할 수 있고 웹 서버에서 결과를 받게 됨 - 고가용성 EC2 인스턴스를 만드는 방법 1) 대기 인스턴스 + CloudWatch Events or 경보
이 경우, 만약 일이 잘못된 경우를 대비해 대기 인스턴스를 만들어 EC2 인스턴스의 가용성을 높일 수 있음
뭔가 잘못됐다는 것을 알려면 모니터링이 필수이므로 이벤트에 기반해 CloudWatch Eventes나 경보를 만든 후
인스턴스가 종료되고 있는지 확인할 수 있으며, 또한 웹 서버가 있으면 CPU가 100%까지 올라갈 경우를 대비해
CPU를 모니터링하는 CloudWatch 경보를 설정해야 하며
만약 100%까지 도달한다면 EC2 인스턴스에 문제가 생긴 것이므로 그에 관한 경보를 발동해야 함
인스턴스를 모니터링 하는 방법은 여러 개가 있고 요구 사항에 따라 달라지며
경보나 CloudWatch Events에서 람다 함수를 발동해 원하는 작업을 할 수 있게 할 수 있음
그 후 대기 인스턴스에 탄력적 IP를 연결하는 API를 호출해 연결되면 이 IP는 한 인스턴스에만 연결될 수 있으므로
다른 인스턴스에서는 분리되고 이전의 다른 EC2 인스턴스는 종료되거나 사라지게 되어
새 대기 EC2 인스턴스는 장애 조치가 취해지게 되는 것
이 때 사용자는 탄력적 IP를 통해 아키텍처와 소통하기 때문에 백엔드에서 모두 진행되므로 무슨 일이 일어나는지 알 수 없음 - 대기 인스턴스가 없는 경우도, 람다 함수는 API를 호출해 인스턴스가 실행되지 않았을 경우 실행할 수 있음
Creating a highly available EC2 instance With an Auto Scaling Group
- 고가용성 EC2 인스턴스를 만드는 방법 2) ASG + 새 EC2 인스턴스
두 가용 영역에 ASG이 있을 때 사용자가 탄력적 IP를 통해 애플리케이션과 소통할 경우 어떻게 ASG를 구성해야 할까
인스턴스의 최솟값과 최댓값을 1로 설정하고 적정 값도 1로 설정해 두 개의 가용 영역에 지정하며
EC2 인스턴스를 하나만 가져오게 하여 그 인스턴스를 첫 번째 가용 영역에 들어가게 설정하여
EC2 인스턴스의 사용자 데이터가 나타나게 되면 탄력적 IP 주소를 태그에 기반해 연결하게 됨
그 후 사용자 데이터가 API 호출을 발행하고 탄력적 IP가 공용 EC2 인스턴스에 연결되게 되므로 사용자가 웹서버와 소통 가능
이 경우 인스턴스가 종료될 경우 ASG는 첫 인스턴스를 종료하고 다른 가용 영역에 대체 E2를 생성하여
첫 번째 인스턴스가 종료되고 두 번째 인스턴스가 EC2 사용자 데이터 스크립트 실행 후 탄력적 IP를 연결해 장애 조치가 이뤄짐
그러므로 CloudWatch Events나 경보가 필요하지 않음
즉, 한 인스턴스가 종료되는 것을 ASG가 보자마자 다른 가용 영역에 새 EC2 인스턴스를 생성
이 때, EC2 인스턴스가 탄력적 IP 주소를 연결하기 위해 API를 직접 호출할 때 해당 인스턴스가 탄력적 IP 주소를
연결하기 위해 API를 호출할 수 있는 인스턴스 역할이 있는지 확인해야 함
그러므로 탄력적 IP 주소를 연결하고 API 호출이 성공할 수 있도록 EC2 인스턴스 역할 설정을 해두어야 함 - 최소, 최대, 적정 값을 1로 설정한 이유는 ASG 전체에서 동시에 여러 개의 인스턴스를 실행할 수 없기 때문임
Creating a highly available EC2 instance With ASG + EBS
- 고가용성 EC2 인스턴스를 만드는 방법 3) ASG + EBS 볼륨 + 새 EC2 인스턴스
위의 경우에 EC2 인스턴스를 상태 유지하게 하고 EBS 볼륨을 줄 수 있음
ASG와 두 가용 영역 공용 EC2 인스턴스, 탄력적 IP가 있을 때 EC2 인스턴스에 EBS 볼륨까지 연결
EC2 인스턴스가 데이터베이스일 때 이를 고가용성으로 만들려면
모든 데이터가 EBS 볼륨에 있고 EBS 볼륨은 특정 가용 영역에만 고정되어 있음
EC2 인스턴스가 종료될 경우 ASG는 수명 주기 후크를 사용해 EBS 볼륨에서 스냅샷을 얻을 수 있는 스크립트를 생성할 수 있음
EC2 인스턴스가 종료되자마자 스냅샷이 발동되기 때문에 EBS 볼륨에 문제가 생겼다는 것을 알 수 있으며
그러므로 EBS 스냅샷을 올바르게 태그하면 ASG는 대체 EC2 인스턴스를 실행할 수 있음
그 후 위와 동일하게 API 호출이 제대로 됐는지 확인하기 위해 EC2 인스턴스 역할이 있어야 하며
대체 EC2 인스턴스에 탄력적 IP를 직접 연결하면 됨
즉, EBS 볼륨이 스냅샷을 만들고 스냅샷에서 다른 가용 영역으로의 복구 확인을 위해 EC2 사용자 데이터 및 수명 주기 후크 이용
'Cloud > AWS' 카테고리의 다른 글
[SAA] 기타 서비스 (0) | 2022.05.03 |
---|---|
[SAA] Bastion 호스트 고가용성 (0) | 2022.05.03 |
[SAA] AWS의 고성능 컴퓨팅 (HPC) (0) | 2022.05.03 |
[SAA] AWS에서 IP 주소 차단 (0) | 2022.05.03 |
[SAA] AWS의 캐싱 전략 (0) | 2022.05.03 |