개요
AWS의 ELB(Elastic Load Balancer)를 공부하다 보니 ALB(Application Load Balancer)와 NLB(Network Load Balancer), GLB(Gateway Load Balancer), CLB(Classic Load Balancer)를 elb가 지원한다고 하는 것을 공식문서에서 확인 가능했다.
그 중 나는 ALB와 NLB를 이번에 사용하기로 결정하였고, 이 것에 대해 조사하게 되었다.
왜 사용하고자 했는가?
일단 이번 소마에서 개발할 프로젝트는 백엔드로 Spring Boot를 이용하고자 한다. 그렇기에 앞에 apache나 nginx 같은 웹 서버(WS)를 사용해야 했고, 실제 서비스가 돌아갈 WAS 서버도 돌아가야 했다.
일단 이런 사전배경이 있었는데, 그래서 기업들에서는 어떤 아키텍처를 선택했나 찾아보았었다...
그러다가 보니 WS에도 elb를 걸고, WAS에도 elb를 거는 ㅇㅅㅇ... 구조를 보았다. ( 사실 당연한 거지... )
좀 더 자세히 보니, WS에서는 ALB를 사용하고, WAS는 NLB를 사용한다고 하였다.
그래서 이 둘에 대해 조금 자세히 공부해 보고 싶다는 생각이 들었다.
ELB란?
일단 elb에 대해 조금 자세히 알아보자자자자
로드 밸런서로서 부하를 적절하게 분배를 해주는 장치이다.
기능으로는
- 트래픽 분산
- 자동 확장
- 인스턴스 상태 파악 후 오류 있는 경우 배제
- 사용자 세션을 특정 인스턴스에 고정
- SSL 암호화 지원
- SSL 처리에 따른 부하를 ELB가 수용
- 사용 시간과 통과한 트래픽에 따라 종량제로 과금
이정도가 있다고 한다.
ALB란?
- L7 영역의 로드 밸런서
- 통신
- 클라이언트 IP와 서버 사이에 들어오고 나가는 모든 트래픽이 로드 밸런서와 통신
- 보안
- security group을 통해 따로 보안이 가능
- IP
- 변동 IP이다.
- 그렇기에 클라이언트에서 액세스시 ELB의 DNS name을 이용해 접근해야한다
- 즉 네임 서버 or route53에서 CNAME을 사용해야 도메인 네임 연동이 가능
- 왜 변동이지? 추후에 찾아봐야겠다
- 즉 네임 서버 or route53에서 CNAME을 사용해야 도메인 네임 연동이 가능
- 그렇기에 클라이언트에서 액세스시 ELB의 DNS name을 이용해 접근해야한다
- 변동 IP이다.
- 로드밸런서에 대한 경로 기반 라우팅이 지원된다
- ip + port + 패킷 내용을 보고 스위칭
- SSL 적용 가능
NLB란?
- L4 영역의 로드밸런서
- 통신
- 클라이언트 IP와 서버 사이에서 서버로 들어오는 트래픽은 로드밸런서와 통신
- 서버에서 클라이언트로 나가는 트래픽은 로드밸런서를 통하지 않고 클라이언트 IP와 직접 통신
- 보안
- 별도 security 그룹이 없다
- 서버에 적용된 보안 그룹을 통해 보안이 가능
- 별도 security 그룹이 없다
- IP
- 고정 ip 지원
- 속도
- 네트워크 계층만 하니 ALB에 비하면 빠르다
- 라우팅이 단순하고, 트래픽이 극도로 많으면 ALB보단 NLB로
- IP + PORT로 스위칭
비교
꽤나 많은 부분이 다르긴 하였다.
당연하게도 한쪽은 애플리케이션 영역이고 하나는 네트워크 영역이니 말이다.
결론
이번에 우리 프로젝트에서는 위에서 말했다 싶이 두개다 사용을 할 예정이다.
일단 ALB에 SSL 인증을 추가적으로 걸 생각도 있다. -> https를 위해
ALB로 nginx에 로드 밸런싱을 처리하고, nlb를 통해 실제 앱 서버에 분산을 시켜줄려고 한다.
실제로 구현을 하다보면 많은 이슈가 생길듯 하지만.... 열심히 해봐야겠다 ㅎㅎ...
참고자료
https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/userguide/what-is-load-balancing.html
https://skstp35.tistory.com/321
'aws' 카테고리의 다른 글
EBS (0) | 2023.06.22 |
---|---|
IAM 정책 시뮬레이터 (0) | 2023.06.21 |
댓글