[TIL] 로드 밸런싱

다혜·2022년 3월 21일
0

Network

목록 보기
3/5
post-thumbnail

✅ 로드 밸런싱(Load Balancing)이란?

✔ 분산식 웹 서비스.
✔ 여러 서버에 부하(Load)를 분산(Balancing)해주는 기술.


  • 웹사이트 접속이 늘면서 트래픽을 감당하기엔 한대의 서버로는 부족하다.
  • 이를 해결하기 위해 하드웨어의 성능을 올리거나(Scale-up) 여러 대의 서버로 나눠서 처리하는 방법(Scale-out)이 있다.
  • 한 서버의 성능을 올리는 Scale-up은 한계가 있어, Scale-out이 효과적이다.
  • 이 때, 여러 서버에세 균등하게 트래픽을 분산시켜주는 것이 로드밸런싱이다.



✅ 로드 밸런서

✔ 로드 밸런싱 기술을 제공하는 서비스 또는 장치.
✔ Client와 Server Pool (분산 네트워크를 구성하는 서버들의 그룹) 사이에 위치한다.


🔧 로드 밸런서의 기능

✔ Health Check : 서버의 이상 유무 확인
✔ Tunneling : 패킷을 캡슐화화여 연결된 상호 간에만 패킷을 구별
✔ NAT: IP 주소 변환

① Health Check

  • 서버들에 대한 주기적인 Health Check를 통해 서버들의 장애 여부를 판단.
  • 이를 통해 서버에 이상이 있을 때, 정상 동작 중인 서버로 트래픽을 보내주는 Fail-over가 가능
  • TCP/UDP 분석이 가능하기 때문에 Firewall의 역할도 수행.

L3 체크

ICMP를 이용하여 서버의 IP 주소가 통신 가능한 상태인지 확인.

L4 체크

3 Way Handshaking을 기반으로 통신하는 TCP의 특성을 바탕으로 각 포트 상태를 확인.

L7 체크

응용 계층에서 실제 웹 페이지에 통신을 시도하여 이상 유무를 확인.


② Tunneling

  • 클라이언트와 서버 중간에서 터널링을 제공.
    터널링 : 데이터 스트림을 인터넷 상에서 가상의 파이프를 통해 전달시키는 기술. 패팃 내에 터널링할 대상을 캡슐화 시켜 전송.
  • 연결된 상호 간에만 캡슐화 된 패킷을 구별해 캡슐화를 해제.

③ NAT (Network Address Translation)

  • 목적지와 수신지의 IP 주소와 TCP/UDP 포트를 재기록하여 변환해주는 기능.
  • 여러 개의 호스트가 하나의 공인 IP 주소를 통해 접속하게 함.

SNAT (Source Network Address Translation)

내부에서 외부로 트래픽이 나가는 경우, 내부 사설 IP 주소를 공인 IP 주소로 변환하는 방식.
eg) 공유기

DNAT (Direct Network Address Translation)

외부에서 내부로 트래픽이 들어오는 경우, 외부 공인 IP 주소를 내부의 사설 IP 주소로 변환하는 방식.
eg) 로드 밸런서

DSR (Direct Server Routing)

서버에서 클라이언트로 되돌아가는 경우, 네트워크 장비나 로드 밸런서를 거치지 않고 바로 클라이언트로 찾아가는 방식. 로드 밸런서의 부하를 줄여준다.


📍 로드 밸런서 종류와 방법

✔ 로드 밸런서는 OSI 7계층을 기준으로 어떻게 로드를 분산하는지에 따라 종류가 나뉜다.
✔ L4 로드 밸런서와 L7 로드 밸런서가 가장 많이 활용.

① L4 로드 밸런싱

  • L4 계층(전송 계층) 에서 동작.
  • 네트워크 계층(eg. IP)이나 전송 계층(eg. TCP, UDP)의 정보를 바탕으로 로드를 분산한다.
  • IP주소, 포트번호, MAC 주소, 전송 프로토콜에 따라 트래픽 분산 처리 가능.
  • CLB (Connection Load Balancer) 혹은 SLB (Session Load Balancer)라고 부르기도 한다.

라운드 로빈 (Round Robin)

요청이 들어오는 대로 서버마다 균등하게 요청을 분배. 세션을 순차적으로 서버에 맺어주는 방식이므로 경로별로 같은 처리량이 보장되지 않음.

최소 연결 (Least Connection)

가장 적은 세션을 가진 서버로 트래픽을 보내는 방식. 가장 많이 사용된다.

최소 응답시간 (Least Response Time)

가장 빠른 응답 시간을 보이는 서버에 우선으로 트래픽을 보내주는 방식. 각 서버들의 가용 리소스와 성능, 처리 중인 데이터 등이 다를 경우 적합.

해시 기반 스케줄링(Source hash Scheduling)

사용자의 IP를 해싱한 후 결과에 따라 서버로 요청을 분배. 특정 클라이언트가 같은 서버로만 할당되는 것을 보장.

대역폭 기반 (Bandwidth)

서버들과의 대역폭을 고려하여 트래픽을 분산.


② L7 로드 밸런싱

  • L4 로드 밸런서의 기능 포함.
  • 응용 계층 (eg. HTTP, SMTP, FTP)의 정보를 바탕으로도 분산 처리 가능.
  • HTTP 헤더, 쿠키 등과 같은 클라이언트의 요청을 기반으로 특정 서버에 트래픽 분산 가능.
  • 특정한 패턴을 가진 바이러스를 감지해 네트워크 보호, DoD/DDoS와 같은 비정상적 트래픽 필터링 가능해 네트워크 보안 분야에서도 활용.

URL 스위칭 방식 (URL Switching)

특정 하위 URL들은 특정 서버로 처리하는 방식.
eg. './aaa/image' 또는 './aaa/video'와 같은 특정 URL을 가진 주소들은 서버가 아닌 별도 스토리지에 있는 객체 데이터로 바로 연결되도록 구성 가능.

컨텍스트 스위칭 방식 (Context Switching)

클라이언트가 요청한 특정 리소스에 대해 특정 서버로 연결 가능.
eg. 이미지 파일이 있는 서버 또는 스토리지에 직접 연결 가능.

쿠키 지속성 (Persistence with Cookies)

쿠키 정보를 바탕으로 클라이언트가 연결했었던 서버에 계속 할당해주는 방식.


📈 로드 밸런서 주요 성능 지표

초당 연결 수 (Connections per second)

최대 처리 가능한 초당 TCP 세션의 갯수

동시 연결 수 (Concurrent connections)

동시에 유지할 수 있는 최대 세션 갯수

처리 용량 (Throughput)

UDP 프로토콜에 대한 로드 밸런싱 성능 지표


🚫 로드 밸런서 장애 대비

장애에 대비해 로드 밸런서 서버를 이중화 구성한다.






💛 참고 :
https://www.stevenjlee.net/2020/06/30/%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%9D%98-%EB%B6%80%ED%95%98%EB%B6%84%EC%82%B0-%EB%A1%9C%EB%93%9C%EB%B0%B8%EB%9F%B0%EC%8B%B1-load-balancing-%EA%B7%B8/

profile
봉식이를 위한 개발을 하고 싶오

0개의 댓글