AWS - ELB(Elastic Load Balancer) 이론, 실습

2023. 8. 1. 16:47개발/AWS

728x90
반응형

ELB

들어오는 애플리케이션 트래픽을 Amazon EC2 인스턴스, 컨테이너, IP 주소, Lambda함수와 같은 여러 대상에 자동으로 분산시키며 ELB는 단일 가용 영역 또는 여러 가용영역에서 다양한 애플리케이션 부하를 처리

  • 다수의 서비스에 트래픽을 분산 시켜주는 서비스
  • Health Check : 직접 트래픽을 발생시켜 인스턴스가 살아 있는지 체크
  • AutoScaling과 연동 가능
  • 여러 가용여역에 분산 가능
  • 지속적으로 IP주소가 바뀌며 IP 고정 불가능
    • 항상 도메인 기반으로 사용
  • Load Balancer 란 : 클라이언트에 요청을 하나의 트래픽으로 묶어서 각 서버에 분산해주는 것을 말하며 이로 인하여 부하를 분산해주는 것을 말한다.

종류

  • Application Load Balancer
    • 똑똑하다
    • 트래픽을 모니터링하여 라우팅 가능
  • Network Load Balancer
    • 빠르다
    • TCP 기반 빠른 트래픽 분산
    • Elastic IP 할당 가능 (고정)
  • Classic Load Balancer
    • 예전 사용
    • 잘 사용하지 않음
    • Application, Network 로 대체 가능
  • Gateway Load Balancer
    • 먼저 트래픽을 체크
      • 클라이언트에서 로드 밸런서로 인해 EC2로 보내는것이 아니라 먼저 방화벽, 트래픽 분석, 캐싱, 인증, 로깅을 거쳐 EC2로 보냄
    • 가상 어플라이언스 배포/확장 관리를 위한 서비스
      • 방화벽, 트래픽 분석, 캐싱, 인증, 로깅을 처리하는 것이 네트워크 어플라이언스라고 한다

ALB

  • ALB가 라우팅할 대상의 집합

구성

  • 인스턴스
  • IP
  • Lambda
  • ALB
  • 프로토콜(HTTP, HTTPS, gRPC 등)
  • 기타 설정
    • 트래픽 분산 알고리즘, 고정 세션 등

ALB 에서는 도메인 주소, 포트를 읽을수 있어 똑똑하다고 표현하고 거기에 맞는 각 웹 서버에 트래픽을 전송한다. 그리고 각 웹서버 대상 그룹, 이미지서버 대상 그룹 등 Auto Scaling 서버스랑도 연동이 가능하다

 

실습

더보기
💡 꼭 ALB는 실습 종료후 제거 필수 (요금이 비싼 서비스 입니다)

서버 구성

고급 세부 정보를 클릭

#!/bin/bash INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id) yum install httpd -y echo ""$INSTANCE_ID"" >> /var/www/html/index.html service httpd start

 

 

 

 

 

 

사용자 데이터에 샘플 데이터 작성 (인스턴스 ID를 불러오는 소스)

Auto Scaling 그룹으로 들어가서 그룹 생성후 템플릿의 버전을 최신으로 변경

 

 

 

 

 

 

 

 

 

 

 

 

Auto Scaling 수량 설정

 

 

 

 

 

 

 

 

EC2 생성 확인
동일한 IP로 다른 인스턴스 ID가 출력

퍼블릭 주소로 웹서버 접속시 위 같이 인스턴스 ID가 출력

로드 밸런싱 대상 그룹 만들기

로드 밸런싱 → 대상 그룹 → 대상 그룹 생성

 

 

 

 

 

 

 

Instances 클릭

Target group name 등록

다음 클릭

 

 

 

 

 

 

 

 

 

 

 

 

 

 

두개의 인스턴스를 선택후 include as pending below 버튼 클릭

대상 그룹 생성 클릭

생성 완료

 

로드 밸런서 생성

로드 밸런싱 → 로드 밸런서 생성 클릭

Application Load Balancer를 선택

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

대상 그룹은 위 생성한 그룹 선택

설정 체크후 생성

 

 

 

 

 

 

 

 

로드밸런서 생성 완료 (프로비저닝중에서 약 3분 소요후 활성으로 변경)

생성된 로드 밸런서의 DNS 이름을 복사하여 접속

새로 고침할때 마다 로드밸런싱으로 다른 값을 보여준다.

Auto Scaling 같이 사용

모든 그룹들은 밸런싱에 타켓 그룹으로 들어가게 된다.

로그밸런싱 대상 그룹에 새로운 서버가 추가된것을 확인 할 수 있다

추가된 서버에 로드밸런싱이 잘 되는것을 확인 할 수 있다

EC2 서버는 살아있는데 웹서버가 죽어있으면 비정상 일까 ??

오토 스케일링 입장에서는 정상

로드밸런서에서는 비정상

가장 위에있는 인스턴스 접속후 웹서버를 중지 시켜보자

sudo -s
service httpd stop

실습 강의에서는 504 bad Gateway Error가 발생하지만 현재 실습에는 가장 위에 인스턴스를 제외한 2개의 인스턴스 웹서버만 접근하여 에러를 보여주지 않는다

하지만 이렇게 정상작동을 하지 않는 인스턴스는 재부팅을 진행해줘야하는데 이 방법을 진행해 보자

Auto Scaling 그룹의 상태 확인의 편집을 클릭.

ELB에도 상태확인하고 상태확인을 한다

Auto Scaling 로그에서 에러가 발생하는데 이것은 인스턴스 용량이 부족하여 발생하는 것으로 시작 탬플릿에서 다시 재변경이 필요함

시작 탬플릿에서 편집을 누르고 인스턴스를 t3.micro로 변경

다시 인스턴스를 다 지우고 다시 실행

실행 완료

  • 동일한 테스트 진행 웹서버를 중지
sudo -s
service httpd stop

죽지전에 준비 시간을 주는 것이다

이렇게 고가용성으로 구성이 가능하다

728x90
반응형

'개발 > AWS' 카테고리의 다른 글

AWS - 간단 웹 서버 띄우기  (0) 2023.08.02
AWS - AutoScaling 이론, 실습  (0) 2023.08.01
AWS - EC2(EBS, AMI)  (0) 2023.08.01
AWS - 기초 이론, EC2 이론  (0) 2023.08.01