Amazon ELB - ALB

2023. 3. 13. 00:08AWS (Amazon Web Services)

※ 해당 블로그는 AWS에서 제공하는 설명서와 AWS Builders Online Series 강의를 듣고 개인적으로 공부한 내용을 정리한 블로그입니다.

 

ALB(Application Load  Balancer)

  • OSI 모델의 7계층(애플리케이션 계층)에서 작동
  • HTTP, HTTPS 프로토콜에 특화된 로드밸런서
  • AWS에서 제공하는 로드밸런서 중 지연시간이 가장 낮음
  • 빠른 응답 속도를 필요로 하는 애플리케이션에 적합
  • 지원 기법 : Round Robin, Path-Based Routing, Host-Based Routing, HTTP Header-Based Routing

 

라우팅 기능

 

1. 경로 기반 라우팅 (Path-based Routing)

요청된 URL 경로에 따라 트래픽을 다른 대상 그룹으로 라우팅 할 수 있음

예) /api 로 시작하는 URL 경로의 요청은 API 서버로 라우팅하고 /web 로 시작하는 URL 경로의 요청은 웹서버로 라우팅 할 수 있음

 

2. 호스트 기반 라우팅 (Host-based Routing)

요청된 호스트 헤더에 따라 트래픽을 다른 대상 그룹으로 라우팅 할 수 있음

keum.com 호스트 헤더를 갖는 요청을 웹 서버로 라우팅하고 api.keum.com 호스트 헤더를 갖는 요청을 API 서버로 라우팅 할 수 있음

 

3. 쿼리 스트링 라우팅 (Query String Routing)

요청된 쿼리 스트링에 따라 트래픽을 다른 대상 그룹으로 라우팅 할 수 있음

쿼리 스트링 : 웹 브라우저나 웹 애플리케이션에서 서버로 데이터를 전송할 때 사용하는 문자열

보통 URL 뒤에 ?를 붙인뒤 Key=value 쌍들을 &로 구분하여 나열

예) https://keum.com/serach=?type=post&page=3 

type=mobile 쿼리 스트링이 있는 요청은 모바일 서비스로 라우팅하고 type=desktop 쿼리 스트링이 있는 요청을 데스크톱 서비스로 라우팅 할 수 있음

 

Amazon ALB 생성

 

1. EC2 서버 하나 생성 (keum-ec2)

OS : Ubuntu 

Web Server : apache2

/var/www/html/index.html에 간단한 주가 홈페이지 작성

 

 

2. Load balancers 생성

EC2 - Load balancers - Select load balancer type - ALB(Application Load Balancer)

 

 

2.1 Basic configuration

Scheme : Internet-facing

Internet-facing : 클라이언트가 인터넷을 통해 Public IP를 통해 서버로 접속하는 경우 사용

Internal : 클라이언트가 인터넷이 아닌 내부 Private IP를 통해 서버로 접속하는 경우 사용

 

 

2.2 Network mapping

VPC와 서브넷은 사전에 만들어둔 것을 사용 - Amazon VPC (tistory.com)

 

Mappings : 최소 두개의 가용영역을 선택하고 각 각용영역당 서브넷 하나씩 연결

퍼블릭 서브넷 1개와 프라이빗 서브넷 1개로 구성하는 것이 보안상 우수


로드밸런서에 연결할 EC2 인스턴스가 6개라면 6개 전부 프라이빗 서브넷에 배치 시키고 퍼블릭 서브넷에 위치한 ALB는인터넷을 통해 들어온 클라이언트의 요청을 수신하고 프라이빗 서브넷에 위치한 EC2 인스턴스들은 ALB로부터 들어오는 요청을 처리

 

오토스케일링으로 생성되는 인스턴스들은 두개의 가용영역에 배치

 

 

로드 밸런서에서 두 가용영역에 배치된 인스턴스의 트래픽을 분산 할 수 있도록 두개의 가용영역을 추가

로드밸런서는 퍼블릭 서브넷에 위치해야 하기 때문에 퍼블릭 서브넷도 추가

 

 

2.3 Security groups

 

보안 그룹 생성

HTTP, HTTPS에서 들어오는 트래픽을 수신해야 되기 떄문에 인바운드 규칙에 추가

 

 

 

2.4 Listeners and routing

웹 서버에 보통 SSL/TLS 설정을 해두기 때문에 HTTPS를 통해 연결하지만 본 실습에서는 SSL/TLS 사용을 하지 않았기 때문에 HTTP 프로토콜을 사용함

그렇기 때문에 Listener : HTTP로 설정

 

로드밸런서가 트래픽을 분산할 대상을 설정해야 하기 떄문에 target group 생성을 해야함

 

 

target group 생성

 

2번 과정에서 Auto Scaling으로 생성한 EC2 인스턴스들이 target group의 대상

클라이언트가 인터넷을 통해 요청을 보내면 해당 요청(트래픽)은 taret group으로 설정한 EC2 인스턴스들로 분산되는 구조

 

Basic configuration - Choose a target type - Instances

 

 

Target group name

 

 

Health checks

로드밸런싱 대상이 되는 EC2 인스턴스의 상태를 지속적으로 모니터링하고, 정상 작동하는 인스턴스에만 요청을 보내 로드밸런싱의 효율성을 높이는 기능

 

EC2 인스턴스가 일정 시간동안 응답이 없거나 오류가 발생한다면 로드밸런서는 해당 인스턴스에 요청을 보내지 않고 다른 정상적인 인스턴스에만 요청을 보내게 됨

 

 

Register targets

로드밸런서 대상 인스턴스 등록

오토스케일링으로 생성된 인스턴스들을 대상으로 등록할 것이기 떄문에 별다른 선택 없이 create target group 선택

아직 오토스케일링 그룹을 생성하지 않았기 때문에 등록할 인스턴스들이 없음

 

인스턴스들을 위한 포트 설정 : 80

인터넷을 통해 클라이언트의 요청(트래픽)을 http(80)로 전달 받은 ALB는 트래픽을 인스턴스들한테 분배해줄때 어떤 포트를 사용해서 전달해줘야 할지 정해야 함이때 80번이면 80번 포트를 302번 포트면 302번 포트를 인스턴스 보안그룹 인바운드 규칙에 개방 해둬야 전달 할 수 있음

 

 

 

 

 

target group 등록

 

 

2.5 Summary

 

 

생성된 Load balancers 확인

 

 

3. Auto Scaling - Auto Scaling (tistory.com)

 

4. 웹서버에 접속

로드밸런서 ALB를 생성하게 되면 DNS 이름으로 인스턴스들의 웹서버에 접속할 수 있음

 

 

6개의 인스턴스들 모두 같은 웹 서비스를 제공하고 있기 때문에 로드밸런싱이 제대로 이루어지고 있는지 확인 하기 어려움

 

 

정상적으로 로드밸런싱이 되는지 확인하기 위해 각 서버마다 색상을 입혀서 확인

6개 인스턴스 모두 변경

 

정상적으로 로드밸런싱 되고 있는 모습을 확인 할 수 있음

 

왼쪽부터 기본(회색), 빨간색, 주황색

 

 

 

왼쪽부터 노란색,  초록색, 파란색

 

 

 

'AWS (Amazon Web Services)' 카테고리의 다른 글

클라우드 컴퓨팅  (0) 2023.03.18
AWS 로드밸런싱 기법  (0) 2023.03.13
Amazon ELB  (0) 2023.03.06
DevOps란?  (1) 2023.02.20
Amazon EC2  (0) 2023.01.24