카테고리 없음

LOAD BALANCING

이채야채 2025. 2. 14. 15:54

Load =  서버가 받는 부하 :  서버가 받는 트래픽을 의미

 

트래픽이 늘어났을때? 선택할 수 있는 방법이 2개가있다.

 

1.Vertical Scale up

 

우리가 가지고있는 서버자체의 퍼포먼스를 늘리는 방법

예를 들면

RAM이 4GB 였다면 그것을 32GB로 늘릴수도있고, 혹은 CPU가 옛날것이면, 더 좋은 CPU로 

더 많은 코어를 가지고있는 CPU로 바꿀 수 가 있다. 

 

----------------------------> 기술의 한계에 부딪히게 된다.

 

2.Horizontal Scale out  ✅

 

한대로 처리할 것을, 여러대로 처리를 하는 방식.

분산시스템을 구축 이때 중요한게 바로 로드밸런싱!!

 

어떻게, 분산 시키는지 결정하는 그 모듈이. 이 똑똑이가 바로 로드 밸런서 이다.

 

로드밸런싱 방식??

 

 

1. round robin

여러대의 서버가있을때 들어오는 request를 

순.차.적 으로 보낸 후 그다음에 다시 처음으로 돌아와서 시작하는 방식

수건돌리기 방식 -> 골고루 분산할 수 있는 방식

 

2.  random select

로드밸런서거 랜덤으로 서버에 리퀘스트를 보내는 방식.

운이 나쁘면 하나에 걸려서 부하가 걸릴수도있다.

하지만 사실상은 유니폼하게 request를 받게된다.

 

3. smart - least connection

역으로 얼마만큼의 컨넥션을 맺고있는지 알려준다.

server a,b,c,d 있으면 a,b는 바쁘고 c,d가 여유롭다.

여유로운 애들한테 몰아주자.

-> 실시간 통신으로 좀더 복잡할수있지만 스마트한 방식이다.

 

4.  smart - ratio

어떤 서버는 굉장히 성능이 좋은 서버이고, 안좋은 서버가있을것이다.

그러면 성능이 좋은 서버에 몰아준다.  

미리 스펙을 개산 후 , ratio를 부여해서 그쪽으로 트래픽을 몰아주고 여러가지 분산 처리를 할 수있다.

 

 

로드밸런싱 구축

 

두가지 방식

1. 소프트웨어 방식

- Ha Proxy, Reverse Proxy(Nginx, Apache)

- 로직만 구현하면 되니, 어려운 방식이 아니다.

 

2. 하드웨어 방식

- 물리적으로 서버를 묶는다.

- 서버는 보통 데이터센터에 위치할텐데, 직접 서버를 묶는다.

- L4 / L7 Switch

- 비싸지만 안정성이 높음.

- 아무다 IDC에 출입할 수없고 security적인 측면도 좋다

 

 

---------------------------------------------

 

로드 밸런서가 죽으면? 우리 시스템도 죽는다.

SPOF : Single Point Of Failure

 

로드밸런서를 한 서버에만 구축해서 뒷단에서 분산을 해봤자

서버가 죽어 버릴 수 가 있기에

로드밸런서도 scale out을 해야한다.

 

마스터가 일을 하되, 뒤에 슬레이브를 마스터로 구축 하는 방식 

 

현재 회사에서 사용되는 서비스인

tms, tas같은 경우 로드밸런싱을 하고잇을까??

 

 

- yes.

nginx 자체적으로 로드밸런서를 가지고있고, 설정을 해줄 수가 있다.

실제로 웹서버를 구동시키면 그 웹서버 nginx 나 apche 내부에서 로드밸런싱을 하게된다.