Global users for our application
- 글로벌 애플리케이션이 오직 한 리전에 배치되었을 때 글로벌 사용자들이 접근하려고 한다면
사용자들이 애플리케이션에 접근할 때는 공용 인터넷을 통하게 되는데
라우터를 거치는 동안 수많은 홉으로 인해 상당히 지연이 발생할 수 있고 연결이 끊길 수 있는 위험 요소가 될 수 있음 - 따라서 지연 시간을 최소화하기 위해 최대한 빨리 AWS 네트워크를 통하는 것이 좋으며 이를 위해 Global Accelerator를 사용
Unicast IP vs Anycast IP
- 유니 캐스트는 하나의 서버가 하나의 IP 주소를 가지는 것을 의미하며
클라이어트가 두 개의 서버와 통신할 때 12로 시작되는 IP 주소를 참조한다면 왼편의 서버로 연결되고
반대편 IP인 98로 시작되는 IP 주소를 사용하면 오픈쪽 서버로 연결
- 애니 캐스트는 모든 서버가 동일한 IP 주소를 가지며 클라이언트는 가장 가까운 서버로 라우팅됨
Global Accelerator는 애니 캐스트 IP 개념을 사용
AWS Global Accelerator
- 애플리케이션을 라우팅하기 위해 AWS 내부 글로벌 네트워크를 활용
- 예) 사용자들이 전세계에 걸쳐 있고 인도로 라우팅하고 싶을 때
미국의 공용 인터넷을 거쳐서 보내는 대신 가장 가까운 엣지 로케이션과 통신한 후 내부 AWS 네트워크를 거쳐 A:B와 곧장 연결
- 사용자와 가까운 엣지 로케이션으로 트래픽을 직접 전송한다는 애니 캐스트를 이용
- 엣지 로케이션은 훨씬 안정적이고 지연 시간이 적은 사설 AWS 네트워크를 거쳐 애플리케이션 로드 밸런서로 트래픽 전송
- Global Accelerator는 어떤 애플리케이션에 대해서든 전 세계 유저들에게 두 개의 고정 IP를 제공할 수 있도록 함
위의 경우 한 리전에 있는 ALB만 있지만 글로벌해질 수 있으며 다수의 ALB나 리전이 될 수 있음 - 탄력적 IP, EC2 인스턴스 애플리케이션 로드 밸런서, 네트워크 로드 밸런서와 함께 작동하며 공용일 수 있고 사설일 수 있음
- 네트워크를 거치기 때문에 안정적인 성능을 보여주고 지능형 라우팅으로 지연 시간이 가장 짧은 엣지 로케이션으로 연결되며
뭔가 잘못된 경우에는 신속한 리전 장애 조치가 이루저미 - 아무것도 캐시하지 않기 때문에 클라이언트 캐시와도 문제가 없음
- 사용하는 두 개의 애니 캐스트 IP는 변하지 않으며 엣지 로케이션 다음으로 내부 AWS 네트워크가 오기 때문에 완벽
- Global Accelerator가 애플리케이션에 대해 상태 확인을 실행하여 글로벌한지 확인하며
한 리전에 있는 한 ALB가 상태 확인을 실패하면 자동화된 장애 조치가 1분 안에 정상 엔드 포인트로 실행되므로 재해 복구에 탁월 - 단 2개의 외부 IP만 허용 목록인 화이트리스트에 추가하므로 보안 측면에서 매우 안전
- Global Accelerator의 AWS Shield를 통해 DDoS 보호도 자동으로 받게 됨
AWS Global Accelerator vs CloudFront
- 둘 다 동일한 글로벌 네트워크를 사용하고 AWS가 생성한 전 세계의 엣지 로케이션을 사용하며
DDoS 보호를 위해 AWS Shield와 통합되었다는 공통점이 존재 - 클라우드 프론트는 이미지나 비디오처럼 캐시 가능한 내용과 API 가속 및 동적 사이트 전달 같은 모두에 대해 성능을 향상시키며
이 내용들은 엣지 로케이션으로부터 제공되므로 엣지 로케이션은 가끔 한번씩 출처로부터 내용을 가져오게 됨
즉, 클라우드 프론트는 캐시된 내용을 엣지로부터 가져와서 전달하므로 사용자들은 엣지로부터 내용을 받음 - 반면 Global Accelerator는 TCP나 UDP 상의 다양한 애플리케이션 성능을 향상시킴
그러나 패킷은 엣지 로케이션으로부터 하나 이상의 AWS 리전에서 실행되는 애플리케이션으로 프록시 되어
모든 요청이 애플리케이션 쪽으로 전달되고 캐싱이 불가능
따라서 게임이나 IoT, Voice over IP 와 같은 비 HTTP를 사용할 경우에 적합하고
글로벌하게 고정 IP를 요구하는 HTTP를 사용할 때 유용
또한 결정적이고 신속한 리전 장애 조치를 필요로할 때 사용
<AWS Global Accelerator 실습>
- 애플리케이션 생성
Global Accelerator 생성에 앞서 먼저 애플리케이션을 생성해야 하므로 이전과 같은 옵션과 사용자 데이터로
us-east-1에 global-accelator-demo 이름으로 EC2 인스턴스를 생성해 HTTP 서비스를 노출시킴
그리고 ap-south-1에 간 후 위와 동일한 작업을 반복하여 global-accelator-demo 애플리케이션을 또 생성
그 후 이 둘의 애플리케이션 EC2의 공용 DNS를 가져와서 새 탭에서 열어 보아 작동을 확인
- Accelerator 생성
첫 번째 Accelerator의 이름을 MyFirstAccelerator로 만든 후
우리가 선택한 HTTP 트래픽은 TCP상에서 구축되기 때문에 리스너로 80번 포트와 TCP 프로토콜을 설정
그 다음 클라이언트 밀접성은 글로벌 밸런서에 고정을 원할 때 설정하며 동일한 사용자가 동일한 엔드 포인트로 돌아가도록 함
하지만 이 실습에서는 사용하지 않음
그리고 리전 별로 엔드 포인트를 그룹화할 수 있기 때문에 첫 번째 리전은 첫 번째 인스턴스를 생성한 us-east-1로 하며
가중치를 나타내는 트래픽 다이얼은 100으로 설정하여 100%의 트래픽이 해당 리전으로 가도록 함
리전에 대한 상태 확인의 경우 EC2 인스턴스를 사용 중이기 때문에 리전에 대한 상태 확인을 80번 포트, TCP 프로토콜에서 하며
HTTP 다음 /로 설정하고 확인 간격은 10초마다 임계값 카운트는 3으로 설정
다른 방법으로는 엔드 포인트가 EC2 인스턴스가 아니고 ALB 같은 로드 밸런서일 경우에는 ALB의 상태 확인을 활용 가능
다음으로는 또다른 엔드 포인트 그룹인 ap-south-1을 추가하고 위와 동일하게 설정
이제 엔드 포인트 그룹이 2개가 되며 엔드 포인트는 애플리케이션 로드 밸런서가 네트워크 로드 밸런서, EC2 인스턴스,
또는 탄력적 IP 주소일 수 있으며, 지금은 EC2 인스턴스만 존재하므로 EC2 인스턴스를 클릭한 후
인스턴스 ID를 선택해 다시 한 번 가중치를 부여할 수 있으므로 이를 부여하고 Accelerator를 생성
- Accelerator 생성 확인
생성 후 확인해보면 두 개의 고정 IP 주소가 존재하며 이 둘은 애플리케이션에 접근하기 위한 글로벌 애니캐스트 IP 주소가 됨
또한 연결된 DNS 명도 존재하며 현재 배치 완료된 상태임을 알 수 있음
MyFirstAccelerator를 보게 되면 현재 하나의 리스너가 있고 리스너로 가면 두 개의 엔드 포인트 그룹이 존재함
- Accelerator 테스트
유럽에서 URL(DNS name)테스트를 하면 가장 가깝고 빠른 리전인 us-east-1로 리디렉션되며 새로고침으로 바뀌지 않음
이 후 VPN으로 국가를 인도네시아로 바꾸고 새로고침하면 ap-south-1로부터 응답을 받을 수 있음
다음으로 상태 확인을 테스트하기 위해 ap-south-1의 리전으로 가서 보안 그룹의 인바운드 룰을 수정하면 비정상이 되고
다시 페이지를 새로고침하면 ap-south-1에 접속할 수 없기 때문에 ap-south-1이 아니라 us-east-1을 보여주게 됨
+) Accelerator는 고정된 요금이 정해져 있으면 실행되는 동안 전체 또는 일부 시간마다 삭제되기 전까지 0.025달러를 지불하며
전송 요금도 존재하므로 리전과 목적지에 따라서 유동적으로 과금됨
'Cloud > AWS' 카테고리의 다른 글
[SAA] 아키텍처 : Snowball에서 Glacier까지 (0) | 2022.04.02 |
---|---|
[SAA] AWS Snow Family 개요 (0) | 2022.04.01 |
[SAA] CloudFront 고급 개념 (0) | 2022.03.29 |
[SAA] CloudFront 서명 URL / 쿠키 (0) | 2022.03.29 |
[SAA] CloudFront 개요 (0) | 2022.03.29 |