Study/Network

[Network]Load Balancing(로드밸런싱)

seomj 2023. 6. 10. 21:29

로드 밸런싱

애플리케이션을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법

네트워크 또는 서버에 가해지는 부하(로드)를 분산(밸런싱)해주는 기술 

*로드 밸런서: 사용자와 서버 그룹 사이에 위치하며 보이지 않는 촉진자 역할을 하여 모든 리소스 서버가 동일하게 사용되도록 하는 디바이스

로드 밸런서는 클라이언트와 네트워크 트래픽이 집중되는 서버들 또는 네트워크 허브 사이에 위치

 

 

알고리즘

정적 로드 밸런싱

고정된 규칙을 따르며 현재 서버 상태와 무관

 

라운드 로빈 방식

이름 서버는 서버 팜에 있는 여러 서버의 IP 주소를 차례대로 또는 라운드 로빈 방식으로 반환한다.

 

가중 기반 라운드 로빈 방식

우선순위 또는 용량에 따라 각 서버에 서로 다른 가중치를 할당할 수 있다. 가중치가 높은 서버는 이름 서버에서 들어오는 애플리케이션 트래픽을 더 많이 수신한다.

 

IP 해시 방식

클라이언트 IP 주소에 대해 해싱을 수행한다. 클라이언트 IP 주소를 숫자로 변환한 다음 개별 서버에 매핑한다.

 

 

동적 로드 밸런싱

트래픽을 배포하기 전에 서버의 현재 상태를 검사

 

최소 연결 방법

클라이언트는 서버에 첫 번째 요청을 전송할 때 서로 활성 연결을 인증하고 설정한다. 로드 밸런서는 활성 연결이 가장 적은 서버를 확인하고 해당 서버로 트래픽을 전송한다. 

 

가중치 기반 최소 연결 방법

일부 서버가 다른 서버보다 더 많은 활성 연결을 처리할 수 있다고 가정한다. 각 서버에 다른 가중치 또는 용량을 할당할 수 있으며 로드 밸런서는 용량별 연결이 가장 적은 서버로 새 클라이언트 요청을 전송한다.

 

최소 응답 시간 방법

서버 응답 시간과 활성 연결을 결합하여 최상의 서버를 결정한다. 로드 밸런서는 이를 통해 모든 사용자에게 더 빠른 서비스를 보장한다.

 

리소스 기반 방법

로드 밸런서는 현재 서버 부하를 분석하여 트래픽을 배포한다.

 

 

종류

L4 로드 밸런싱

전송 계층에서 동작

IP 주소나 포트번호, MAC 주소 등에 따라 트래픽을 나누고 분산 처리

CLB(Connection Load Balancer) 혹은 SLB(Session Load Balancer)라고 부르기도 함

ex. http://www.test.com에서 http://74.74.74.74같이 ip와 port로 구분

 

 

L7 로드 밸런싱

애플리케이션 계층에서 동작

OSI 7계층의 프로토콜(HTTP, SMTP, FTP 등)을 바탕으로 분산 처리

ex. http://www.test.com/blog, http://www.test.com/news, http://www.test.com/shop 등으로 구분

 


AWS

작동 원리

*서버 팜: 여러 서버에서 애플리케이션을 실행하는데, 이러한 서버 배열을 의미

 

애플리케이션에 대한 사용자 요청은 먼저 로드밸런서로 이동한다. 그런 다음 로드 밸런서는 요청을 처리하는 데 가장 적합한 서버 팜의 단일 서버로 각 요청을 라우팅한다. 

 

  1. 클라이언트와 브라우저에서 test.com을 입력
  2. 클라이언트에 설정된 메인 DNS 서버로 test.com의 IP 주소를 문의
  3. 메인 DNS 서버는 test.com 주소를 관리하는 별도의 DNS 서버에 IP 주소를 문의
  4. 별도 관리 DNS 서버는 로드 밸런서의 IP 주소를 메인 DNS 서버에게 전달
  5. 메인 DNS 서버는 획득한 로드 밸런서의 IP 주소를 클라이언트에게 전송
  6. 클라이언트에서 로드 밸런서의 IP주소로 http 요청
  7. 로드 밸런서는 별도 로드 밸런싱 방법으로 서버에게 요청을 전송
  8. 서버의 작업 결과를 받은 로드 밸런서는 전달받은 http 결과를 클라이언트에게 전송

 

 

유형

애플리케이션 로드 밸런싱

HTTP 헤더 또는 SSL 세션 ID와 같은 요청 콘텐츠를 확인하여 트래픽을 리디렉션

 

네트워크 로드 밸런싱

IP 주소 및 기타 네트워크 정보를 검사하여 트래픽을 최적으로 리디렉션

 

글로벌 로드 밸런싱

지리적으로 분산된 여러 서버에서 발생

 

DNS 로드 밸런싱

도메인의 리소스 풀에서 네트워크 요청을 라우팅하도록 도메인을 구성

 

 

 

*NAT

network address translation

IP 주소를 변환해주는 기능

로드 밸런싱 관점에서는 여러 개의 호스트가 하나의 공인 IP 주소(VIP)를 통해 접속하는 것이 주목적

 

SNAT(Source Network Address Traslation)

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

ex. 공유기

 

DNAT(Destination Network Address Translation)

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

ex. 로드 밸런서

 

https://seomj74.tistory.com/303

 

 

* 온프레미스: HAProxy(L4/L7)

클라우드: NLB(L4), ALB(L7)

 

 

 

<출처>

https://aws.amazon.com/ko/what-is/load-balancing/

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/

https://velog.io/@yanghl98/OS%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EB%A1%9C%EB%93%9C%EB%B0%B8%EB%9F%B0%EC%8B%B1-Load-Balancing-%EC%A0%95%EC%9D%98-%EC%A2%85%EB%A5%98-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

 

 

'Study > Network' 카테고리의 다른 글

[Network]DNS(Domain name System)  (0) 2023.06.14
[Network]HAProxy  (0) 2023.06.11
[Network]NAT(Network Address Translation)  (0) 2023.05.26
[Network]ACL(Access Control List)  (0) 2023.05.25
[Network]Static Route  (0) 2023.05.22