티스토리 뷰
올바른 지적은 언제나 환영합니다. 댓글로 편하게 적어주세요!
오늘은 Network Load Balancing, Application Load Balancing의 차이를 알아보겠다. 먼저 로드밸런서에 대해 알아보자.
what is Load Balancing?
- 전체 처리를 보다 효율적으로 만드는 것을 목표로 일련의 작업을 리소스 세트(컴퓨팅 유닛)에 분산하는 프로세스입니다.
- 로드 밸런싱은 응답 시간을 최적화하고 다른 컴퓨팅 노드가 유휴 상태로 있는 동안 일부 컴퓨팅 노드의 과부하를 균일하게 방지할 수 있습니다.
- 하나의 인터넷 서비스가 발생하는 트래픽이 많을 때 여러 대의 서버가 분산 처리하여 서버의 로드율 증가, 부하량, 속도 저하 등을 고려하여 적절히 분산 처리하여 해결해 주는 서비스입니다.
다음은 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
- ALB는 L7단의 로드 밸런서를 지원
- ALB는 HTTP/HTTPS 프로토콜의 헤더를 보고 적절한 패킷으로 전송
- HTTP→HTTPS 변환 방법?
- ALB는 IP주소 + 포트번호 + 패킷 내용을 보고 스위칭
- ALB는 IP 주소가 변동되기 때문에 Client에서 Access 할 ELB의 DNS Name을 이용해야 함
- ALB는 L7단을 지원하기 때문에 SSL 적용이 가능
- NLB
- NLB는 L4단의 로드 밸런서를 지원
- NLB는 TCP/IP 프로토콜의 헤더를 보고 적절한 패킷으로 전송
- NLB는 IP + 포트번호를 보고 스위칭
- NLB는 할당한 Elastic IP를 Static IP로 사용이 가능하여 DNS Name과 IP주소 모두 사용이 가능
- NLB는 SSL 적용이 인프라 단에서 불가능하여 애플리케이션에서 따로 적용해야 함
추가적으로, L4, L7, SSL에 대해 조사해 보았다.
L4 (NLB)
- L4 로드 밸런서는 전송 계층(Transport Layer, Layer 4) 에서 작동하는 로드 밸런서
- 주로 TCP 및 UDP 프로토콜을 기반으로 클라이언트와 서버 간의 트래픽을 분산
- L4 로드 밸런서는 클라이언트의 요청(IP 주소와 포트, 서버의 IP 주소와 포트)을 기반으로 로드 밸런싱을 수행
- HOW?
- 클라이언트 연결 수신
- 클라이언트가 TCP 또는 UDP 연결을 시작하면, 로드 밸런서가 이를 수신
- 연결 요청에는 클라이언트의 IP 주소와 포트 번호, 서버의 IP 주소와 포트 번호택
- 패킷 헤더 분석
- 클라이언트 IP/포트 : 요청을 보낸 클라이언트의 네트워크 정보
- 서버 IP/포트 : 요청이 전달될 서버의 네트워크 정보
- 로드 밸런싱 알고리즘 적용
- 라운드 로빈 : 서버 목록을 순환하며 요청을 분배
- 최소 연결 수 : 현재 연결 수가 가장 적은 서버로 요청을 전달
- 해시 기반 : 클라이언트 IP 주소를 해싱하여 특정 서버로 매핑
- 대기 시간 기반 : 네트워크 응답 시간이 가장 빠른 서버로 트래픽 전달.
- 패킷 전달
- 선택된 서버로 클라이언트의 요청을 전달
- 로드 밸런서는 네트워크 주소 변환(NAT)을 수행하여 클라이언트와 서버 간의 연결을 유지
- 클라이언트 연결 수신
- HOW?
L7 (ALB)
- L7 로드 밸런서는 애플리케이션 계층(Application Layer, Layer 7) 에서 작동하는 로드 밸런서
- 주로 HTTP 및 HTTPS 프로토콜을 기반으로 클라이언트와 서버 간의 트래픽을 분산
- L7 로드 밸런서는 요청 내용(URL, 헤더, 쿠키 등)을 기반으로 로드 밸런싱을 수행
- HOW?
- 요청(URL, 헤더, 쿠키, HTTP 메서드..)의 세부 내용 분석
- URL : 패턴에 따라 트래픽 분배 (예) /api))
- 헤더 : 사용자 에이전트(브라우저/모바일 앱) 또는 언어 설정 등을 기반으로 서버를 선택
- 쿠키 : 사용자 세션 쿠키를 확인하여 동일 사용자가 이전에 연결했던 서버로 트래픽을 보냄(세션 지속성).
- 로드 밸런싱 알고리즘 선택
- URL 기반 라우팅 : 특정 URL로 들어온 요청에 대해 처리
- 헤더 기반 라우팅: 헤더 값에 따라 요청 처리
- 무작위/라운드 로빈: 특별한 조건이 없으면 균등히 트래픽 분배
- 서버로 요청 전달
- 선택된 서버에 요청을 전달
- SSL 오프로드(HTTPS 트래픽 복호화)나 압축 등 부가적인 처리를 수행
- 요청(URL, 헤더, 쿠키, HTTP 메서드..)의 세부 내용 분석
- HOW?
Secure Sockets Layer? 과 HTTPs의 연관관계?
SSL(현 TLS)
- 컴퓨터 네트워크에 통신 보안을 제공하기 위해 설계된 암호 규약
- 트랜스포트 레이어 보안(TLS)'이라는 이름은 '보안 소켓 레이어(SSL)'가 표준화되면서 바뀐 이름
- 이 규약은 인터넷 같이 TCP/IP 네트워크를 사용하는 통신에 적용되며, 통신 과정에서 전송계층 종단 간 보안과 데이터 무결성을 확보
- TLS(구 SSL) 인증서를 사용하여 데이터를 암호화! → HTTPS 적용
- NGINX - certbot
- AWS - ACM
Reference
- LB -wiki : https://en.wikipedia.org/wiki/Load_balancing_(computing)
- 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
- Application Load Balancer - AWS: https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/application/introduction.html
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- k8s
- ECR
- 무중단배포
- 단지번호붙이기 자바
- Java #객체 #자바기초 #자바
- 백준 상자넣기
- 자바
- 구간합구하기
- docker
- 프로그래머스
- EC2
- 쿠버네티스 오브젝트
- 쿠버네티스 개념
- 백준
- 백준 1965 풀이
- 행렬 테두리 회전하기 자바
- java
- 코딩테스트
- StatefulSet
- Java #코린이 #자바
- 자료구조
- AWS
- k8s object
- 마법사 상어와 비바라기 자바
- 단지번호붙이기 JAVA
- EB
- java #스프링 #spring #server
- 백준 상자 넣기 자바
- 백준 그림 자바
- dfs
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함