반응형
About Me

안녕하세요, cool & soft한 백엔드 개발자가 되고싶은 토니입니다.

Notice
Recent Posts
Recent Comments
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

Code Art Online

Auto Scaling with NLB (Network Load Balancer) 본문

Server

Auto Scaling with NLB (Network Load Balancer)

kiritoni 2025. 6. 3. 20:46
반응형

ALB : Application Load Balancer (OSI 7계층 기반의 부하 분산기)

  • 애플리케이션 layer : HTTP에서 URL을 기반으로 부하분산
  • 주로 웹서버에 대한 로드밸런싱
  • URL 기반으로 분산을 처리하는 예시
    • `www.naver.com/news`에 대한 트래픽이 많아지면 ALB가 Target group에 분산시켜준다.
    • `www.naver.com/shopping`에 대한  트래픽이 많아지면 ALB가 Target group에 분산시켜준다.
  • 웹서버가 여러대 있다면 Round Robin(RR, 순차분배)으로 분산하는 방식을 사용한다. 

 

NLB : Network Load Balancer

  • NLB는 Layer 3인 Network laryer에서 작동한다고 착각할 수 있지만, 여기에서는 port 번호에 대한 로드밸런싱을 의미한다.
  • 이름만 Network Load Balancer일 뿐, Transport Layer(Layer 4)에서 사용된다.
  • Transport layer는 송신자와 수신자간의 논리적인 연결을 담당한다. (TCP, UDP)
  • TCP와 UDP를 이해하고 활용할 줄 아는 로드밸런서들은 L4 스위치 / L4 로드밸런서라고 부른다. 하지만 TCP, UDP의 상위 프로토콜을 이해하지는 못한다. (HTTP, FTP, DNS, DHCP 등) 
  • ALB는 이전에 설명했던 것처럼 Layer 7에서 사용한다. ALB는 Layer 4뿐만 아니라, Layer 7의 HTTP, HTTPS, WebSocket 등을 이해하고 처리할 수 있다. 다시 말하면, 적절한 곳에 사용하지 않으면 많은 리소스를 낭비하게 될 수 있다. 하지만 NLB는 Layer 4 상위 프로토콜을 이해할 필요가 없기 때문에 ALB보다 리소스가 적게 든다. 그래서 NLB가 ALB보다 더 많은 트래픽 처리가 가능할 수 있다.
  • 동일한 서비스는 같은 포트에서 처리한다. 
    • ex. www -> 80, https -> 443, mysql -> 3306
  • 웹서비스 뿐만 아니라, 다양한 서비스에 대한 분산 처리가 가능하다.
  • 그래서 보통 웹서비스가 아니라 IoT (센서에서 수집되는 정보)에서 많이 사용한다.
    • ex. 무인공장, 신용카드 정보 등

 

Scaling

  • 스케일링이란, 인스턴스 혹은 컴퓨팅 파워를 늘리는 것을 말한다.
  • Scale out : 시스템의 개수를 늘리는 것 (양적증대)
  • Scale in : 시스템의 개수를 줄이는 것 (양적축소)
  • Scale up : 시스템의 스펙을 높이는 것 (질적증대)
  • Scale down : 시스템의 스펙을 낮추는 것 (질적축소)
  • 클라우드에서는 성능을 16배 올리고 싶다면, 그냥 인스턴스를 16개 쓰면 된다. 즉, 공간의 제약이나 하드웨어적인 제약이 없다. (돈이 문제이다.) 그래서 클라우드 환경에서는 Scale In, Scale Out을 적절히 고려하여 설계해야 한다.

 

 

Auto Scaling

  • 시스템의 양이나 질을 관리자(사람)이 조절하는 것이 아니라, 약속된 방식으로 자동으로 조절되게 하는 것이다.
  • 서버를 모두 동일하게 설정해야 한다. (linux, application, firewall, user 등등 ...)
  • 서버 한 대를 잘 설정한 후에 서버 이미지로 저장해 둔다. 
  • 서버를 늘려야 할 때, 만들어놓았던 서버 이미지로 복제해서 부팅한다.
  • 이와 같은 방식으로 동일한 서버가 여러개 생성된다. 
  • AWS에서는 EC2 시작 템플릿이라는 기능이 있고, 똑같은 OS 환경의 인스턴스를 간편하게 복제할 수 있도록 해준다. 템플릿을 오토스케일링 그룹에 지정시키면 템플릿에 따라 동일한 인스턴스를 만들 수 있다. (AMI ID, 인스턴스 유형, 키페어, 보안그룹 등)
  • AWS Auto Scaling 그룹이 만든 EC2 인스턴스들을 NLB가 트래픽 대상으로 사용할 수 있다. Auto Scaling 그룹이 EC2 인스턴스를 자동으로 생성/삭제하고, NLB는 클라이언트의 요청을 등록된 EC2 인스턴스에 분산한다. 

 

대상 크기 조정 정책 (Target Tracking)

  • Auto Scaling 방식 중 하나로, AWS에서는 이 방식만 사용하고 있다.
  • CPU의 기준선을 만들어서 기준선을 초과하면 서버의 개수를 늘린다. 
    • ex. 만약 서버의 CPU 사용률이 60을 넘을 경우, 서버를 늘리면 CPU 사용률이 60이하로 내려가게 된다.
  • CPU등의 기준선 이하로 내려가면 서버의 개수를 줄인다. 
    • ex. 만약 서버의 CPU 사용률이 10이하로 내려가면, 서버를 줄이는 것을 반복하면 비용을 줄일 수 있다. 
  • 티켓 구입처럼 많은 사용자들이 한꺼번에 몰리는 경우 급격하게 서버를 늘릴 수 있다. 

 

 

 

NLB vs ALB

1. 고정 IP

  • ALB는 기본적으로 고정 IP를 제공하지 않는 구조로 설계되어있지만, NLB는 고정 IP는 제공한다.
  • 그러면 ALB는 왜 고정 IP를 제공하지 않을까?
  • ALB를 생성할 때, AWS는 가용 영역(AZ)을 고르라고 한다. 여기에서 보통 2개 이상의 AZ를 고르라고 하는데, ALB는 장애 상황을 고려해서 유동적인 인프라로 설계되어있기 때문이다. AWS는 ALB의 고가용성(HA)를 위해 AZ 장애 시에 자동으로 다른 AZ로 트래픽을 옮긴다. 이때 ALB는 ENI(Elastic Network Interface)를 재배치하는데, 이 과정에서 IP가 매번 바뀐다. ALB는 그래도 DNS 이름 기반 접근이 기본 방식이고, AWS는 IP주소에 의존하지 않도록 구성한다. 그래서 AWS는 이를 DNS 레코드 변경을 통해 자동으로 관리해준다. 그래서 ALB는 IP가 아닌 도메인 이름으로 접근해야 안정성이 보장된다. 
  • 반면에 NLB는 Elastic IP를 붙일 수 있어 고정이 가능하다. 따라서 DNS가 아닌 IP기반 제어가 필요한 환경 (방화벽, IP whitelist)에 적합하다. 그래서 이러한 점을 이용하여 NLB를 ALB의 앞단에 두고 고정된 IP를 제공하는 응용 방법이 있다. 

 

2. Source IP NAT & Traffic Flow

NLB는 ALB와 달리 Source IP NAT를 실시하지 않고, Traffic flow도 제어하지 않는다. 

 

3. 보안그룹

NLB는 ALB와 달리 보안 그룹을 갖지 않는다. 따라서 보안그룹을 통한 트래픽 제어는 불가능하다. 

 

4. SSL 인증서 탑재 가능 (TLS)

  • SSL Offload란, 클라이언트와의 HTTP(SSL/TLS) 통신에서 암호화/복호화 작업을 로드밸런서(NLB, ALB)가 대신 처리해주는 것이다. SSL/TLS는 암호화때문에 CPU 자원을 사용하고, 이걸 매번 애플리케이션 서버가 처리하면 부하가 커져 성능이 떨어질 수 있다. 무거운 암호화 작업을 로드밸런서에서 끝내고, 애플리케이션 서버에는 평문 HTTP로 넘기는 방식이다.
  • NLB또한 ALB처럼 SSL Offload를 할 수 있다. 

 

 

참고 자료

 

Network Load Balancer란 무엇인가요? - Elastic Load Balancing

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

 

AWS Network Load Balancer 쉽게 이해하기 #1

Transport Layer 송신자와 수신자의 논리적 연결(Connection)을 담당하는 부분으로, 신뢰성 있는 연결을 유지할 수 있도록 도와줍니다. 즉 Endpoint(사용자) 간의 연결을 생성하고 데이터를 얼마나 보냈는

aws-hyoh.tistory.com

 

 

[AWS] 📚 Auto Scaling 개념 원리 & 사용 세팅 💯 정리

오토 스케일링 (Auto Scaling) 클라우드 컴퓨팅의 대표적인 장점으로는 필요에 따라 서비스를 빠르게 확장하거나 축소할 수 있는 유연성을 들 수 있다. 그중, 오토스케일링(Auto Scaling)은 클라우드의

inpa.tistory.com

 

반응형