01. ELB [Elastic Load Balancing]
1.1 ELB란?
1.1.1 고가용성 환경 구성
VPC 내 단일 서버를 통한 서비스 구성하여 사용자가 접근하는 환경에 대해 단일 서버가 장애가 발생이 되면 서비스를 받을 수 없다.
지속적인 서비스 제공을 위해 서버를 다중화 구성하여 서비스의 연속성을 보장하는 고가용성 구성이 필요하다.
- 위 그림과 같이 다수의 서버를 구성하여 서비스를 제공하면, 인스턴스 하나가 장애가 발생하더라도 나머지 인스턴스가 존재하여 서비스를 받을 수 있다. 하지만 서비스 타깃을 사용자 입장에서 일일이 지정을 해주어야 한다는 문제가 존재한다.
- 사용자 입장에서 장애를 인지하여 타깃을 변경하기 전까지는 서비스를 받을 수 없을 것이며 이러한 환경이 서비스 연속성을 보장하는 고가용성 구성이라 할 수 없을 것이다.
- 이러한 문제를 해결하기 위하여 부하 분산 기술인 로드 밸런서(Load Balancer)가 존재하며, 이 로드 밸런서는 서버의 상태를 파악하고 데이터를 분산하여 전달하는 접점 역할을 수행한다.
1.1.2 ELB 정의
: ELB(Elastic Load Balancer)는 AWS에서 제공하는 로드 밸런싱 기술이다. 로드 밸런서는 위에 설명한 바아 같이 EC2 인스턴스의 상태를 확인하고 데이터를 분산하여 전달하는 단일 접점 역할을 수행한다.
위 그림가 같이 사용자로서는 서버의 타깃(Target)을 일일이 지정하는 것이 아닌, 로드 밸런서를 타깃으로 하며 로드 밸런서에서 알아서 정상적인 서버로 부하 분산을 처리한다.
- 위 그림은 로드 밸런서의 구성에 대해 도식하하여 보여주고 있다.
- 로드 밸런서는 크게 자신이 서비스하는 대상을 정의하는 리스너(Listener)와 부하 분산 대상을 정의하는 대상 그룹(Target Group)으로 이루어져있다.
▶ 리스너
: 리스너는 프로토콜 및 포트를 사용하여 연결 요청을 확인하는 프로세스이다. 로드 밸런서에서 서비스하고자 하는 프로토콜과 포트를 지정하는 규칙을 생성한다.
▶ 대상 그룹
: 하나 이상의 대상을 라우팅하여 부하 분산을 하는 데 사용한다. 대상 그룹에 속한 대상에 대해 주기적을 확인하는 프로세스를 통해 상태 확인을 수행한다. 그리고 정상적인 상태의 대상에게만 데이터를 전달한다.
1.1.3 ELB 종류
- Application Load Balancer [ALB]
- Network Load Balancer [NLB]
- Classic Load Balancer [CLB]
▶ Application Load Balaner [ALB]
ALB는 HTTP나 HTTPS와 같이 웹 애플리케이션에 대한 분산 처리를 제공하는 로드 밸런서이다.
▶ Network Load Balaner [NLB]
NLB는 TCP나 UDP 프로토콜에 대한 포트 정보를 정의하여 네트워크 기반의 분산 처리를 제공하는 로드 밸런서이다.
▶ Classic Load Balaner [CLB]
CLB는 VPC의 예전 버전인 EC2-Classic에 대해서도 분산 처리를 제공할 수 있는 이전 세대의 로드 밸런서이다.
구분 | ALB | NLB | CLB |
프로토콜 | HTTP, HTTPS | TCP, UPD, TLS | TCP, TLS, HTTP, HTTPS |
처리 속도 | 느림 | 빠름 | 중간 |
플랫폼 | VPC | VPC | VPC, EC2-Classic |
OSI 계층 | 7 Layer | 4 Layer- | - |
동일 인스턴스로 다수의 포트 전달 |
지원 | 지원 | 미지원 |
IP를 통합 관리 | 미지원 | 지원 | 미지원 |
프라이빗링크 지원 | 미지원 | 지원 | 미지원 |
경로 기반 라우팅 | 지원 | 미지원 | 미지원 |
호스트 기반 라우팅 | 지원 | 미지원 | 미지원 |
1.1.4 ALB vs NLB
▶ Application Load Balancer
- HTTP(S)에 특화된 애플리케이션 레벨의 로드 밸런서이다.
- 다른 로드 밸런서에 비해 처리 속도가 조금 느릴 수 있으나 HTTP(S)에 대해 세부적이고 다양한 정책으로 라우팅이 가능하다.
- URL 경로 기반 라우팅, 호스트 기반 라우팅, HTTP 헤더 기반 라우팅 등과 같이 다양한 규칙을 생성하여 포워드, 리다이렉션, 지정 HTTP 응답 등의 작업을 수행할 수 있다.
- 추가로 ALB는 Lambda 함수를 호출하여 HTTP(S) 요청을 처리할 수 있다.
▶ Network Load Balancer
- NLB는 TCP, UDP, TLS 프로토콜에 대하여 로드 밸런싱을 수행할 수 있는 OSI 4계층 레벨의 로드 밸런서이다.
- 가장 빠른 속도가 가능하며 고정 IP나 탄력적 IP를 보유할 수 있다.
- 그리고 VPC 엔드포인트 서비스로 연결하여 프라이빗 링크 구성을 할 수 있다.
1.1.5 ELB 통신 방식
ELB는 다음과 같이 2가지 유형의 통신 방식을 가지고 있다.
▶ 인터넷 연결 [Internet Facing Load Balancer]
- 퍼블릭 주소를 가지고 있어, 인터넷을 통해 요청을 로드 밸런서에 등록된 EC2 인스턴스로 라우팅한다.
▶ 내부 [Internal Load Balancer]
- 프라이빗 주소만 가지고 있어, 로드 밸런서를 위한 VPC 내부에 액세스하여 등록된 EC2 인스턴스 등 컴퓨팅 자원으로 라우팅한다.
1.1.6 ELB 특징
▶ 고가용성
: ELB로 인입되는 트래픽을 다수의 대상으로 분산하여 고가용성(High Availability)을 유지한다.
▶ 상태 확인
: 대상 그룹에 대한 Keepalive를 통해 주기적으로 상태를 확인한다.
▶ 보안 기능
: 보안 기능을 적용하여 보안 옵션을 부여할 수 있다. (단, NLB는 보안 그룹이 적용되지 않는다)
▶ 4계층/7계층 로드밸런싱
: HTTP/HTTPS의 7계층의 애플리케이션을 로드 밸런싱하거나 TCP/UDP의 4계층의 로드 밸런싱을 사용할 수 있다.
▶ 운영 모니터링
: ELB 애플리케이션 성능을 실시간으로 모니터링할 수 있다.
02. Route 53
2.1 DNS [Domain Name System]
2.1.1 DNS 개요
- 네트워크 통신을 수행할 때 주요한 요소 중의 하나가 대상을 지정하는 주소이다.
- 해당 주소를 통하여 목적지 대상을 지정할 수 있으며, 출발지 대상을 알릴 수 있다.
- 네트워크상에서 다양한 주소 체계가 존재하지만, 보편적으로 IP 체계를 사용한다.
2.1.2 DNS 서버 분류
▶ DNS 해석기 (DNS resolver)
: 클라이언트와 네임 서버의 중계자 역할을 한다. DNS 요청에 대해 네임 서버로 전달하며, DNS 응답을 클라이언트에게 전달한다.
▶ 루트 네임 서버 (Root Name Server)
: DNS 서버의 최상위 네임 서버로 DNS 해석부터 발생한 DNS 요청에 대해 적절한 TLD 네임 서버 정보를 반환한다.
▶ TLD 네임 서버(Top Level Domain Name Server)
: .com.net과 같은 최상위 도메인에 대한 네임 서버로 해당 영역에 포함되는 모든 도메인 이름의 정보를 유지한다. DNS 요청에 대해 TLD 네임 서버에서 권한 있는 네임 서버를 지정하여 반환한다.
▶ 권한 있는 네임 서버 (Authoritative Name Server)
: DNS 해석기가 TLD 네임 서버로부터 응답을 받으면, 확인자는 해당 응답을 권한 있는 네임 서버로 보낸다. 일반적으로 권한 있는 네임 서버는 요청하는 도메인 주소에 대한 IP 주소를 확인하는 마지막 단계이다.
2.2 Route 53 소개
2.2.1 Route 53 개요
- Route 53은 AWS에서 제공하는 관리형 DNS 서비스이다.
- 사용자는 AWS 상의 Route 53을 통하여 도메인 이름을 구매를 대행하고, 구매한 도메인 주소에 대한 호스팅 영역을 생성하여 네임 서버를 구축하고 레코드를 생성하여 DNS 요청에 대한 응답을 처리할 수 있다.
- 그리고 Route 53에서 다양한 라우팅 정책을 수립하여 효율적인 트래픽 흐름을 보장받을 수 있다.
▶ 도메인 이름 등록
: Route 53을 통해 도메인 이름을 등록할 수 있다. 이때 Route 53의 역할은 등록대형소가 되어 등록소인 TLD 네임 서버에 전파하여 해당 도메인 이름을 사용할 수 있도록 대행한다.
▶ 호스팅 영역
: DNS 관리를 할 수 있는 호스팅 영역을 생성할 수 있다. 기본적으로 Route 53을 통해 도메인 이름을 등록하면 자동으로 호스팅 영역이 생성된다. 해당 호스팅 영역이 생성되면 네임 서버가 생성되어 DNS 요청에 대한 DNS 응답을 반환한다.
▶ 레코드
: 생성한 호스팅 영역에 레코드를 작성할 수 있다. 레코드 유형에 따른 값을 입력하여 유지한다. 해당 레코드를 생성할 떈 다양한 레코드 정책을 수립할 수 있다.
- goocle.com 도메인 주소에 대한 등록을 등록대행소(Route 53)을 통해 수행한다. 이를 통해 도메인 주소는 등록소의 TLD 네임 서버에 기록되어 유지된다. 마지막으로 www.google.com에 대한 IPv4 주소에 대한 A 레코드 구성을 한다.
- 클라이언트는 www.google.com 도메인에 대한 DNS 질의를 한다.
- DNS 질의를 전달받은 DNS 해석기는 루트 네임 서버로 전달하고, 루트 네임 서버는 TLD 도메인(.com)에 해당하는 TLD 네임 서버 주소를 반환한다.
- DNS 해석기는 .com TLD 네임 서버로 다시 DNS 질의를 수행하고, TLD 네임 서버는 google.com에 대한 권한 있는 네임 서버 주소를 반환한다.
- DNS 해석기는 google.com에 대한 권한 있는 네임 서버로 다시 DNS 질의를 수행하고, google.com에 대한 권한 있는 네임 서버에서 매핑된 IPv4 주소를 반환한다.
- DNS 해석기에서 클라이언트로 해당 도메인 주소에 대한 IPv4를 응답한다.
- 클라이언트 입장에서 www.google.com에 대한 IPv4 주소를 알게 되어 주소로 접근을 수행하여 통신이 이루어진다.
→ 위와 같은 단계로 클라이언트는 DNS 주소를 통해 서버로 접근을 할 수 있다. 사용자 입장에서는 도메인 이름만 알고 있으면 되며, IPv4 주소를 알 필요가 없다.
2.2.2 Route 53 라우팅 정책
: 레코드 생성 시 라우팅 정책을 지정하며, 이 라우팅 정책은 DNS 요청에 대한 응답 방식을 말한다.
▶ 단순 라우팅 (Simple Routing)
: 도메인에 대해 특정 하나의 리소스를 지정한다. 레코드에 대한 값은 여러 개를 입력할 수 있으나, 이 중에 하나의 값만 랜덤하게 응답한다.
▶ 가중치 기반 라우팅 (Weighted Routing)
: 도메인에 대해 다수의 리소스를 지정하고 값에 대한 비중을 두고 라우팅을 한다. 가중치 값은 0~255 사이에 설정하며, [대상 가중치 / 전체 가중치 합]을 통해 비중을 부여한다. 참고로 가중치 값이 0이면 DNS 응답을 하지 않는다.
▶ 지연 시간 라우팅 (Latency Routing)
: 여러 AWS 리전에 리소스가 있고 최상의 지연 시간을 제공하는 리전으로 라우팅한다. 즉, Route 53에서 사용자 위치상 인접된 리전과 릿스가 있는 리전과의 지연 시간을 파악 후 가장 짧은 지연 대상으로 전달한다.
▶ 장애 조치 라우팅 정책 (Failover Routing)
: 액티브/패시브 장애 조치를 구성하려는 경우 사용한다. 레코드값 중 액티브를 지정하고 대상으로 라우팅을 하며, 주기적인 상태 확인을 통해 액티브 리소스가 통신이 불가할 경우 패시브 대상으로 변경하여 라우팅한다.
▶ 지리 위치 라우팅 (Geolocation Routing)
: DNS질의를 하는 사용자의 로컬 DNS 서버의 IP 위치를 기반하여 가장 인접한 리전의 리소스 대상으로 라우팅한다.
▶ 다중값 응답 라우팅 (Multi-Value Answer Routing)
: Route 53이 DNS 질의에 대해 다수의 값을 반환하도록 구성할 수 있다.
2.2.3 Route 53 주요 기능
AWS의 Route 53은 다양한 기능들을 제공하고 있다. 주요 기능을 살펴본다.
▶ 도메인 등록
- Route 53은 도메인 이름 등록 서비스를 제공한다.
- 도메인 이름 등록 서비스를 통해 사용 가능한 도메인 이름을 검색하고 등록하거나 Route 53에서 관리하도록 기존 도메인 이름을 전송할 수 있다. 도메인 등록대행소 역할을 수행한다.
▶ 상태 확인 및 모니터링
: Route 53은 다양한 리소스의 상태와 성능과 지표를 모니터링 할 수 있다.
▶ DNS 장애 조치
: 사이트 중단이 발생하지 않도록 사용자에게 대체 가능한 경로로 자동 라우팅한다. 주기적인 상태 확인을 통해 정상적인 서비스를 구분한다.
▶ 라우팅 정책
: 다양한 라우팅 정책을 제공하여 효율적이고 안정적인 라우팅을 유지할 수 있다.
▶ Alias (별칭)
: Alias은 AWS 서비스의 도메인 이름에 대한 별칭을 지정할 수 있는 기능으로 ELB, CloudFront, S3 버킷 등의 도메인을 매핑할 수 있다.
▶ Route 53 Resolver
: 조건부 전달 규칙 및 DNS 엔드포인트를 생성하여 Amazon Route 53 프라이빗 호스팅 영역과 온프레미스 DNS 서버 간에 도메인 질의를 할 수 있다.
▶ VPC용 프라이빗 DNS
: DNS 데이터를 퍼블릭 인터넷에 노출하지 않고 내부 AWS 리소스에 대한 사용자 지정 도메인 이름을 관리한다.
03. CloudFront
3.1 Contents Delivery Network [CDN]
3.1.1 CDN 개요
- CDN이란 Contents Delivery Network의 약자로 콘텐츠 제공자와 사용자 간 지리적으로 떨어져 있는 환경에서 콘텐츠를 빠르게 제공하기 위한 기술이다.
- CDN 기술의 핵심은 캐시 서버를 통한 지역적인 분산이다.
3.1.2 CDN 캐싱 방식
- 오리진 서버에 저장된 콘텐츠를 지역적으로 분산된 캐시 서버로 저장하는 행위를 캐싱이라고 한다.
- 캐시 서버에서 콘텐츠를 가지고 있으면 'Cache Hit'라 하고, 그렇지 않은 경우 'Cache Miss'라 한다.
- Cache Miss 상태면 오리진에서 원본 콘텐츠를 요청하여 저장한다.
▶ 정적 캐싱 [Static Caching]
- Image, Java Script, CSS 등과 같이 변경되지 않는 정적인 콘테츠를 캐싱한다
- 웹사이트에서 제공되는 대부분의 콘텐츠는 시간이 지남에 따라 변경되지 않는 정적 콘텐츠로 구성되어 있어 이러한 콘텐츠를 캐싱하여 CDN의 여러 이점을 얻을 수 있다.
▶ 동적 캐싱 [Dynamic Caching]
- 정적 캐싱과 달리 사용자 요청이나 정보를 기반으로 즉석에서 생성되는 동적 콘텐츠의 경우, 캐싱하더라도 Cache Hit가 높지 않아 캐싱의 이점을 얻기 어렵다.
3.2 CloudFront 소개
3.2.1 CloudFront 개요
: CloudFront는 AWS에서 제공하는 CDN기능이다.
정리해보면 오리진 대상의 콘텐츠를 캐싱하여 짧은 지연 시간과 빠른 전송 속도로 전 세계 사용자에게 콘텐츠를 전송하는 CDN 서비스이다.
① 오리진 : AWS 서비스 중 EC2, ELB, S3가 오리진 대상이 될 수 있으며, 고객 데이터 센터 내 별도의 서버도 가능하다.
② Dirtribution : 오리진과 엣지 로케이션 중간에서 콘텐츠를 배포하는 역할을 수행하는 CloudFront의 독립적인 단위이다. HTTP(S) 전용의 Web Distribution과 동영상 콘텐츠 전용의 RTMP Distribution으로 나누어진다.
③ 엣지 로케이션 : 오리진에서 Distribution을 통해 배포되는 콘텐츠를 캐싱하는 장치이다. 큰 단위로 리전별 엣지 캐시가 존재하고 하위에 엣지 로케이션이 구성되어 콘텐츠를 캐싱한다.
④ 보안 장치 : OSI 3/4 계층 DDoS를 완화하는 AWS Sheid 및 OSI 7 계층을 보호하는 AWS WAF와 원활하게 통합하여 보안을 강화한다.
⑤ 도메인 구성 : Distribution을 생성하면 xxxxxx.cloudfront.net 이라는 도메인 이름이 생성되며. 사용자는 해당 도메인 이름으로 접근이 가능하다. 이 때 Route 53과 연결하여 사용자가 원하는 도메인 이름으로 별칭을 부여할 수도 있다.
⑥ 사용자 : 위 도메인 이름으로 접근하여 콘텐츠를 받을 수 있다.
3.2.2 CloudFront 주요 기능
▶ CloudFront 글로벌 엣지 네트워크
: 사용자에게 더 짧은 지연 시간으로 콘텐츠를 전송하기 위해 CloudFront는 42개국 84개국 도시에서 216개의 글로벌 네트워크를 사용하고 있다.
▶ 정적/동적 콘텐츠 딜리버리
: 정적 콘텐츠, 동적 콘텐츠가 존재함에 따라 CloudFront는 캐시 동작을 최적화하여 제공한다.
▶ 오리진 Selection
: CloudFront는 단일 배포에서 여러 오리진을 구성하여 콘텐츠를 처리할 수 있다. 경로 패턴을 분석하여 오리진 대상의 콘텐츠를 분산할 수 있다.
▶ 오리진 그룹을 통한 Failover
: 오리진 그룹 내에 기본 오리진과 보조 오리진을 구성하여 기본 오리진에서 응답할 수 없으면 자동으로 보조 오리진으로 반환하여 Failover를 유지한다.
▶ SSL 지원
: CloudFront를 사용하면 콘텐츠에 대해 SSL/TLS를 통해 전송할 수 있으며, 고급 SSL 기능을 자동으로 활성화할 수 있다.
▶ 액세스 제어
: 서명된 URL과 서명된 쿠키를 사용하면 토큰 인증을 지원하여 인증된 최종 사용자만 액세스하도록 제한할 수 있다.
▶ 보안
: DDoS 공격을 비롯한 여러 유형의 공격에 대해 유연한 계층형 보안 방어를 구축하기 위해 원활하게 통합 운영한다.
▶ 비욜 효율성
- 사용한 만큼 지불하는 일반 요금과 약정 트래픽 개별 요금이 제공되며, AWS 클라우드 서비스와 오리진에서 CloudFront 간의 무료 데이터 전송이 가능하다.
- S3, EC2 or ELB와 같은 AWS 서비스를 오리진으로 사용하는 경우, 오리진에서 CloudFront 엣지 로케이션으로 전송되는 데이터에 대해서는 요금이 청구되지 않는다.
4. Global Accelerator
4.1 Global Accelerator 소개
4.1.1 Global Accelerator란?
- AWS Global Accelerator는 로컬 또는 글로벌 사용자를 대상으로 애플리케이션의 가용성과 성능을 개선하는 서비스로, AWS의 글로벌 네트워크를 통해 사용자에서 애플리케이션으로 이어진 경로를 최적화하여 트래픽의 성능을 개선하는 기술이다.
- Before그림처럼 Global Accelerator를 미적용하게 되면 사용자에서 접근하고자 하는 대상 AWS 서비스까지 많은 네트워크 망을 거쳐 통신을 하게 된다.
- 많은 네트워크를 거치면 거칠수록 지연이 발생할 것이고, 특정 네트워크망의 컨디션이 좋지 않아 느린 속도와 패킷 로스도 발생할 수 있다.
- 반면 Global Accelerato 적용을 하게 되면 AWS의 글로벌 네트워크를 활용하여 안정적이고 빠른 서비스를 보장 받을 수 있다.
4.1.2 Global Accelerator 구성 요소
→ Global Accelerator의 핵심은 애니캐스트 IP을 제공하여 사용자 입장에서 가장 인접된 대상으로 접근이 가능하며, AWS 글로벌 네트워크를 경유하여 안정적이고 빠른 서비스가 가능하다.
4.1.3 Global Accelerator 주요 기능
▶ 고정 애니캐스트 IP
- Global Accelerator의 진입점 역할을 하는 2개의 고정 IP 주소를 제공하며, 해당 고정 IP는 엣지 로케이션의 애니캐스트로 여러 엣지 로케이션에서 동시에 공개한다.
- Global Accelerator로 연결되는 엔드포인트의 프런트 엔드 인터페이스 역할을 한다.
▶ 트래픽 제어
: Traffic Dial 값과 Weight 값을 조정하여 다수의 엔드포인트 그룹과 엔드포인틑에 대한 비중을 부여하여 트래픽 제어를 할 수 있다.
▶ 엔드포인트 상태 확인
: Global Accelerator를 활용하면 엔드포인트 상태를 확인하는 상태 확인 동작으로 정상 상태 엔드포인트로 라우팅 할 수 있다.
그로 인해 Failover 환경 구성이 가능하다.
▶ 클라이언트 IP 보존
- 사용자가 최종 엔드포인트로 접근 시 사용자의 IP를 보존하여 주소를 확인할 수 있다.
- 만약 클라이언트 IP 보존을 하지 않으면, Global Accelerator 고정 IP 대역으로 표기된다.
▶ 모니터링
- Global Accelerator는 TCP, HTTP(S) 상태 확인을 하여 엔드포인트 상태를 지속해서 모니터링한다.
- 엔드포인트 상태 또는 구성의 변화에 즉각적으로 대응하여 사용자에게 최고의 성능과 가용성을 제공한다.
'CS > aws 네트워크' 카테고리의 다른 글
[AWS 네트워크 보안] 보안그룹과 네트워크 ACL, VPC 플로우 로그, AWS WAF (0) | 2023.08.22 |
---|---|
[AWS 네트워크 인터넷 연결] AWS의 인터넷 연결, 인터넷 게이트웨이, NAT 디바이스, Proxy 인스턴스 (0) | 2023.08.10 |
[AWS 네트워크 VPC 고급] VPC 엔드포인트, 배치 그룹 (0) | 2023.08.10 |
[AWS Network VPC 기초] OSI 7 계층 모델, DHCP 동작 절차, 보안 그룹과 ACL (1) | 2023.08.09 |
AWS 소개 및 용어 정리 (0) | 2023.08.08 |