본문 바로가기

내직업은 IT종사자/기타

로드밸런싱(Load Balancing)이란? L4 vs L7의 차이점, 로드밸런싱 알고리즘

반응형

 

 목차

 

 

 

1. 로드밸런싱이 필요한 이유


"헐 서버 다운됬다.."

서버가 하나일 때 트래픽이 적으면 서버는 문제없이 응답을 해줄 수 있으나, 트래픽이 서버 한개로 감당할 수 없는 양이 되는 순간

서버는 다운될 것이고, 서비스 또한 작동을 멈출 것입니다.

 

그러면 상장기업이면 주가에 영향을 미치고 개미님들의 눈가가 촉촉해질 수 있습니다.

 

 

1.1 서버로 과도하게 몰려 작동을 멈추지 않게 해결하는 방법은?

  1. 스케일 업: 서버의 인스턴스 성능을 올리는 방식 즉, 서버의 하드웨어 성능을 업그레이드 하는 방식입니다.(수직적 확장), CPU의 코어 수를 증가시키거나, RAM을 추가하는 방법 등으로 서버의 성능을 업그레이드 해줍니다.
    1. 장점
      1. 하나의 서버만 관리하면 되기때문에 유지보스가 쉽습니다.
      2. 허들이 낮습니다.
    2. 단점
      1. 하드웨어는 성능이 증가할 수록 가격이 급격하게 증가하기 때문에 비용이 높습니다.
      2. 아무리 성능을 향상시켜도 서버가 다운되면 서버 하나로 관리하고 있으므로 전체 서비스가 멈춥니다.
  2. 스케일 다운: 서버를 여러대로 나눠서 트래픽을 처리하는 스케일 아웃, 비슷한 성능의 서버를 여러대 증설하는 방법입니다. (수평적확장)      서버가 여러대로 나눠지기 때문에 앞단에서 각 서버에 트래픽을 균등하게 혹은 너무 몰리지않게 효율적으로 나눠줄 수 있는 로드 밸런싱 기술이 필요합니다.
    1. 장점
      1. 비교적 비용이 낮습니다.
      2. 하나의 서버가 다운되도 나머지 서버는 요청에 응답할 수 있습니다.
    2. 단점
      1. 허들이 높습니다.
      2. 서버의수가 증가함에 따라 관리가 다소 힘들어질 수 있습니다.

 

 

이처럼 서버의 과부하를 방지하고 효율적으로 굴리기 위한 방법 중 "스케일 아웃 방식" 에서 로드밸런서가 필요합니다.

 

 

 

 

2. 로드밸런서(Load Balancer)란?


위에서 언급했듯이 "스케일 아웃 방식" 에서 로드밸런싱 기술이 필요한데

이때, 로드밸런서는 이 기술을 제공하는 서비스 또는 장치이며 트래픽을 받아서 여러대의 서버에 분산시키는 하드웨어 또는 소프트웨어 입니다.

 

로드밸런싱(Load balancing)은 어플리 케이션을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법인데,

로드밸런서(Load balancer)는 서버에 가해지는 트래픽을 여러대의 서버에게 균등하게 분산시켜주는 역할을 합니다.

 

 

 

3. 로드밸런싱(Load Balancing)의 종류


https://dev.classmethod.jp/articles/load-balancing-types-and-algorithm/

 

 

  1. L2: MAC주소를 바탕으로 Load Balancing합니다. 
  2. L3: IP주소를 바탕으로 로드 밸런싱
  3. L4: 
    1. TCP/UDP가 속한 전송계층 단계에서 로드밸런싱
    2. Transport(전송계층)계층에서 LoadBalancing
    3. 데이터 변경/수정 할 수 없음
    4. 패킷 레벨에서만 트래픽을 분산하기 때문에 속도가 빠르고 효율이 높음
    5. 섬세한 라우팅이 불가능 하지만 L7로드 밸런서보다 가격이 저렵하다
  4. L7: Http/HTTPS, FTp(21), websocket 속한 응용계층 단계에서 로드 밸런싱 
    1. 포트나 헤더 등의 정보를 수정할 수 있음
    2. 패킷 내용을 확인하고 그 내용에 따라 트래픽을 특정 서버에 분산하는 것이 가능함
    3. 섬세한 라우팅이 가능하고 비정상적인 트래픽을 필터링 할 수 있음
    4. 패킷 내용을 복호화 하기 때문에 더 많은 비용이 듬

종류중에 L4부터 port 다룰 있기 때문에 부하 분산에는 L4 Load Balancer L7 Load Balancer 많이 사용됩니다. Load Balancer 한대 서버의 각각의 포트에 여러개의 서비스들을 운영할 있도록 합니다. 

 

 

 

 

 

4. L4  vs L7 차이점


L4 load Balancer IP, port를 기준으로 스케줄링 알고리즘을 통해 부하를 분산합니다.

클라이언트에서 로드밸런서로 요청을 보냇을때 최적의 서버로 요청을 전송하고 결과를 클라이언트 한테 알려줍니다.  

 

L7 Load Balancer L7위에서 동작하기 때문에 ip, port 이외에도 URI payload HTTP header, cookie등의 내용을 기준으로 부하를 분산합니다.

그래서 콘텐츠 기반 스위칭이라고도 합니다.

 

L4 load balncer 단지 부하를 분산시키는 것이라면

L7 load balancer 요청의 세부적인 사항을 두고 결제만 담당하는 서버와 회원가입 만을 담당하는 서버 등으로 분리해서 가볍고 작은 단위로 여러개의 서비스를 운영하고 요청을 각각의 서버에 분산할  있는것입니다.

 

또한 L7  load balancer는 L4 Load balancer 다르게 데이터를 분석해서 처리가 가능하기 때문에 악의적이거나 정상적인 콘텐츠를 감지해 보안 지점을 구축할 수도 잇는 장점이 있고, 그만큼 자원 소모가 크다는 단점이 있습니다. 

 

 

 

 

 

5. 로드밸런싱(Load Balancing)  가 서버를 선택하는 알고리즘(Algorithm)

 


  1. 라운드로빈 (Round Robin)
    1. 클라이언트로 부터 받은 요청을 로드밸런싱 대상 서버에 순서대로 할당 받는 방식입니다.
    2. 첫번째 요청은 첫번째 서버로, 두번째 요청은 두번째 서버로 이런식으로 할당하는 방식입니다.
    3. 로드밸런싱 대상 서버의 성능이 동일하고 처리 시간이 짧은 애플리케이션의 경우 균등하게 분산이 이루어지기 때문에 이 방식을 사용합니다.
  2. 가중 라운드로빈 방식(Weighted Round Robin Scheduling) :
    1. 실제로 서버에 서로 다른 처리 용량을 지정할 수 있습니다.
    2. 각 서버에 가중치를 부여할 수 있으며 여기서 지정한 정숫값을 통해 처리 용량을 정합니다.
  3. 최소 연결 방식(Least Connection)
    1. 최소 라우팅 서버를 우선적으로 배치
    2. 연결 수가 가장 적은 서버에 네트워크 연결 방향을 정합니다.
    3. 동적인 분산 알고리즘으로 각 서버에 대한 현재 연결 수를 동적으로 카운트 할 수 있스며, 동적으로 변하는 요청에 대한 부하를 분산 시킬 수 있습니다.
  4.  가중 최소 연결방식(Weighted Least Connection)
    1. 최소 연결 방식(Least Connection)으로 분배하지만 서버 가중치에 따라 요청을 더 분해하기도, 덜분배하기도 합니다.
    2. 서버의 가중치는 사용자가 지정할 수 있고 동적으로 조정되기도 합니다.
    3. 서버풀에 존재하는 서버들의 사양이 일관적이지 않고 다양한 경우 이 방법이 효과적입니다.
  5. Fastest Response Time
    1. 서버가 요청에 대해 응답하는 시간을 체크하여 가장 빠른 서버로 요청을 분배하는 방식입니다.
  6. Source Hash Scheduling
    1. 사용자의 IP를 해싱한 후 그 결과에 따라 서버로 요청을 분배합니다. 사용자의 IP는 고정되어있기 떄문에 항상 같은 서버로 연결된다는 보장을 받을 수 있습니다.

 

 

 

 

 

잘못된 정보에 대한 피드백은 언제나 환영입니다  (´▽`ʃƪ)♡

반응형