Nginx 로드밸런싱
- 서비스를 운영하다보면 점점 많은 트래픽이 발생하는데 한대의
서버로는 사양이 부족하다. 그래서 이를 해결하기위해 서버를 여러대
늘려서 서버를 운영한다
로드밸런서란
- 로드밸런싱 기능을 실제로 담당하는 물리적인 장비 혹은 소프트웨어
서버 스케일링
- 서버의 부하를 줄이기 위해 서버의 개수를 늘이거나(Scale-out) 혹은 서버의
성능을 높이는(Scale-up) 행위를 뜻함
* 스케일링의 종류
1. 스케일 아웃
- 서버를 여러대로 추가하는 방식
- 서버를 추가로 확장하기에 수평 스케일링이라고도 한다
- 서버가 여러대가 되기 때문에 각 서버에 걸리능 부하를 균등하게 처리하는 로드밸런싱이
필수이다.
장점
- 여러 대에서 분산 처리를 하기에 한 서버가 장애를 일으키더라도 다른 서버로 서비스 가능
단점
- 서버 대수가 늘어날 수록 관리하기 힘듬
- 모든 서버가 동일한 데이터를 가지고 있어야 한다
2. 스케일 업
- 해당 서버의 성능을 높이는 방법, cpu나 메모리의 성능을 높여서 더 많은 요청에 대응함
- 하드웨어 그 자체의 성능을 높이는 거라 수직 스케일링이라고 한다
장점
- 관리의 편의성이 좋다(서버 하나만 강화하면 되므로 여러 서버 간 동기화, 네트워크 구성
로드밸런싱 같은 복잡한 설정이 필요없다)
단점
- 급격하게 처리량이 많아지는 경우 서버 한대에 모든 부하가 집중되므로 장애 시 영향을
크게 받을 수 있다
- 성능 증가에 따라 비용이 많이 들 수 있다
오토스케일링(Auto Scaling)
- AWS 클라우드에서 cpu, 메모리 사용량, 트래픽 등을 모니터링 하여 서비스 요구에 따라 자동으로
ec2 개수를 늘리는 방법
로드밸런싱 알고리즘(Load Balancing Algorithm)
1. 라운드 로빈
- 로드 밸런싱에서 가장 많이 사용되는 알고리즘으로 클라이언트의 요청을 여러대의 서버에
순차적으로 분배하는 방식
- 모든 서버의 스펙이 동일하거나 비슷한 경우에 사용할 수 있는 알고리즘
2. 가중 라운드 로빈(Weighted Round Robin)
- 각 서버마다 가중치를 설정한 후 가중치가 높은 서버로부터 클라이언트의 요청을 우선적으로
전달하는 방힉. 주로 서버의 트래픽 처리량이 다른 경우 특정 서버의 스팩이 더 좋은 경우
가중 라운드 로빈 알고리즘을 사용하면 된다