Load balancing이란?

서버와 클라이언트가 통신을 할 때, 트래픽이 많지 않다면 서버 하나로 충분할 것입니다.

하지만 클라이언트가 많아지며 트래픽이 증가하게 된다면 서버 하나로는 부하를 견디기 충분하지 않게 될 수 있습니다.

Load balancing은 이러한 부하(Load)를 분산(balancing)해주는 장치 또는 기술을 통칭합니다.

Scale-up 과 Scale-out

서버의 성능을 개선하는데는 두가지 방식이 있습니다. Scale-up과 Scale-out입니다.

Scale-up : 서버 자체의 성능을 확장하여 운영

Scale-out : 기존 서버와 비슷한 수준의 서버를 증설하여 운영

Scale-out 방식으로 서버를 증설하여 운영할 경우 각 서버에 부하를 분산해줄 Load balancing이 필요하게 됩니다.

Load balancing의 기본 기능

1. Health Check(상태 확인)

    - 서버들에 대한 주기적인 Health Check를 통해 서버들의 장애 여부를 판단하여, 정상 동작 중인 서버로만 트래픽을 보낸다.

    - L2 체크 : ARP 응답 확인 (디폴트로 ICMP 주기의 10배로 자동 설정)

    - L3 체크 : ICMP를 이용하여 서버의 IP주소가 통신 가능한 상태인지 확인한다.

    - L4 체크 : TCP의 3 Way-Handshaking으로 각 포트의 상태를 체크한다.

    - L7 체크 : 어플리케이션 계층에서 체크를 수행. Request를 (ex. GET /health_check.html) 통해 응답 코드 확인하는 방식. 주기적으로 서버와 세션을 맺기 때문에 부하가 발생하지만 어플리케이션 상태까지 체크할 수 있기 때문에 L4 Health Check 보다 확실한 헬스체크가 가능.

 

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

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

 

3. NAT(Network Address Translation)

    - 내부 네트워크에서 사용하는 사설 IP 주소와 Load balancer 외부의 공인 IP 주소 간의 변환 역할.

    - Load balancing 관점에서는 여러개의 호스트가 하나의 공인 IP 주소를 통해 접속하는 것이 주 목적.

 

4. DSR(Destination Network Address Translation)

    - 서버에서 클라이언트로 트래픽이 되돌아 가는 경우, 목적지를 클라이언트로 설정한 다음, 네트워크 장비나 Load balancer를 거치지 않고 바로 클라이언트를 찾아가는 방식.

    - 이 기능을 통해 Load balancer의 부하를 줄여줄 수 있음.

Load balancing의 종류

Load balancing의 종류로는 L4 Load balancing과 L7 Load balancing이 있습니다.

L4 Load balancer는 네트워크 계층(IP)나 전송 계층(TCP, UDP)의 정보를 바탕으로 로드를 분산합니다. IP주소나 포트번호, MAC주소, 전송 프로토콜에 따라 트래픽을 나누는 것이 가능합니다.

L4 Load balancing

L7 Load balancer는 어플리케이션 계층(HTTP, FTP, SMTP)에서 로드를 분산하기 때문에 HTTP헤더, 쿠키 등과 같은 사용자의 요청을 기준으로 특정 서버에 트래픽을 분산하는 것이 가능합니다. 아래 그림과 같이 URL에 따라 부하를 분산시키거나, HTTP 헤더의 쿠키값에 따라 부하를 분산하는 등 클라이언트의 요청을 보다 세분화 해 서버에 전달할 수 있습니다.

또한 L7 Loadbalancer의 경우 특정한 패턴을 지닌 바이러스를 감지해 네트워크를 보호할 수 있으며, DoS/DDoS와 같은 비정상적인 트래픽을 필터링 할 수 있어 네트워크 보안 분야에서도 활용되고 있습니다.

L7 Load balancing

Load balancing의 알고리즘

1. 라운드 로빈 (Round Robin)

 

순차적으로 돌아가며 세션을 할당해주는 방식입니다.

요청이 오면 단순히 그 요청을 순서대로 서버에 분배해주는데 첫 번째 요청은 첫 번째 서버, 두 번째 요청은 두 번째 서버에 할당해 줍니다. 로드밸런싱 대상 서버의 스펙이 동일하고, 처리 시간 혹은 세션지속시간이 짧은 애플리케이션의 경우 이러한 방식이 적합합니다.

 

2. 가중 라운드 로빈 (Weighted Round Robin)

 

각 서버마다 가중치를 설정해두고 해당 가중치만큼 세션을 할당해주는 방식입니다. 특정 서버의 스펙이 좋다면 해당 서버에 가중치를 좀 더 주어 세션을 더 많이 할당해주고, 스펙이 좋지 않은 서버에는 가중치를 적게 두어 세션을 적게 할당해주는 방식입니다.

 

3. 최소 연결 (Least Connection)

 

가장 적게 연결(가장 적은 세션)되어 있는 서버에 세션을 할당해주는 방식입니다.

서버에 분배된 세션들이 일정하지 않은 경우에 적합하며 부하를 줄이는 측면에서 많이 사용됩니다.

 

4. 최소 응답 (Least Response Time)

 

서버의 응답시간을 고려하여 세션을 할당해주는 방식입니다. 가장 짧은 응답 시간을 보이는 서버에 우선적으로 세션을 할당해주는 방식입니다.

 

5. 해시 (Hash)

특정 사용자는 특정 서버로만 할당시키는 방식입니다. 특정 IP주소나 포트를 갖는 사용자들은 특정 서버로만 세션을 맺도록 하는데 특정 IP주소나 포트에서 접속량이 특히 많을 때 관리가 편한 방식입니다.

 

 

 

 

 

 

참고 및 출처

 

https://medium.com/@dinubhagya97/load-balncing-f9e5a120a402

 

Load Balncing

In general terms, proxies are servers located between the client and the servers.

medium.com

https://m.post.naver.com/viewer/postView.nhn?volumeNo=27046347&memberNo=2521903

 

로드밸런서(Load Balancer)의 개념과 특징

[BY 가비아] 현대의 모든 정보는 인터넷을 통해 연결되어있습니다. 인터넷의 발달은 데이터 통신을 보다...

m.post.naver.com

https://co-no.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EB%A1%9C%EB%93%9C%EB%B0%B8%EB%9F%B0%EC%8B%B1

 

[네트워크] 로드밸런싱의 개념 및 기법 설명

로드밸런싱(Load Balancing)이란? : 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋 이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업(Work), 즉, 부하(Load)를 나누는 것을 의미한다. 이

co-no.tistory.com

https://m.blog.naver.com/sungsu9022/220962662085

 

[펌] L4, L7 health check에 관하여[kakao의 L3DSR 구성 사례]

Overview서비스 웹서버 Load Balancing을 위한 메커니즘으로 KAKAO에서는 L3DSR 방식을 사용하...

blog.naver.com

https://habitus92.tistory.com/22

 

[네트워크] 로드밸런싱(Load Balancing)이란? 종류와 기법

로드밸런싱 (Load Balancing) 은 '부하분산'이라고도 하며 해석 그대로 일을 밸런스 있게 맞추는 기능입니다. 모든 사람들이 12월 31일 23시 59분 59초에 메신저로 친구들을 포함한 지인들에게 새해 인

habitus92.tistory.com

 

+ Recent posts