로드밸런서
로드밸런서
서버에 가해지는 부하(=로드)를 분산(=밸런싱) 해주는 장치 또는 기술
클라이언트와 분산 네트워크를 구성하는 서버들의 그룹 사이에 위치하여 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리
"로드밸런싱은 여러 대의 서버를 두고 서비스를 제공하는 분산 처리 시스템에서 필요한 기술"
Scale-up & Scale-out
Scale-up
서버 자체의 성능을 확장하는 것
ex) CPU가 i3인 컴퓨터를 i7로 업그레이드
Scale-out
기존 서버와 동일하거나 낮은 성능의 서버를 두 대 이상 증설하여 운영하는 것
ex) CPU가 i3인 컴퓨터를 여러 대 추가 구입해 운영
Scale-out 방식으로 서버를 증설한다면 여러 대의 서버로 트래픽을 균등하게 분산해주는 로드밸런싱이 반드시 필요
로드밸런서의 목적
서버 부하 분산
- 여러 대의 서버에 트래픽을 분산하여 특정 서버에 과부하가 걸리는 것을 방지
서비스 가용성 향상
- 서버의 장애를 감지하고 장애가 발생한 서버로 트래픽이 전달되지 않도록 차단
- 이를 통해 서비스 중단 없이 안정적으로 제공 가능
응답 속도 향상
- 트래픽을 분산해서 각 서버의 부하를 줄임으로써 사용자 요청에 대한 응답 속도 향상
확장성 확보
- 서버를 쉽게 추가하거나 제거가 가능
- 트래픽 증가에 따라 서버를 확장하여 서비스의 안정성을 유지
로드밸런싱 알고리즘
라운드로빈 방식 (Round Robin Method)
- 각 서버에 순차적으로 요청을 할당하는 단순한 알고리즘
- 클라이언트의 요청을 순서대로 분배하기 때문에 여러 대의 서버가 동일한 스펙을 가짐
가중 라운드로빈 방식 (Weight Round Robin Method)
- 각각의 서버마다 가중치를 매기고 가중치가 높은 서버에 클라이언트 요청을 우선적으로 배분
- 서버의 트래픽 처리 능력이 상이한 경우 사용
- ex) A 서버 가중치가 5, B 서버 가중치가 2라면 로드밸런서는 RR방식으로 A 서버에 5개 B 서버에 2개의 요청 전달
IP 해시 방식 (IP Hash Method)
- 클라이언트의 IP 주소를 특정 서버로 매핑하여 요청을 처리하는 방식
- 사용자의 IP를 해싱해 로드 분산 → 사용자는 항상 동일한 서버로 연결됨
최소 연결 방식 (Least Connection Method)
- 요청이 들어온 시점에서 가장 연결 수가 작은 서버에 요청을 할당
- 자주 세션이 길어지거나 서버에 분배된 트래픽들이 일정하지 않은 경우 적합한 방식
최소 응답 시간 방식 (Least Response Time Method)
- 서버의 현재 연결 상태와 응답 시간을 모두 고려하여 트래픽 배분
- 가장 적은 연결 상태와 가장 짧은 응답시간을 보이는 서버에 우선적으로 할당
L4 스위치와 L7 스위치
부하 분산에는 L4 로드밸런서와 L7 로드밸런서가 가장 많이 활용된다.
그 이유는 L4 로드밸런서로부터 포트 정보를 바탕으로 로드를 분산하는 것이 가능하기 때문
한 대의 서버에 각기 다른 포트 번호를 부여하여 다수의 서버 프로그램을 운영하는 경우라면 최소 L4 로드밸런서 이상을 사용해야 한다.
비교
L4 로드밸런서 | L7 로드밸런서 | |
계층 | 전송 계층 | 애플리케이션 계층 |
특징 | IP 주소, 포트 번호, TCP/UDP 정보를 바탕으로 트래픽 분산 | TCP/UDP, HTTP 헤더, URL, 쿠키 등 정보를 바탕으로 트래픽 분산 |
장점 | > 패킷의 내용을 깊이 분석하지 않기 때문에 트래픽 처리 속도가 빠름 > L7 로드밸런서보다 가격이 저렴 |
> 상위 계층에서 로드를 분산하기 때문에 정교한 로드밸런싱 가능 (특정 URL에 대한 트래픽을 특정 서버로 분산 등) > 특정한 패턴을 지닌 바이러스를 감지해 네트워크 보호 > DoS/DDoS 와 같은 비정상적인 트래픽을 필터링하여 네트워크 보안 강화 |
단점 | > 패킷 내용을 살펴볼 수 없기 때문에 세밀한 로드밸런싱이 어려움 > 사용자의 IP가 수시로 바뀌는 경우하면 연속적인 서비스를 제공하기 어려움 |
> 패킷의 내용을 복호화해야 하기에 더 높은 비용 > 패킷 내용을 분석하는 과정 필요하여 처리 속도 느림 |
로드밸런서와 프록시의 차이점?
로드밸런서는 여러 대의 서버에 트래픽을 분산하여 서버의 부하를 균등하게 분배하는 시스템 또는 장치
프록시는 클라이언트와 서버 사이에서 중계 역할을 하는 서버 / 클라이언트가 서버에 직접 접근하는 것을 막고 프록시 서버를 통해 요청을 전달하는 역할
특징 | 로드밸런서 | 프록시 |
주요 역할 | 트래픽 분산 | 중계 및 보안 |
위치 | 서버 앞단 | 클라이언트 or 서버 앞단 |
목적 | 고가용성, 확장성, 성능 향상 | 보안 강화 > 클라이언트 IP 주소를 숨기고 악성 트래픽을 차단 캐싱 > 자주 사용되는 데이터를 캐시에 저장하여 동일한 요청 발생 시 빠르게 응답해 서버 부하를 줄임 |
주요 기능 | 트래픽 분산, 서버 상태 확인, 장애 감지 | 캐싱, 보안, 접속 제어 |
프록시 종류
- 포워드 프록시 : 클라이언트가 서버에 직접 접근하는 것을 막고 프록시 서버를 통해 서버에 접근
- 리버스 프록시 : 서버 앞에 위치하여 클라이언트의 요청을 처리하고 서버의 IP 주소를 숨김
참고 사이트 : https://blog.naver.com/gabianow/223750671969
CS 로드맵 : https://github.com/devSquad-study/2023-CS-Study
cs 질문 참고 : https://eunsun-zizone-zzang.tistory.com/35