Elastic Load Balancing

01. What is load balancing?

로드밸런서는 서버 혹은 서버셋으로 트래픽을 백엔드나 다운스트림 EC2 인스턴스 또는 서버들로 전달하는 역할을 한다.
예를 들어 EC2 인스턴스가 3개 있다고 하면, 인스턴스 안에는 ELB(로드밸런서)가 있고, 뒤에는 서버셋이 있다.
이 예시에서 3명의 유저들은 ELB로 바로 연결된다.

image-20220608030758148

  • 첫번째 유저의 로드는 백엔드 EC2 인스턴스 중 하나로 연결이 된다.
  • 로드 밸런싱 덕분에 다른 유저가 ELB에 연결된 경우 이 로드(요청)은 다른 EC2 인스턴스로 보내지게 된다.
  • 세번째 유저가 ELB에 연결되면, 로드밸런서에 의해 세번째 EC2 인스턴스로 요청이 가게 될것이다.
  • 더 많은 유저가 연결될 수록 EC2 인스턴스로 가는 부하가 더욱 분산된다. (부하분산)
  • 유저들은 자신들이 백엔드 EC2 중 어느것으로 요청가는건지 알 수 없다.
  • 유저들은 ELB 에 즉, 하나의 엔드포인트에만 연결이 된다는 것을 알 수 있다.

02. Why use a load balancer?

  • 부하를 다수의 다운스트림 인스턴스로 분산하기 위해서 (부하 분산)
  • 애플리케이션에 단일 액세스 지점(DNS)을 노출하고, 다운스트림 인스턴스 장애를 원활이 처리 가능
  • 로드 밸런서는 상태확인 메커니즘으로 어떤 인스턴스로 트래픽을 보낼 수 없는지 확인
  • 인스턴스들의 헬스체크를 해준다.
  • SSL 종료도 지원하기때문에, 웹 사이트에 암호화된 HTTPS 트래픽을 가질 수 있다.
  • 쿠키로 고정도를 강화할수있고, 영역에 걸친 고가용성을 가진다.
  • 클라우드 내에서 개인 트래픽과 공공 트래픽을 분리할 수 있다.

03. Why use an Elastic Load Balancer (ELB) ?

  • ELB 는 관리형 로드 밸런서이다.
    • AWS에 의해 관리된다.
    • 어떤 경우에도 작동할 것을 보장한다.
    • AWS가 업그레이드와 유지 관리 및 고가용성을 책임진다.
    • 로드 밸런서의 작동 방식을 수정할 수 있게끔 일부 환경도 제공한다.
    • 무조건 ELB 를 쓰는편이 좋다.
    • 자체 로드밸런서보다 저렴하고, 직접관리하면 확장성 측면에서 굉장히 번거롭다.
    • ELB 는 다수의 AWS 서비스들과 통합되어 있다.
      • EC2 인스턴스와 통합 가능
      • ASG 오토스케일링 그룹과도 통합
      • ECS (Elastic Container Service) 와도 통합 가능
      • ACM 인증서관리
      • CloudWatch 클라우드와치
      • Route53 통합

04. Health Checks

image-20220608031934322

  • 상태 확인을 지원한다.
    • ELB 가 EC2 인스턴스의 작동이 올바르게 되고 있는지 여부를 확인하기 위해 사용된다.
    • 제대로 작동하는 중이 아니라면 해당 인스턴스로 트래픽을 보낼 수 없기 때문에
      로드밸런서에겐 인스턴스의 상태가 아주 중요하다.
    • 상태 확인은 포트와 라우트에서 이루어진다.
      • HTTP
      • Port: 4567
      • endpoint: /health
  • 200 OK 을 리턴받지 않으면, 상태가 나쁘다고 판단한다.

05. ELB 종류 (4가지)

  1. Classic Load Balancer (CLB)
    • 2009년 출시
    • HTTP, HTTPS, TCP, SSL, secureTCP 지원
    • 현재 사용 권장되지 않고 있다.
  2. Application Load Balancer (ALB)
    • HTTP, HTTPS, WebSocket
    • 7계층 어플리케이션 레이어에서 동작한다.
    • 2016년 출시
  3. Network Load Balancer (NLB)
    • TCP, TLS, UDP
    • 2017년 출시
  4. Gateway Load Balancer (GWLB)
    • OSI 7계층중 3레이어 네트워크 레이어에서 동작한다.
    • IP Protocol

06. ELB Security Groups (ELB 보안그룹)

image-20220608032421517

  • 유저는 HTTP, HTTPS 를 사용해 어디서든 로드밸런서에 접근이 가능
  • 포트 범위는 80 or 443 이고, source는 0.0.0.0/0 어디서든 접근 가능
  • 로드밸런서에 유저의 연결을 허용하는 것
  • EC2 인스턴스는 로드밸런서를 통해 들어오는 트래픽만을 허용해야 하기 때문에
    EC2 인스턴스의 보안그룹 규칙은 조금 달라야 한다.
  • 포트80 에서 HTTP 만 허용하며, source는 IP범위가 아니라 보안 그룹이 된다.
    • 로드밸런서의 보안 그룹으로 연결시킨다.
    • EC2 인스턴스는 로드밸런서에서 온 트래픽만을 허용하게 되는 효과가 있다.
    • 강화된 보안 매커니즘을 구성할 수 있게 된다.

태그: , ,

카테고리:

업데이트:

댓글남기기