Cloud/AWS
[AWS] ALB와 NLB 사용 결정
Jen'_'
2021. 8. 11. 12:54
반응형
ALB(Application LoadBalancer)
L7 계층, 즉 애플리케이션 계층에서 동작하는 로드밸런서입니다
- 프로토콜: HTTP, HTTPS
- sticky session 설정이 가능합니다
- path-based(경로 기반) 라우팅 지원: 마이크로서비스 구조에서 path별로 각 마이크로서비스로 라우팅이 필요한 api gw는 alb를 사용합니다
sticky session 이란?
- http cookie 방식을 사용하여 트래픽을 분산합니다
- 예를 들면, 웹사이트에 로그인을 하면서 session을 서버에서 생성했는데, 또다시 서버에 접속할 때 로드반란서가 다른 쪽으로 서버로 라우팅 시키면 세션이 공유되지 않아 새로 로그인 요청을 하게 됩니다 (무한 로그인 지옥에 빠질 수 있음)
- sticky session 설정을 하면 한번 접근한 서버로 바인딩을 해줍니다
로드발란서 > 대상그룹 > 속성 편집
NLB(Network LoadBalancer)
L4계층, 즉 네트워크 계층에서 동작합니다
- 프로토콜: TCP, UDP, TLS, TCP_UDP -> 대상그룹 프로토콜을 HTTP로 설정하는 실수를 유의하세요
- 고정 IP 할당 가능한 유일한 로드발란서 입니다
- 네트워크 계층까지만 확인하므로 ALB보다 빠릅니다. 따라서 단순한 라우팅이 필요하고 트래픽이 많은 경우에는 ALB보다 NLB를 사용합니다
NLB에 IP 고정하는 방법
1. 탄력적 IP 할당
NLB 생성하기 전에 EC2 > 탄력적 IP 메뉴에 들어가서 IP를 할당받습니다.
2. NLB 생성
- 가용 영역(서브넷) 한 개당 탄력적 IP 한개만 할당할 수 있습니다.
- 지정된 리전에서 사용 가능한 탄력적 IP 주소 중 하나를 선택합니다. 이 IP 주소는 NLB의 인터페이스에 할당됩니다.
- NLB를 생성한 후 가용 영역에서 서브넷을 활성화한 후에는 해당 가용 영역에 대한 서브넷이나 탄력적IP 주소를 변경할 수 없습니다. 새 가용 영역 또는 서브넷만 추가할 수 있습니다.
네트워크 매핑 부분에서 가용영역 서브넷 선택하고 할당받은 고정IP 매핑합니다.
한 개의 고정 IP로 라운드로빈을 하고 싶으면 같은 가용 영역에 여러대의 서버를 배치해야겠군요.
테스트를 해보겠습니다.
ap-northeast-2a 가용영역에 apache, nginx 두 개의 웹서버를 배치했습니다.
두개의 웹페이지가 라운드로빈으로 잘 나옵니다 :)
+ 2021-09-29 추가
ALB에서 고정 IP를 사용할 수 있는 방법이 생겼습니다!!
참고
https://aws.amazon.com/ko/premiumsupport/knowledge-center/elb-attach-elastic-ip-to-public-nlb/
https://lemontia.tistory.com/898
https://haloworld.tistory.com/137
반응형