LOAD BALANCING
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 내부에서 로드밸런싱을 하게된다.