서버에서 살아남기

AWS 로드밸런서 (ALB vs NLB) 본문

aws

AWS 로드밸런서 (ALB vs NLB)

개발롬 2023. 7. 30. 20:01

1. 로드밸런싱

  • EC2로 가는 부하를 분산시켜주는 역할을 합니다.
  • 단일 DNS로 가게끔 노출시켜 줍니다.
  • 인스턴스 헬스체크를 통해 장애 처리를 원활하게 할 수 있게 해줍니다.
  • 클라우드 내의 개인 트래픽과 공공 트래픽을 분리합니다.

2. 종류

1) Classic Load Balancer

  • 2009년에 만들어졌으며 HTTP, HTTPS, TCP, SSL, Secure TCP를 지원합니다. 하지만 곧 서비스 지원이 종료되기 때문에 AWS는 사용을 권장하지 않습니다.

2) Application Load Balancer

  • 2016년에 출시됐으며 HTTP, HTTPS, 웹소켓 프로토콜을 지원합니다.

3) Network Load Balancer

  • 2017년에 출시됐으며 TCP, TLS, secure TCP, UDP 프로토콜을 지원합니다.

4) Gateway Load Balancer

  • 2020년에 출시됐으며 네트워크 계층에서 작동합니다.

3. 보안그룹 규칙

  • 로드밸런서에 유저들이 접근가능해야하기때문에 HTTP, HTTPS 두개의 포트에 소스는 전체 IP를 허용해야합니다.
  • 인스턴스의 경우 HTTP 타입에 80포트를 허용해야하며, 소스는 IP가 아닌 로드밸런서의 보안 그룹으로 연결합니다.
    위의 설정으로 EC2는 로드밸런서에서 오는 트래픽만 허용할 수 있게 됩니다.

4. ALB - Application Load Balancer

  • 동일 EC2 인스턴스 상의 여러 애플리케이션에 부하를 분산합니다.
  • HTTP/2와 WebSocket을 지원하며 HTTP에서 HTTPS로 리다이렉트가 가능합니다.
  • Path 기반 URL(example.com/user)에 라우팅이 가능하고, 호스트네임 기반 URL 라우팅(example.com)이 가능하고 쿼리스트링 기반(example.com/user?id=1)라우팅이 가능합니다.
    (해당 설정은 aws 로드밸런서 > 리스너 > rules 에서 설정이 가능합니다.)

4-1. ALB의 대상그룹(Target Group)

  1. EC2 인스턴스 (오토 스케일 그룹에 의해 관리됩니다.)
  2. ECS Tasks (ECS에 의해 관리됩니다.)
  3. IP 주소 (사설 IP 주소여야합니다.)

ALB는 여러 대상 그룹에 라우트 할 수 있으며 헬스 체크는 대상 그룹 레벨에서 이루어집니다.

🌟 알아두면 좋은 점

- 고정 호스트 네임이 부여됩니다. (xxx.xxx.com)
- 애플리케이션 서버는 클라이언트의 IP를 직접 보지 못하며 클라이언트의 실제 IP는 X-Forwarded-For 헤더에 삽입됩니다.
- 클라이언트 IP가 로드 밸런서와 직접 통신을 하고 로드 밸런서는 EC2와 통신 할 때 로드 밸런서의 IP로 통신합니다. 그래서 클라이언트의 정보를 얻기 위해서는 X-Forwarded-Port와 X-Forwarede-Proto를 확인해야합니다.

5. NLB - Network Load Balancer

  • L4 로드 밸런서로 TCP와 UDP트래픽을 다룰 수 있습니다.
  • 성능이 높고 초당 수백만 건의 요청을 처리합니다.
  • 가용영역 별로 하나의 고정 IP를 가지며 여러개의 고정 IP를 가지고 있는 애플리케이션을 노출할 때 유용합니다.
❗️ L4 vs L7
- OSI 모델에서의 계층을 나타냅니다.

1) L4
: OSI 모델에서 전송 계층에 해당합니다. 이 계층은 TCP와 UDP와 같은 프로토콜을 사용하여 데이터를 세그먼트로 분할하고 재조립하는 역할을 합니다.
또한 에러 복구, 흐름 제어, 데이터 전송 순서 등을 관리합니다.
: L4 로드밸런서는 IP주소와 포트 번호를 기반으로 트래픽을 분산시킵니다.

2) L7
: OSI 모델에서 응용 계층에 해당합니다. 이 계층은 HTTP, FTP(파일 전송을 위한 프로토콜), SMTP(이메일 전송을 위한 인터넷 표준 프로토콜) 와 같은 특정 프로그램이나 애플리케이션을 위한 프로토콜로 사용됩니다.
: HTTP 헤더, 쿠키, 세션 정보 등 애플리케이션 계층의 정보를 분석하여 트래픽을 분산시킵니다.

5-1. NLB의 대상그룹(Target Group)

  • EC2 인스턴스
  • IP 주소 (프라이빗 IP)
  • ALB (애플리케이션 로드 밸런서 앞에 네트워크 로드 밸런서를 배치하는 경우) > NLB를 둠으로써 고정 IP를 얻고, ALB를 둠으로써 HTTP유형의 트래픽을 처리합니다.

'aws' 카테고리의 다른 글

IAM 정책 문법  (0) 2023.09.13