Cloud Infra Architecture (AWS)/AWS SAA-C03

AWS Global Accelerator란?

seongduck 2023. 1. 11. 19:07

Global Accelerator란?

  • 가장 가까운 위치로 트래픽을 라우팅하여 인터넷 대기시간을 줄이고 전송 성능을 향상하는 서비스

출처 : AWS Cretfied Solution Architecture

  • 서울에 리전이 있고 유럽에 사용자가 있다.
  • 서울 리전에 AWS 서비스를 제공하고 있는데 사용자는 서울까지 접근을 해야한다.
    • 서버로부터 지리적으로 먼 곳을 접속할때 많은 라우팅을 통해 속도가 느린다.
  • 하지만 Global Accelerator를 사용하면 사용자는 가장 가까운 거리의 Edge Location을 통해 접속한다. (aws와 고속 네트워크로 연결) Edge Location은 AWS 전용네트워크 연결(고속 네트워크)의 연결로 전송속도가 빠르다.

 

  • Global Acceleratior는 2개의 애니케스트 Public 고정 Ip가 생성된다. (IP 주소 연결 방식)
  • 애니케스트는 네트워크 트래픽을 가장 가까운 노드로 전송하는 라우팅 방식이다.
    • 리전이 미국, 일본에 있을 때, 서울에 있는 사용자가 통신할 때 지리적으로 가까운 일본으로 연결하는 것이 애니케스트이다.
  • Elastic IP, EC2 인스턴스, ALB, NLB 등의 AWS 엔드포인트를 연결하여 사용 가능하다.
  • 애플리케이션의 Health Check 기능을 통해 하나의 서버 장애 발생시 다른 서버로 라우팅이 가능하다.

 

Global Accelerator와 CloudFront는 둘다 Edge Location을 사용한다 차이점을 확인해보자

 

 

Amazon CloudFront vs CloudFront


Amazon CloudFront Global Accelerator
변화하는 동적인 IP 주소 세트를 사용 고정된 IP 주소를 사용(2개)
전 세계에 분포된 엣지 로케이션을 사용 전 세계에 분포된 엣지 로케이션을 사용
엣지 로케이션을 콘텐츠를 캐시하는데 사용 엣지 로케이션을 가장 가까운 리전의 엔드포인트로 최적화된 경로를 찾는데 사용
HTTP 프로토콜을 처리하는데 적합 TCP, UDP 프로토콜을 처리하는데 적합
캐시 가능한 콘텐츠 (이미지, 비디오)와 동적인 콘텐츠(API 가속화 및 동적 사이트 제공)의 성능을 개선 Non-HTTP를 사용하는 게임(UDP), 미디어, VoIP, 모바일 앱, IoT등의 다양한 애플리케이션의 성능을 향상

  고정 IP주소가 필요한 HTTP에 사용

 

 

실습


1) 서울과 버즈니아 북부에 각각의 EC2 노드를 생성해준다.

 

1) EC2_WEB으로 이름 설정
2) 키페어는 사용하지 않음
3) 기존보안그룹의 SSH_WEB_Access (이전에 만들어 둔것)
4) 고급세부정보의 사용자 데이터에 다음과 같이 입력(웹사이트 만드는 코드)


#!/bin/bash
yum update -y
yum install httpd -y
systemctl enable httpd.service
systemctl start httpd.service
cd /var/www/html
echo "안녕하세요. AWS EC2입니다. $(hostname -f)" > index.html

우선 이렇게 서울리전의 EC2를 생성한다.

 

이번에는 버지니아 북부로 이동한 후 인스턴스를 생성한다.

1) EC2_WEB
2) 키페어는 없음
3) 다른리전이므로 이전 보안그룹이 없다. 편집을 눌러 하나 만들어주자
3-1) ssh_web_access로 이름을 정해주고 ssh - anywhere | HTTP - Anywhere 로 허용한다.
4) 고급세부정보에서 사용자 데이터 부분을 위와 같이 적고 만들어준다.


#!/bin/bash
yum update -y
yum install httpd -y
systemctl enable httpd.service
systemctl start httpd.service
cd /var/www/html
echo "안녕하세요. AWS EC2입니다. $(hostname -f)" > index.html

이렇게하면 각 리전의 인스턴스를 모두 생성완료 했다.

 

2) 각각의 EC2의 IPv4를 통해 정상적으로 접속이 되는지 확인

  • 서울리전

 

  • 버지니아 북부 리전

둘다 정상적으로 접속 완료

두개의 EC2를 서로다른 리전에 설치를 완료했다.

 

3) Global Accelerator 생성

1) Global Accelerator 만들기 클릭후 이름은 Global Accelerator로 적어준다.
2) type은 2개가 있다. 스탠다드는 자동으로 라우팅을 하는데 유저와 가장 가까운 거리를 연결
반면, 커스텀은 사용자가 직접 라우팅을 해주는 방식이다.

 

Add listener는 어떤 프로토콜을 사용할지 정하는건데 여기선 80포트의 TCP를 선택한다.
그리고 None으로 한다. (전의 동일한 서버로 지속적으로 접속하는 것을 사용하지 않겠다.)

 

endpoint gropus은 접속할 ec2의 모음이다. 
서울리전을 선택하고 add endpoint group을 하고 버즈니아 북부 ec2를 선택해준다.

 

리소스 연결을 해야하는데 add endpoint를 클릭후 EC2 Instance를 선택한다.
그리고 ec2_web을 선택한다.
아래부분도 동일하게 설정후 만들어준다.

 

완료!!

  • 2개의 고정 IP가 생겼다.

 

3) 연결해보기

  • global Accelerators에 연결하려면 고정 IP나 DNS name으로 연결이 가능하다.

 

URL창에 이 DNS name을 넣어보면 현재 위치(서울)과 가장 가까운 곳으로 연결되게 된다.

사진도 서울리전으로 연결된 것을 확인할 수 있다.

 

VPC를 이용하여 미국으로 이동해서 다시 이 경로로 검색하보면 버즈니아 북부의 EC2로 접속이 완료된 것을 확인할 수 있다.

 

4) 서울의 리전의 EC2를 중단시키고 확인해보자

  • 우선 만들어놓은 Global Accelerators를 클릭한다.
  • 그 후 만들어놓은 리스너를 클릭하면

각각 만들어 놓은 리전(서울, 버즈니아 북부)이 보인다.

 

다시 앤드포인트를 클릭해서 들어가보면 만들어 놓은 EC2가 보인다.

 

한국 EC2를 삭제하고 재접속 해보자

 

종료 중이고 Health를 확인해보면

 

죽어있느 것을 확인할 수 있다.

그러면 서울에서 다시 DNS Name으로 접속을 하면!!

 

미국 리전으로(남아 있는 ec2중 가장 가까운 리전의 EC2)연결된다!!