기록이 힘이다.

[AWS 네트워크 입문] 5장 부하 분산 본문

개발환경/AWS

[AWS 네트워크 입문] 5장 부하 분산

dev22 2023. 8. 26. 10:23
728x90

1. ELB(Elastic Load Balancing)

지속적인 서비스 제공을 위해 서버를 다중화 구성하여 서비스의 연속성을 보장하는 고가용성 구성이 필요합니다. 

부하분산 기술은 로드 밸런서가 존재하며, 이 로드 밸런서는 서버의 상태를 파악하고 데이터를 분산하여 전달하는 접점 역할을 수행합니다. 

ELB는 AWS에서 제공하는 로드 밸런싱 기술입니다. 로드 밸런서는 크게 자신이 서비스하는 대상을 정의하는 리스너와 부하 분산 대상을 정의하는 대상 그룹으로 이루어져 있습니다. 

 

리스너는 프로토콜 및 포트를 사용하여 연결 요청을 확인하는 프로세스입니다. 

대상 그룹은 하나 이상의 대상을 라우팅하여 부하 분산을 하는 데 사용합니다. 정상적인 상태의 대상에게만 데이터를 전달합니다. 

 

ELB 종류

Application Load Balancer(ALB)

HTTP나 HTTPS와 같이 웹 애플리케이션에 대한 분산 처리를 제공하는 로드 밸런서입니다. 

 

Network Load Balancer(NLB)

NLB는 TCP나 UDP 프로토콜에 대한 포트 정보를 정의하여 네트워크 기반의 분산 처리를 제공하는 로드 밸런서입니다.

 

Classic Load Balancer(CLB)

VPC의 예전 버전인 EC2-Classic에 대해서도 분산 처리를 제공할 수 있는 이전 세대의 로드 밸런서입니다. 

 

구분 ALB NLB CLB
프로토콜 HTTP, HTTPS TCP, UDP, TLS TCP, TLS, HTTP, HTTPS
처리 속도  느림 빠름 중간
플랫폼 VPC VPC VPC, EC2-Classic
OSI 계층 7계층 4계층 -
동일 인스턴스로
다수의 포트 전달
지원 지원 미지원
IP 를 통한 관리 미지원 지원 미지원
프라이빗링크 지원 미지원 지원 미지원
경로 기반 라우팅 지원 미지원 미지원
호스트 기반 라우팅 지원 미지원 미지원

웹 애플리케이션에 대한 로드 밸런싱은 OSI 7계층에 특화되어 유연하게 관리할 수 있는 ALB를 사용하고, 그 외에 프로토콜은 NLB를 사용하도록 합니다. EC2-Classic 환경일 경우를 제외하고 CLB는 권장하지 않습니다. 

 

ALB는 Lambda 함수를 호출하여 HTTP(s) 요청을 처리할 수 있습니다. 

 

ELB 통신 방식

인터넷 연결 / 내부 

 

ELB 특징 

고가용성 / 상태 확인 /보안 기능(NLB 적용 X) / 4계층,7계층 로드밸런싱 / 운영 모니터링 

 

ALB를 통한 로드 밸런싱

로드 밸런서 가용 영역 지정 시 가용 영역당 1개의 서브넷만 지정 가능합니다. 

 ALB의 로드 밸런싱 알고리즘은 기본적으로 라운드 로빈 방식을 취하고 있습니다. 

 

경로 기반 라우팅 설정하기 

NLB를 통한 로드 밸런싱

 

상태 검사 개념이 주기적으로 요청을 보내고 응답을 확인하여 상태를 확인하는 개념인데, 단방향 통신인 UDP 같은 경우는 상태 검사 프로세스에 적합하지 않습니다. 

snmpget 명령어로 NLB DNS 주소로 시스템 이름을 요청하면 번갈아 응답합니다. 부하 분산하여 대상 그룹에 속한 ELB-EC2-1과 ELB-EC2-2 인스턴스로 접근.

 

NLB가 출발지 IP 보존을 하는 것은 대상 그룹의 대상 유형에 따라 다릅니다. 인스턴스 유형이라면 출발지 IP를 보존하고, IP 유형이라면 출발지 IP를 보존하지 않습니다. 

 

2. Route 53

DNS(Domain Name System)

네트워크 통신을 수행할 때 주요한 요소 중의 하나가 대상을 지정하는 주소입니다. 해당 주소를 통하여 목적지 대상을 지정할 수 있으며, 출발지 대상을 알릴 수 있습니다. 네트워크상에서 다양한 주소 체계가 존재하지만, 보편적으로 IP 주소 체계를 사용합니다. DNS는 복잡한 주소 체계를 문자 형태의 도메인 네임으로 매핑하여 연결하는 서비스 입니다. 

 

DNS 서버 분류

DNS를 통해 서비스를 수행할 경우 DNS 서버가 필요합니다. 4가지 유형으로 분류

 

DNS 해석기(DNS Resolver)

클라이언트와 네임 서버의 중계자 역할을 합니다. DNS 요청에 대해 네임 서버로 전달하며, DSN 응답을 클라이언트에게 전달합니다. 

 

루트 네임 서버(Root Name Server)

 DNS 서버의 최상위 네임 서버로 DNS 해석부터 발생한 DNS 요청에 대해 적절한 TLD 네임 서버 정보를 반환합니다. 

 

TLD 네임 서버(Top Level Domain Name Server)

.com .net 과 같은 최상위 도메인에 대한 네임 서버로 해당 영역에 포함되는 모든 도메인 이름의 정보를 유지합니다. DNS 요청에 대해 TLD 네임 서버에서 권한 있는 네임 서버를 지정하여 반환합니다. 

 

권한 있는 네임 서버(Authoritative Name Server)

DNS 해석기가 TLD 네임 서버로부터 응답을 받으면, 확인자는 해당 응답을 권한 있는 네임 서버로 보냅니다. 일반적으로 권한 있는 네임 서버는 요청하는 도메인 주소에 대한 IP 주소를 확인하는 마지막 단계입니다.

 

DNS 레코드 유형

레코드 의미 레코드 의미
A IPv4 주소를 매핑  NS 도메인 네임 서버 식별
AAAA IPv6 주소를 매핑 SOA  도메인 영역을 표시하는 역할
CNAME 도메인 이름의 별칭을 만듬 SRV 도메인 서비스 이용 가능여부 식별
MX 이메일 서버 지정 TXT  텍스트 매핑

Route53

AWS에서 제공하는 관리형 DNS 서비스입니다. 사용자는 AWS 상의 Route53을 통하여 도메인 이름을 구매를 대행하고 구메한 도메인 주소에 대한 호스팅 영역을 생성하여 네임 서버를 구축하고 레코드를 생성하여 DNS 요청에 대한 응답을 처리할 수 있습니다. 그리고 Route53에서 다양한 라우팅 정책을 수립하여 효율적인 트래픽 흐름을 보장받을 수 있습니다.

 

도메인 이름 등록 -> 호스팅 영역 -> 레코드 

 

도메인 이름 등록 

Route 53을 통해 도메인 이름을 등록할 수 있습니다. 이때 Route 53의 역할은 등록대행소가 되어 등록소인 TLD 네임서버에 전파하여 해당 도메인 이름을 사용할 수 있도록 대행합니다. 

 

호스팅 영역

 DNS 관리를 할 수 있는 호스팅 영역을 생성할 수 있습니다.

 

레코드

생성한 호스팅 영역에 레코드를 작성할 수 있습니다. 

 

Route 53 라우팅 정책

단순 라우팅/ 가중치 기반 라우팅 / 지연 시간 기반 라우팅/ 장애 조치 라우팅 정책/ 지리 위치 라우팅 / 지리 근접 라우팅/ 다중값 응답 라우팅

 

Route 53 주요 기능

도메인 등록 / 상태 확인 및 모니터링/ DNS 장애 조치/ 라우팅 정책/ Alias, Route 53 Resolver/ VPC용 프라이빗 DNS

 

3. CloudFront

 

Content Delivery Network (CDN)

CDN이란 콘텐츠 제공자와 사용자 간 지리적으로 떨어져 있는 환경에서 콘텐츠를 빠르게 제공하기 위한 기술입ㅂ니다. 오늘날 콘텐츠들이 대용량 파일 형태나 실시간 스트리밍 형태로 점점 늘어나는 ㄴ환경에서 바르게 콘텐츠를 전달하는 것은 굉장히 중요한 사항일 겁니다. 

 

CDN 기술의 핵심은 캐시 서버를 통한 지역적인 분산에 있습니다. 이때 각 지역의 사용자는 가장 인접한 캐시 서버로부터 콘텐츠를 전달받아 원활한 서비스를 받을 수 있습니다.

 

CDN 캐싱 방식

캐시 서버에서 콘텐츠를 가지고 있으면 Cache Hit라 하고 콘텐츠를 가지고 있지 않을 경우 Cache Miss 라 합니다. Cache Miss 상태면 오리진에서 언본 콘텐츠를 요청하여 저장합니다. 

 

정적 캐싱

이미지 파일, 자바스크립트, CSS 등과 같이 변경되지 않는 정적 콘텐츠를 캐싱합니다. 웹사이트에서 제공되는 대부분의 콘텐츠들은 시간이 지남에 따라 변경되지 않는 정적 콘텐츠로 구성되어 있어 이러한 콘텐츠를 캐싱하여 CDN의 여러 이점을 얻을 수 있습니다. 

 

동적 캐싱

정적 캐싱과 달리 사용자 요청이나 데이터의 정보를 기반으로 즉석에서 생성되는 동적 콘텐츠의 경우, 캐싱하더라도 Cache Hit가 높지 않아 캐싱의 이점을 얻기가 어렵습니다. 다만, 이러한 동적인 콘텐츠에 대해서도 CDN을 통해서 배포하게 되면 오리진 서버를 보호할 뿐만 아니라 캐시 서버와 오리진 서버 간의 빠른 통신을 통해 제공되어 보다 빠른 콘텐츠를 받을 수 있습니다. 

 

CloudFront 소개

AWS에서 제공하는 CDN 기능입니다. 정리해보면 오리진 대상의 콘텐츠를 캐싱하여 짧은 지연 시간과 빠른 전송 속도로 전 세계 사용자에게 콘텐츠를 전송하는 CDN 서비스입니다. 전 세계 42개국 84개 도시에서 216개의 엣지 POP 을 두고 AWS 글로벌 네트워크를 통하여 콘텐츠를 캐싱하여 서비스를 제공합니다. 

 

CloudFront 주요 기능

이러한 기능들을 제공하여 높은 성능과 가용성을 보장받고 보안을 강화하여 안정적인 서비스가 가능해집니다. 

CloudFront 글로벌 엣지 네트워크

정적/ 동적 콘텐츠 딜리버리

오리진 Selectioni

오리진 그룹을 통한 Failover

SSL 지원

엑세스 제어

보안

비용 효율성 

 

4. Global Accelerator

Global Accelerator이란?

AWS Global Accelerator는 로컬 또는 글로벌 사용자를 대상으로 애플리케이션의 가용성과 성능을 개선하는 서비스로, AWS의 글로벌 네트워크를 통해 사용자에서 애플리케이션으로 이어진 경로를 최적화하여 트래픽의 성능을 개선하는 기술 입니다. 

 

AWS 글로벌 네트워크 인프라는 프라이빗 글로벌 네트워크 인프라로 상호 연결되어 있습니다. 해당 글로벌 네트워크를 통해 리전, 엣지 로케이션 간 모든 트래픽들을 통신할 수 있으며, 이중화된 100GbE 구성으로 안정적이고 고성능을 보장받을 수 있는 AWS 글로벌 백본 네트워크입니다. 

 

Global Accelerator 구성

Global Accelerator의 핵심은 애니캐스트 IP를 제공하여 사용자 입장에서 가장 인접된 대상으로 접근이 가능하며, AWS 글로벌 네트워크를 경유하여 안정적이고 빠른 서비스가 가능합니다. 

 

Global Accelerator 주요 기능

고정 애니캐스트 IP 

진입 점 역할을 하는 2개의 고정 IP 주소를 제공하며, 해당 고정 IP는 엣비 로케이션의 애니캐스트로 여러 엣지 로케이션에서 동시에 공개합니다. 

 

트래픽 제어

Traffic Dial  값과  Weight 값을 조정하여 다수의 엔드포인트 그룹과 엔드포인트에 대한 비중을 부여하여 트래픽 제어를 할 수 있습니다. 

 

엔드포인트 상태 확인 

Global Accelerator를 활용하면 엔드포인트 상태를 확인하는 상태 확인 동작으로 정상 상태 엔드포인트로 라우팅할 수 있습니다. 그로 인해 Failover 환경 구성이 가능합니다. 

 

클라이언트 IP 보존

사용자가 최종 엔드포인트로 접근 시 사용자의 IP를 보존하여 주소를 확인할 수 있습니다. 

 

모니터링

Global Accelerator는 TCP, HTTP(S) 상태 확인을 하여 엔드포인트 상태를 지속해서 모니터링합니다. 엔드포인트 상태 또는 구성의 변화에 즉각적으로 대응하여 사용자에게 최고의 성능과 가용성을 제공합니다.