로드밸런싱(Load Balancing) 개념 및 기법

carlkim·2024년 1월 23일
0

WAS

목록 보기
11/12
post-thumbnail

그림 설명
1. 유저가 요청을 보낸다
2. -인터넷을 타고 게이트 웨이/라우터에 도달-
3. 로드밸런서에 도달
4. 로드밸런서가 서버에 요청을 전달한다.
(서버 한 대에 요청(트래픽)이 몰리면 한 대가 과부화되니까 요청을 로드밸런서가 나눠서 분배한다.)

대부분은 round robin과 sticky session을 사용함

로드밸런서는 클라이언트의 요청 및 네트워트의 트래픽이 집중되는 서버들(Server Pool / Server Farm) 또는 네트워크 허브 사이에 위치.

특정 서버 또는 네트워크 허브에 부화가 집중되지 않도록 분산시키는 역할을 한다.

로드 밸런싱의 기본 기능

1. Health Check(상태 확인)

  • 요청을 분산 받을 서버들이 죽었나 살았나 체크하는 기능
  • 당연하지만 살아있는 서버에게만 요청을 분배한다

2. Tunneling

  • 데이터 스트림을 인터넷 상에서 가상의 파이프를 통해 전달시키는 기술로, 패킷 내에 터널링할 대상을 캡슐화시켜 목적지까지 전송.

  • 연결된 상호 간에만 캡슐화된 패킷을 구별해 캡슐화를 해제하게 함.

3. NAT (Network Address Translation)

  • 내부 네트워크에서 사용하는 사설 IP 주소와 로드밸런서 외부의 공인 IP 주소 간의 변환 역할.
  • 로드밸런싱 관점에서는 여러 개의 호스트가 하나의 공인 IP 주소(VLAN or VIP)를 통해 접속하는 것이 주 목적.
  • SNAT (Source Network Address Translation) : 내부에서 외부로 트래픽이 나가는 경우.
    내부 사설 IP 주소 -> 외부 공인 IP 주소로 변환.
  • DNAT (Destination Network Address Translation) : 외부에서 내부로 트래픽이 들어오는 경우.
    외부 공인 IP 주소 -> 내부 사설 IP 주소로 변환.
  1. DSR (Destination Network Address Translation)
  • 서버에서 클라이언트로 트래픽이 되돌아가는 경우, 목적지를 클라이언트로 설정한 다음, 네트워크 장비나 로드밸런서를 거치지 않고 바로 클라이언트를 찾아가는 방식.

  • 이 기능을 통해 로드밸런서의 부하를 줄여줄 수 있음.

로드밸런싱 방식(알고리즘 - 요청 처리 방법)

1. 라운드 로빈 (Round Robin Method)

  • 서버로 들어오는 요청을 순서대로 돌아가며 배정하는 방식.

  • 클라이언트의 요청을 순서대로 분배하기 때문에 서버들이 동일한 스펙을 갖고 있고, 서버와의 연결(세션)이 오래 지속되지 않는 경우 활용하기 적합

2. 가중 라운드 로빈 방식

-- 더 높은 성능을 가진 서버에게 요청을 가중하는 방식

  • 주로 서버의 트래픽 처리 능력이 상이한 경우 사용되는 로드밸런싱 방식.
  • ex) 서버 A의 가중치: 5 / 서버 B의 가중치: 2
    => A 서버에 5개의 Request, B 서버에 2개의 Request 할당.

3. IP 해시 방식

  • 클라이언트의 IP 주소를 특정 서버로 매핑하여 요청을 처리하는 방식

  • 사용자의 IP를 해싱하여 부하를 분산하기 때문에 사용자가 항상 동일한 서버로 연결되는 것을 보장.

  • 경로가 보장되며, 접속자 수가 많을 수록 분산 및 효율이 뛰어나다.

4. 최소 연결 방식(Least Connnection Method)

  • 서버의 현재 연결 상태와 응답시간을 모두 고려하여, 가장 짧은 응답 시간을 보내는 서버로 트래픽을 할당한다.

  • 응답시간이 가장 짧다는건 부하가 가장 적게 받고 있다는 뜻이니까

5. 대역폭 방식 (Bandwidth Method)

  • 서버들과의 대역폭을 고려하여 서버에 트래픽을 할당.

L4와 L7 로드밸런서의 차이

L4(Layer 4) 로드 밸런서와 L7(Layer 7) 로드 밸런서는 OSI(Open Systems Interconnection) 모델의 다른 레이어에서 동작하는 두 가지 다른 유형의 로드 밸런서이다.

L4 로드 밸런서 (Transport Layer - 전송 계층):

주요 기능: 전송 계층에서 동작하며, 주로 IP 주소 및 포트 번호 수준에서 트래픽을 관리합니다.

로드 밸런싱: 네트워크 트래픽을 여러 서버로 분산시키는 기능을 수행합니다.

TCP 및 UDP: 주로 TCP 및 UDP와 같은 전송 계층 프로토콜을 기반으로 동작합니다

L7 로드 밸런서 (Application Layer - 응용 계층):

주요 기능: 응용 계층에서 동작하며, 트래픽을 애플리케이션 수준에서 관리합니다.

로드 밸런싱: 애플리케이션 데이터의 내용(Content)을 기반으로 로드 밸런싱을 수행합니다. 예를 들어, HTTP 헤더나 쿠키 정보를 이용하여 특정 서버로의 요청을 보낼 수 있습니다.

SSL 종단 지원: HTTPS와 같은 암호화된 연결에 대한 종단 간 지원을 제공할 수 있습니다.

L7은 애플리케이션 수준에서 트래픽을 관리기 때문에
더 정교한 로드 밸런싱 기능 제공 가능.

동작 방식

  1. 네트워크 상단에 가상서버가 존재하여 서버로 들어오는 패킷을 리얼 서버로 균일하게 트래픽을 분산시킨다.

  2. 서버에 장애가 발생하면 이를 감지하여 정상적으로 작동하는 서버로 트래픽을 분산시킨다.

장점

로드밸런싱을 이용하면 한 서버가 다운되더라도 이중화시킨 다른 서버에서 서비스를 지속하여, 서비스들이 문제를 인지하지 못하게 할 수 있다.

단지 노드를 추가하는 것만으로 서비스가 확장성을 가질 수 있다.

단점

로드밸런서를 사용할 때 어려운 문제 중 하나는 세션 데이터를 관리하는 것이다.

클라이언트의 연결 정보를 저장하는 세션이 로드밸런싱을 통해 하나의 서버 장비에 저장되는 경우, 추후 다른 서버로 접속하게 된다면 해당 클라이언트의 세션이 유지되지 않는다.

이러한 문제를 해결하기 위해 세션을 고정하는 Sticky Session을 사용한다.

profile
가장 나답게 문제해결.

0개의 댓글