티스토리 뷰

올바른 지적은 언제나 환영합니다. 댓글로 편하게 적어주세요!

 

오늘은 Network Load Balancing, Application Load Balancing의 차이를 알아보겠다. 먼저 로드밸런서에 대해 알아보자.

 

what is Load Balancing?

  • 전체 처리를 보다 효율적으로 만드는 것을 목표로 일련의 작업을 리소스 세트(컴퓨팅 유닛)에 분산하는 프로세스입니다.
  • 로드 밸런싱은 응답 시간을 최적화하고 다른 컴퓨팅 노드가 유휴 상태로 있는 동안 일부 컴퓨팅 노드의 과부하를 균일하게 방지할 수 있습니다.
  • 하나의 인터넷 서비스가 발생하는 트래픽이 많을 때 여러 대의 서버가 분산 처리하여 서버의 로드율 증가, 부하량, 속도 저하 등을 고려하여 적절히 분산 처리하여 해결해 주는 서비스입니다.

https://no-easy-dev.tistory.com/entry/AWS-ALB와-NLB-차이점 블로그 참조하였습니다.


 

다음은 NLB에 대해 알아보자.

what is Network Load Balancing?

  • 네트워크 로드 밸런싱은 BGP와 같은 복잡한 라우팅 프로토콜을 사용하지 않고도 두 개 이상의 WAN 링크에서 트래픽의 균형을 맞출 수 있는 기능입니다
  • 이 기능은 각 LAN 사용자가 사용하는 대역폭의 양을 분산하기 위해 여러 연결에 걸쳐 웹, 이메일 등의 네트워크 세션의 균형을 유지하여 사용 가능한 총 대역폭을 늘립니다
  • 목적지: 타겟 그룹의 ip 주소와 포트

 

이어서 ALB에 대해 알아보자.

what is Application Load Balancing?

  • Application Load Balancer는 개방형 시스템 간 상호 연결(OSI) 모델의 일곱 번째 계층인 애플리케이션 계층에서 작동합니다.
  • 로드 밸런서는 요청을 받으면 우선순위에 따라 리스너 규칙을 평가하여 적용할 규칙을 결정한 다음, 규칙 작업의 대상 그룹에서 대상을 선택합니다.
  • 목적지: 타겟 그룹 내의 애플리케이션 서버

 

둘의 공통점은 아래와 같다.

 

NLB vs ALB 공통점?

  • 로드 밸런싱 역할 (트래픽 분산) → 시스템 안정성 및 확장성을 높임
  • 고가용성 → 다중 가용 영역(AZ)에서 트래픽 분산, 장애 조치 지원
  • Auto Scaling 연동
  • Health Check → 정기적인 상태 확인 수행 → Fail 시 다른
  • HTTPS/TLS 지원 → 둘 다 SSL 인증서를 통해 HTTPs 트래픽 처리 가능

 

둘의 차이점은 아래와 같다.

 

 

NLB vs ALB 차이점?

  • ALB
    1. ALB는 L7단의 로드 밸런서를 지원
    2. ALB는 HTTP/HTTPS 프로토콜의 헤더를 보고 적절한 패킷으로 전송
      1. HTTP→HTTPS 변환 방법?
    3. ALB는 IP주소 + 포트번호 + 패킷 내용을 보고 스위칭
    4. ALB는 IP 주소가 변동되기 때문에 Client에서 Access 할 ELB의 DNS Name을 이용해야 함
    5. ALB는 L7단을 지원하기 때문에 SSL 적용이 가능
  • NLB
    1. NLB는 L4단의 로드 밸런서를 지원
    2. NLB는 TCP/IP 프로토콜의 헤더를 보고 적절한 패킷으로 전송
    3. NLB는 IP + 포트번호를 보고 스위칭
    4. NLB는 할당한 Elastic IP를 Static IP로 사용이 가능하여 DNS Name과 IP주소 모두 사용이 가능
    5. NLB는 SSL 적용이 인프라 단에서 불가능하여 애플리케이션에서 따로 적용해야 함

 

https://velog.io/@moonblue/L4와-L7-로드밸런서의-차이점 참조 하였습니다

 

 


 

추가적으로, L4, L7, SSL에 대해 조사해 보았다.

 

L4 (NLB)

  • L4 로드 밸런서는 전송 계층(Transport Layer, Layer 4) 에서 작동하는 로드 밸런서
  • 주로 TCP 및 UDP 프로토콜을 기반으로 클라이언트와 서버 간의 트래픽을 분산
  • L4 로드 밸런서는 클라이언트의 요청(IP 주소와 포트, 서버의 IP 주소와 포트)을 기반으로 로드 밸런싱을 수행
    • HOW?
      • 클라이언트 연결 수신
        • 클라이언트가 TCP 또는 UDP 연결을 시작하면, 로드 밸런서가 이를 수신
        • 연결 요청에는 클라이언트의 IP 주소포트 번호, 서버의 IP 주소포트 번호
      • 패킷 헤더 분석
        • 클라이언트 IP/포트 : 요청을 보낸 클라이언트의 네트워크 정보
        • 서버 IP/포트 : 요청이 전달될 서버의 네트워크 정보
      • 로드 밸런싱 알고리즘 적용
        • 라운드 로빈 : 서버 목록을 순환하며 요청을 분배
        • 최소 연결 수 : 현재 연결 수가 가장 적은 서버로 요청을 전달
        • 해시 기반 : 클라이언트 IP 주소를 해싱하여 특정 서버로 매핑
        • 대기 시간 기반 : 네트워크 응답 시간이 가장 빠른 서버로 트래픽 전달.
      • 패킷 전달
        • 선택된 서버로 클라이언트의 요청을 전달
        • 로드 밸런서는 네트워크 주소 변환(NAT)을 수행하여 클라이언트와 서버 간의 연결을 유지

L7 (ALB)

  • L7 로드 밸런서는 애플리케이션 계층(Application Layer, Layer 7) 에서 작동하는 로드 밸런서
  • 주로 HTTP 및 HTTPS 프로토콜을 기반으로 클라이언트와 서버 간의 트래픽을 분산
  • L7 로드 밸런서는 요청 내용(URL, 헤더, 쿠키 등)을 기반으로 로드 밸런싱을 수행
    • HOW?
      • 요청(URL, 헤더, 쿠키, HTTP 메서드..)의 세부 내용 분석
        • URL : 패턴에 따라 트래픽 분배 (예) /api))
        • 헤더 : 사용자 에이전트(브라우저/모바일 앱) 또는 언어 설정 등을 기반으로 서버를 선택
        • 쿠키 : 사용자 세션 쿠키를 확인하여 동일 사용자가 이전에 연결했던 서버로 트래픽을 보냄(세션 지속성).
      • 로드 밸런싱 알고리즘 선택
        • URL 기반 라우팅 : 특정 URL로 들어온 요청에 대해 처리
        • 헤더 기반 라우팅: 헤더 값에 따라 요청 처리
        • 무작위/라운드 로빈: 특별한 조건이 없으면 균등히 트래픽 분배
      • 서버로 요청 전달
        • 선택된 서버에 요청을 전달
        • SSL 오프로드(HTTPS 트래픽 복호화)나 압축 등 부가적인 처리를 수행

Secure Sockets Layer? 과 HTTPs의 연관관계?

SSL(현 TLS)

  • 컴퓨터 네트워크에 통신 보안을 제공하기 위해 설계된 암호 규약
  • 트랜스포트 레이어 보안(TLS)'이라는 이름은 '보안 소켓 레이어(SSL)'가 표준화되면서 바뀐 이름
  • 이 규약은 인터넷 같이 TCP/IP 네트워크를 사용하는 통신에 적용되며, 통신 과정에서 전송계층 종단 간 보안과 데이터 무결성을 확보
  • TLS(구 SSL) 인증서를 사용하여 데이터를 암호화! → HTTPS 적용
  • NGINX - certbot
  • AWS - ACM

Reference

  1. NLB- wiki : https://en.wikipedia.org/wiki/Network_load_balancing
  1. LB -wiki : https://en.wikipedia.org/wiki/Load_balancing_(computing)
  2. SSL - wiki : https://ko.wikipedia.org/wiki/%EC%A0%84%EC%86%A1_%EA%B3%84%EC%B8%B5_%EB%B3%B4%EC%95%88
  3. Application Load Balancer - AWS: https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/application/introduction.html