우아한테크코스/레벨4
[Infra] 로드 밸런싱 (Load Balancing)은 왜 필요할까 ?
MINGYUM
2024. 9. 25. 20:11
로드 밸런싱의 목적
- CPU나 메모리와 네트워크가 부하가 될 수 있다. 특히 커넥션의 개수가 많아지면서 애플리케이션 단에서 OutOfMemoryError가 생길 수 있다. 스레드 풀 역시 고갈될 위험이 있다.
- 스케일 아웃으로 이를 해결한다고 가정하자. 그렇다면 클라이언트의 요청을 잘 처리할 가능성이 높은 서버에게 요청을 전달하는 과정이 필요하다. 이런 역할을 하는 서버가 로드 밸런서이다.
가용성이란?
- 서비스가 정상적으로 작동하는 시간
- 가용성을 어떻게 측정할 수 있는가? 헬스 체크를 사용하여 전체 헬스 체크 시도 중 성공한 비율을 가용성이라고 볼 수 있다.
AWS에서 사용하는 로드밸런스 기능을 사용하는 이유가 뭐야? 다른 로드 밸런서와 비교했을 때 장점이 있는가?
- ELB (Elastic Load Balancer) 를 사용한다.
- 왜냐하면 EC2 서버 여러 개를 한 번에 관리하기 편하기 때문이다. 자동으로 여러 가용 영역에서 트래픽을 분산한다.
- Nginx 와 비교했을 때 헬스 체크와 서버 부하 분산 알고리즘을 자동으로 제공한다. 더욱이 EC2 서버를 사용한다는 점에서 AWS 의 LB 기능을 이용하는 것이 간편하다.
ELB의 세 가지 종류는 무엇인가? 어떤 것을 선택하였는가?
- Application Load Balancer
- UI로 접하는 응용 프로그램 관련 계층으로, HTTP, FTP, DNS 등의 프로토콜을 사용한다.
- HTTP 의 헤더를 보고 요청을 보낼 대상 그룹을 선택할 수 있다.
- SSL 암호화 / 복호화가 가능하다.
- 경로 기반 라우팅이 있고 HTTP/HTTPS 기반으로 소통한다면 ALB를 쓰기에 적절하다.
- Network Load Balancer
- Application이 아닌 Transport 계층의 프로토콜을 활용해 부하를 분산한다. TCP, UDP 등 연결에 대해 IP 주소와 포트 번호를 기준으로 분산 처리한다.
- 실시간성으로 빠르게 요청을 보내는 서비스에 유리하다.
- Classic Load Balancer
ALB 로드 밸런서가 채택하는 부하 분산 알고리즘은?
- 라운드 로빈 알고리즘이다.
- 왜 ALB는 라운드 로빈 알고리즘을 사용할까? 다른 알고리즘은 무엇이 있는가? Least Connection 알고리즘은 왜 채택하지 않았을까?
- 라운드 로빈은 서버의 연결 상태를 지속적으로 확인하지 않아도된다. 또한 순차적으로 서버에 연결하기 때문에 부하가 고르게 나누어질 수 있다. Least Connection의 경우 커넥션마다 시간이 일정하지 않기 때문에, 긴 커넥션을 물고 있는 서버임에도 숫자가 적다는 이유로 부하를 또 줄 수 있기 때문이다.
로드 밸런서를 적용하면 모니터링과 로그 관리 방법이 달라질 것인가?
- CloudWath를 잘 사용하면 트래픽 모니터링을 통합하여 할 수 있다.