로드밸런싱(Load Balancing)
1. 개념
컴퓨터 네트워크 기술의 일종으로 처리해야 할 업무나 요청을 둘 혹은 셋 이상의 중앙처리장치 or 저장장치와 같은 컴퓨터 자원들에게 작업을 분산하는 것 즉, 부하를 나누는 것을 의미한다.
왜 필요한가?
서비스의 클라이언트 수가 증가하게 되면 기존 서버만으로는 요청에 응답하는 것이 어렵다!!
Scale-up으로 서버 자체의 성능을 확장하거나,
Scale-out으로 기존 서버와 동일하거나 낮은 성능의 서버를 두 대 이상 증설 => 로드밸런싱
2. 기능
- Health Check
- 주기적으로 서버들을 Health Check를 하는 과정을 통해 서버들의 장애 여부를 판단하여, 정상 동작 중인 서버로만 트래픽을 보낸다.
- L4 체크: TCP는 3 Way-Handshaking을 기반으로 통신, 이런 특성을 바탕으로 각 포트 상태를 체크
- L7 체크: Application layer(응용 계층)에서 실제 웹페이지에 통신을 시도하여 이상 유무를 파악하며 체크
- 주기적으로 서버들을 Health Check를 하는 과정을 통해 서버들의 장애 여부를 판단하여, 정상 동작 중인 서버로만 트래픽을 보낸다.
- Tunneling(터널링)
- 데이터 스트림을 인터넷상에서 가상의 파이프를 통해 전달시키는 기술
- 데이터를 캡슐화하여 연결된 노드만 그 데이터의 캡슐을 풀어서 볼 수 있다.
- NAT(Network Aaddress Translation)
- 내부 네트워크에서 사용하는 사설 IP 주소와 로드밸런서 외부의 공인 IP 주소 간의 변환 역할
- SNAT(Source Network Address Translation): 내부에서 외부로 트래픽이 나가는 경우, 내부 사설 IP 주소를 외부 공인 IP 주소로 변환
- DNAT(Destination Network Address Translation): 외부에서 내부로 트래픽이 들어오는 경우, 외부 공인 IP 주소를 내부 사설 IP 주소로 변환
- DSR(Destination Network Address Translation)
- 서버에서 클라이언트로 트래픽이 되돌아가는 경우, 목적지를 클라이언트로 설정한 다음, 로드밸런서를 거치지 않고 바로 클라이언트를 찾아가 로드밸런서의 부하를 줄일 수 있다.
2. 종류
로드밸런서는 OSI 7 계층을 기준으로 어떻게 부하를 분산하는지에 따라 종류를 나눈다.
L1~L7 까지 다양한 계층이 존재하는데, 상위 계층에서 사용하는 장비는 하위 계층의 기능을 모두 가지고 있고 섬세한 로드밸런싱이 가능하기 때문에 가격이 비싸진다.
한 대의 서버에 다수의 서버 프로그램을 운영 중이라면 최소 L4 이상을 사용해야하고 주로 L4, L7 로드밸런서를 가장 많이 사용한다.
- L4 로드밸런서: L4 계층(Transport Layer)에서 동작하고, Network Layer이나 Transport Layer의 정보를 바탕으로 로드밸런싱 한다. 포트 번호, 전송 프로토콜, IP 주소, MAC 주소에 따라 트래픽을 나눈다.
- L7 로드밸런서: Application Layer(HTTP, FTP, SMTP 등)에서 로드를 분산하기 때문에 HTTP 헤더, 쿠키 등과 같은 사용자 요청을 보다 세분화하여 특정 서버에 트래픽을 분산하는 것이 가능하다.
3. 로드밸런싱 알고리즘
- 라운드 로빈 방식(Round Robin Method)
- 서버로 들어온 요청을 순서대로 돌아가며 배정
- 클라이언트의 요청을 순서대로 분배하기 때문에 서버들이 동일한 스펙을 갖고 있고, 서버와의 연결(세션)이 오래 지속되지 않는 경우 활용하기 적합
- ex) A -> B -> C -> A
- 가중 라운드 로빈 방식(Weighted Round Robin Method)
- 각각의 서버마다 가중치(Weight)를 매기고 가중치가 높은 서버에 클라이언트 요청을 우선적으로 배분
- 서버의 트래픽 처리 능력이 다를 경우 사용
- ex) 서버 X의 가중치: 3 / 서버 Y의 가중치: 5 => X 서버에 Request 3, Y 서버에 Request 5 할당
- 최소 연결 방식(Least Connection Method)
- Request가 들어온 시점에 가장 적은 연결(세션) 상태를 보이는 서버에 우선적으로 트래픽을 할당
- 가장 많이 사용되는 방식
- 최소 응답 시간 방식(Fastest Response Time Method)
- 서버의 현재 연결 상태와 응답시간을 모두 고려하여, 가장 짧은 응답 시간을 보내는 서버로 트래픽을 할당
- 각 서버들의 가용한 리소스와 성능, 처리중인 데이터 양 등이 다를 경우 적합
- A: 요청 7개, 할당된 서버 7개 (O) / B: 요청 7개, 할당된 서버 10개 (X)
- IP 해시 방식(Source Hash Scheduling)
- 사용자의 IP를 해싱하여 부하를 분산하기 때문에 사용자가 항상 동일한 서버로 연결되는 것을 보장
- 특정 클라이언트의 IP주소를 특정 서버로 매핑 => 경로 보장
- *해싱: 임의의 길이를 지닌 데이터를 고정된 길이의 데이터로 매핑
4. L7 로드밸런싱 알고리즘
- URL Switching
- 특정 하위 URL들을 특정 서버로 처리
- ex) '../image' => 이미지 처리 서버 / '../video' => 동영상 처리 서버
- Context Switching
- 클라이언트가 요청한 특정 리소스에 대해 특정 서버로 연결 가능
- ex) 이미지 파일에 대해서는 확장자를 참조해 이미지 파일이 있는 서버 or 스토리지로 연결
- 쿠키 지속성
- 쿠키 정보를 바탕으로 클라이언트가 연결했던 서버에 계속 할당해주는 방식
- HTTP header의 쿠키 값 설정에 따라 스위치 할 서버 결정
'CS STUDY > 네트워크' 카테고리의 다른 글
UDP (0) | 2024.03.03 |
---|---|
TCP 3-Way Handshake (0) | 2024.03.03 |
OSI 7 계층 (0) | 2024.03.02 |
동기/비동기 & 블로킹/논블로킹 (0) | 2023.12.22 |
HTTP & HTTPS (0) | 2023.12.16 |