🧡 AWS

[AWS] ELB 란?

MNY 2024. 7. 2. 00:17
728x90
반응형
- 목차 -

0. Scalability(확장성) vs Availability(고가용성)
1. ELB 란?

2. Application Load Balancer 사용해보기

3. Application Load Balancer 사용해보기

4. 보안 그룹 생성하기

5. 리스너 및 라우팅 생성하기

6. Load Balancer 생성 완료하기

7. Load Balancer 확인해보기



0. Scalability(확장성) vs Availability(고가용성)

Scalability와 Availability는 모두 분산 시스템에서 중요한 개념이지만 서로 다른 개념입니다.

Scalability는 시스템이 커지거나 작아질 수 있는 능력을 의미합니다. 이는 사용자 수, 데이터 양, 처리량 등이 증가할 때 시스템의 성능과 처리 능력을 유지하거나 향상시키는 것을 말합니다. 이를 위해서는 확장성 있는 시스템 디자인과 구현이 필요합니다.

반면 Availability는 시스템이 정상적으로 작동하고 사용 가능한 상태를 유지하는 능력을 의미합니다. 즉, 사용자가 요청하는 서비스를 항상 이용 가능한 상태로 유지하는 것입니다. 이를 위해서는 시스템의 안정성을 높이고 장애 대응 능력을 강화하는 것이 중요합니다.

따라서, Scalability는 시스템의 성능과 처리 능력을 유지하거나 향상시키는 능력을 의미하고 Availability는 시스템의 안정성과 사용 가능한 상태를 유지하는 능력을 의미합니다. 둘 다 중요한 개념이며, 분산 시스템을 설계하고 구현할 때 모두 고려해야 합니다.

 

추가 공부 keyword : 수평적 확장(Horizontal Sxalability), 수직적 확장(Vertical Scalability)

  • 수평적 확장 : 인스턴스를 여러 개로 늘리는 것
  • 수직적 확장 : 인스턴스는 1개인데 성능을 높이는 것

 

1. ELB(Elastic Load Balancer) 란?

Elastic Load Balancer는 AWS에서 제공하는 로드 밸런싱 서비스로, 다수의 EC2 인스턴스를 사용하여 트래픽을 분산시킵니다. 다양한 유형의 로드 밸런서가 있으며 각각의 특징은 아래와 같습니다.

  1. Application Load Balancer: OSI 모델 7계층에서 동작하며, HTTP/HTTPS 트래픽을 처리합니다. 또한, 컨테이너화된 애플리케이션과 연동하여 사용할 수 있습니다.
  2. Network Load Balancer: OSI 모델 4계층에서 동작하며, TCP/UDP 트래픽을 처리합니다. 높은 처리량을 필요로 하는 애플리케이션에 적합합니다.
  3. Classic Load Balancer - deprecated : OSI 모델 4~7계층에서 동작하며, HTTP/HTTPS, TCP/UDP 트래픽을 처리합니다. 가장 오래된 형태의 로드 밸런서이며, 대부분의 경우 Application Load Balancer나 Network Load Balancer를 사용하는 것이 좋습니다.
  4. Gateway Load Balancer

각각의 로드 밸런서는 다양한 기능과 구성을 제공하며, 선택적으로 사용할 수 있습니다. 예를 들어 Application Load Balancer는 URL 경로 라우팅, 호스트 기반 라우팅 등 다양한 라우팅 정책을 제공합니다. 이러한 로드 밸런서는 고가용성과 확장성을 제공하므로, 인스턴스의 장애와 부하 분산에 대한 대응을 용이하게 해줍니다.

 

* 로드 밸런서를 쓰는 이유?

  • 요청 분산 (EC2와 연동)
  • 단일 액세스 포인트 공개 (Route 53과 연동)
  • 인스턴스에 대한 헬스 체크
  • HTTPS 제공 (ACM과 연동)
  • 고가용성 제공
  • 공개 트래픽과 내부 트래픽 분리

 

* ELB의 보안 그룹

  • user - http/https 공개
  • ec2 - 로드밸러서에게만 공개

 

* Application Load Balancer의 특징

  • HTTP 요청을 여러 타깃 그룹에 나눠줄 수 있다.
  • 한 머신 안이라도 여러 어플리케이션(컨테이너)에 나눠 줄 수 있다.
  • HTTP/2와 웹소켓을 지원
  • HTTPS로 리다이렉트 지원
  • URL, hostname, query string, header에 기반해서 다른 타깃 그룹으로 보낼 수 있다.

 

2. 인스턴스 생성하기

** 여기까지 오면서 만들어진 인스턴스, AMI, 볼륨, 스냅샷 등 전부 지워주기! **

 

  • 인스턴스 생성하기
  • "이름" 입력 ex) myinstance
  • "ubuntu" 선택
  • "키 페어" 없음으로 선택
    why? ssh 사용하지 않을 것이기 때문
  • "네트워크 설정 - 기존 보안 그룹 선택"

 

  • "고급 세부 정보" Click!
  • 제일 아래의 "사용자 데이터" 입력
  • "인스턴스 개수" 2개 입력
  • "인스턴스 시작" Click!

 

** 해당 부분은 인스턴스를 시작할 때 자동으로 실행되는 커맨드 **

#!/bin/bash
apt-get update
apt-get install -y nginx
cat <<EOF > /var/www/html/index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to Nginx</title>
</head>
<body>
<h1>Hello World!</h1>
<p>AWS deployed by Me!</p>
<p>private ip is $(hostname -f)</p>
</body>
</html>
EOF
sudo systemctl start nginx

 

  • 이름 두 번 클릭해서 바꿔주기

 

  • 첫 번째 인스턴스 들어가서 "퍼블릭 IPv4 주소 - 개방 주소법" Click!
  • 주소란에서 https -> http로 변경

 

** 두 번째 인스턴스로 들어가게 되면 private IP 주소가 다른 것 확인 가능 **

 

3. Application Load Balancer 사용해보기

  • 왼쪽 목록에서 "로드 밸런싱 - 로드밸러서" Click!
  • "로드 밸러서 생성" Click!

 

  • "Application Load Balancer - 생성" Click!

 

  • "로드 밸러서 이름" 작성
  • "체계 - 인터넷 경계 " 선택
  • " IP 주소 유형 - IPv4" 선택

 

4. 보안 그룹 생성하기

  • "네트워크 매핑 - 매핑" 모두 체크
  • "보안 그룹 - 새 보안 그룹을 생성" Click!

 

  • "보안 그룹 이름" 작성 ex) loadbalancersecurity
  • "설명" ex) loadbalancer security
  • "인바운드 규칙 - 유형 : HTTP - 소스 : Anywhere IPv4"
  • "보안 그룹 생성" Click!

 

5. 리스너 및 라우팅 생성하기

  • 다시 돌아와서!
  • 보안 그룹 새로고침 후 방금 만들었던 보안 그룹 추가
  • "리스너 및 라우팅 - 대상 그룹 생성" Click!

 

  • "대상 유형 선택 - 인스턴스" 선택
  • "대상 그룹 이름" 작성 ex) mytargetgroup
  • 나머지는 전부 그대로 유지
  • "다음" Click!

 

  • 두 가지 모두 선택 후 "아래에 보류 중인 것으로 포함" Click!
  • "대상 그룹 생성" Click!

 

  • 생성된 것 확인하고 다시 돌아가서..

 

6. Load Balancer 생성 완료하기

  • "리스너 및 라우팅" 새로고침 아이콘 클릭 후 방금 만든 "대상 그룹(mytargetgroup)" 선택
  • 그 후 아래의 "로드 밸런서 생성" Click!

 

7. Load Balancer 확인해보기

  • 왼쪽 목록에서 "로드 밸런싱 - 로드밸런서" Click!
  • 생성한 로드밸런서의 상태가 활성으로 변경되면 생성한 로드밸런서 Click!

 

  • "DNS 이름" 링크 복사

 

  • 새로고침 할 때마다 private IP가 변경되는 것을 확인!!!

 

** 2개의 인스턴스 중 하나를 중단 시킬 경우 **

로드밸런서는 새로고침을 해도 1개의 인스턴스 private IP만 표시 됌.

왼쪽 목록의 "로드 밸런싱 - 대상 그룹"에서 상태를 확인할 수 있음.

 

 

 

728x90
반응형