data engineering

aws clb, alb, nlb

qkqhxla1 2020. 1. 23. 08:57

aws에는 3개의 로드밸런서가 있다. 3개는 classic load balancer, application load balancer, network load balancer이고,(clb, alb, nlb라고 부름) 개념이 모호해서 잘 몰랐던 내용을 정리해보려고 한다.


첫번째 참고 링크 : https://jackiechen.org/2018/01/10/aws-elb-clb-vs-alb-vs-nlb/


일단 clb이다. clb는 가장 오래된 로드밸런서이며, 현재는 잘 안쓰는 추세라고 한다. 처음엔 clb만 있었다가 alb가 나오고, nlb가 가장 최근에 나왔다고 한다. 위의 링크를 읽어보면 작성자 생각에는 clb로 네트워크와 어플리케이션의 플로우 컨트롤을 다 하려다가 제한된 기능으로 인해 7계층과 4계층에 특화된 lb가 이후에 나온것 같다. 그리고 http 2.0이 나옴에 따라 clb는 사라질것이라고 한다. nlb는 tcp등을 컨트롤하는 4계층이고, alb는 http등의 어플리케이션 단을 컨트롤하는 7계층 로드밸런서이다.


실질적으로 테스트로 만들어서 차이를 살펴보면, 4계층의 nlb는 정말 단순히 여러 대의 서버가 있는 경우 그중 하나로 로드밸런싱 할 경우에 유용하다. 용도가 애초에 다르긴 하지만 http단에서 어떻게 하든 말든 4계층까지만 보므로 alb보다 속도도 당연히 빠르다. 

nlb의 listener추가의 경우.

우리가 생각했던 단순히 몇번 포트로 들어온 경우 어떤 타겟그룹으로 포워딩 해줄까에 대한 정보만 있다.

alb의 경우에는 7계층 로드밸런서인만큼 더 세부적인 컨트롤이 가능하다. 다만 만약 단순히 여러 대의 서버로 로드밸런싱 용도로만 쓸 경우에는 nlb보다 속도는 느릴것이다.

alb의 listener추가의 경우.

확실히 옵션이 더 많다. 요청이 들어온 host나 path에 따라 어디로 리다이렉션 시킬지도 결정할수 있고 옵션이 몇개 더 있었다.

그리고 여기 두번째 참고 링크 : https://www.nclouds.com/blog/what-type-of-aws-elastic-load-balancing-aws-elb-is-right-for-you/


가 있는데 한번 더 읽으면서 생각을 정리하면 될듯 싶다. 중간에 표하고 교집합그림나오는 부분을 보자.



결론.

1. alb나 nlb만 쓰자.

2. 정말 단순히 여러 서버들을 묶어주고 서버 하나하나로 로드밸런싱만 할거면 nlb를 쓰자.

3. 조금 더 복잡한 작업(ex) host나 path기반의 라우팅 등)을 하려면 alb를 쓰자.