[AWS스터디] 고사용성과 확장성

송성우·2024년 3월 21일

확장성

수평적 확작성(탄력성)

인스턴스나 시스템의 수를 늘리는 방법
ex) 전화 교환원, 전화 교환원의 수를 늘리자
수평확장 -> 분배 시스템이 있다는 걸 의미

수직적 확장성

인스턴스의 크기를 확장하는 것을 의미
ex) 전화 교환원, 신입 교환원을 경력 교환원으로 교체
데이터베이스처럼 분산되지 않은 시스템에서 흔히 사용(RDS, ElastiCache)

고사용성

고가용성이란 애플리케이션 또는 시스템을 적어도 둘 이상의 AWS의 AZ나 데이터 센터에서 가동 중이라는 걸 의미
고가용성의 목표: 데이터 센터에서의 손실을 방지하는 것
-> 센터 하나가 멈춰도 게속 작동이 가능하게끔 하는 것
ex) 분배되어 있는 자원을 활용하여 한 곳이 끊기면 다른 곳을 이용

로드 밸런싱

서버 문제를 자동으로 감지하고 클라이언트 트래픽을 사용 가능한 서버로 리다이렉션하여 시스템의 내결함성을 높인다.

왜 로드 밸런서를 쓸까?

로드 밸런서를 사용하는 이유:

  • 여러 다운스트림 인스턴스에 걸쳐 부하를 분산시킵니다.
  • 애플리케이션에 대한 단일 접근 지점(DNS)을 제공합니다.
  • 다운스트림 인스턴스의 실패를 원활하게 처리합니다.
  • 인스턴스에 대한 정기적인 상태 점검을 수행합니다.
  • 웹사이트에 대해 SSL 종료(HTTPS)를 제공합니다.
  • 쿠키를 이용한 스티키니스(접속 유지)를 강제합니다.
  • 여러 지역에 걸쳐 고가용성을 제공합니다.
  • 공개 트래픽과 사설 트래픽을 분리합니다.

Elastic Load Balancer

관리형 로드 밸런서 => AWS가 관리하며, 어떤 경우에도 작동할 것을 보장
AWS는 업그레이드, 유지보수, 고가용성을 관리합니다.

Health Checks

작동이 올바르게 되고 있는지의 여부를 확인하기 위해 사용

위와 같이 테스트를 보내고 상태코드를 통해 해당 인스턴스의 상태를 확인한다.
-> 상태가 좋지 않다면 엘라스틱 로드 밸런서는 그쪽으로 트래픽을 보내지 않는다.

4가지 관리형 로드 밸런서

AWS에서 제공하는 로드 밸런서의 종류 AWS는 4가지 종류의 관리형 로드 밸런서를 제공

  • 클래식 로드 밸런서 (구세대) - 2009 - CLB
    HTTP, HTTPS, TCP, SSL (안전한 TCP)
    -> 사용X 시험에 안나옴
  • 애플리케이션 로드 밸런서 (신세대) - 2016 - ALB
    HTTP, HTTPS, WebSocket
  • 네트워크 로드 밸런서 (신세대) - 2017 - NLB
    TCP, TLS (안전한 TCP), UDP
  • 게이트웨이 로드 밸런서 - 2020 - GWLB
    3계층(네트워크 계층)에서 작동 - IP 프로토콜

Load Balancer Security Groups

애플리케이션 로드 밸런서(ALB)


ALB 실습

4가지 로드 밸런서 중에 ALB를 가장 많이 사용한다 함.

    1. 인스턴스를 2개 생성
  • 두 인스턴스 모두 잘 작동한다

  • 이제 로드 밸런싱을 적용해보자

  • 아래와 같이 인바운드는 HTTP를 모두 열어주고, 대상 그룹을 생성하자

  • 생성을 완료하면 아래와 같이 DNS 이름이 나온다

  • 새로 고침을 할때마다 아래와 같이 대상이 바뀌는 것을 확인할 수 있다
    -> ALB가 균등하게 인스턴스를 바꿔가며 리디렉션을 해줌

  • 리스너 규칙 추가
    아래와 같이 특정 url, path를 조건으로 필터할 수 있다

  • 어떤 동작을 할지 정할 수 있다.

  • 2개의 인스턴스 중 하나를 중지하면 ALB가 인식하여 리디렉션을 해준다.
  • 인스턴스의 인바운드 규칙에서 ALB의 보안 그룹으로 바꿔주면 로드 밸런서를 통해서만 오는 것을 허용한다.

Sticky Sessions

오토 스케일링 그룹(ASG)

클라우드에서 서버를 빠르게 생성하고 제거할 수 있다.

  • 증가된 부하에 맞추어 EC2 인스턴스를 추가하여 확장(Scale out).
  • 감소된 부하에 맞추어 EC2 인스턴스를 제거하여 축소(Scale in).
  • 최소 및 최대 수의 EC2 인스턴스가 실행되고 있는지 확인
  • 새로운 인스턴스를 로드 밸런서에 자동으로 등록
  • 이전 인스턴스가 종료된 경우(예: 비정상일 경우) EC2 인스턴스를 재생성
  • ASG 사용은 무료

with Load Balancer

+CloudWatch Alarms & Scaling

ASG 실습

  • 오토 스케일링 그룹 생성(템플릿을 만들자)

  • 생성을 완료하면 EC2 인스턴스가 생성

  • 활동 기록을 통해 볼 수 있다.

  • 아래는 희망과 최대 인스턴스를 2개로 늘렸을 때

  • 아래는 희망 인스턴스를 1개로 다시 바꿨을 때

profile
소통을 지향하며 성장하는 것이 목표입니다.

0개의 댓글