ALB = Application Load Balancer
AWS에서 제공하는 7계층 로드밸런서
기본적으로 ALB는 부하 분산 용도로 가장 많이 사용합니다.
사용자가 많고 트래픽이 증가할 때 ALB를 사용하여 트래픽을 여러 대의 서버들로 트래픽을 분산할 수 있습니다.
이 외에도 ALB를 사용하면 AWS로부터 SSL 인증서를 무료로 제공받아 사용할 수 있습니다. 따로 SSL을 관리할 필요가 없기 때문에 굉장히 편리합니다.
ALB는 부하 분산 기능 뿐만 아니라 Routing Rule을 추가하여 Path, Header, Source IP 등에 따라서 Forward, Redirect, Return fix response 등을 수행할 수 있습니다.
실제 ALB를 생성하여 여러 대의 서버로 트래픽을 분산하는지 확인해보겠습니다.
생성할 아키텍처 구조입니다. 사용자는 앞단에 있는 ALB로 접속하고 ALB는 상황에 맞게 각 대상 서버로 트래픽을 전달합니다.
이 때 ALB에서 트래픽을 보낼 대상을 Target Group 이라고 합니다.
Prvate EC2 인스턴스엔 톰캣이 설치되어 있고 각 8080포트를 사용하고 있습니다.
이제 ALB를 생성해보겠습니다. ALB의 이름을 지정하고 스키마는 인터넷으로 해줍니다.
각 AWS 환경에 따라 내부용 ALB를 사용하기도 합니다.
ALB는 인터넷 게이트웨이가 연결된 서브넷에 매핑해줘야 합니다.
보안 그룹은 위에서 생성했던 ALB SG로 선택해줍니다.
리스너는 ALB에서 받을 트래픽이라고 생각하면 됩니다. 리스너를 설정하기 전 먼저 대상 그룹을 생성해줘야 합니다.
이 때, 프로토콜이 HTTP/HTTPS 와 같은 7계층 프로토콜이면 ALB이고 TCP/UDP 등이면 4계층 NLB가 되니 사용 용도에 따라 명확하게 지정해줘야 합니다.
당연한 말이지만, ALB리스너가 HTTP/HTTPS 프로토콜이면 TARGET 포트도 HTTP/HTTPS로 받아야 합니다.
대상 유형은 인스턴스 프로토콜, 포트는 HTTP/8080으로 지정해주면 됩니다.
상태 검사는 ALB가 해당 경로에 있는 파일을 체크하여 서버의 상태를 체크해주는 설정입니다.
ALB가 트래픽을 전달한 대상을 등록해 줍니다. 대상 인스턴스를 체크하고 아래 보류 중인 것으로 포함을 눌러주면 됩니다.
다시 ALB로 돌아와 위에서 만든 타겟으로 지정하여 생성해주면 됩니다.
이제 ALB가 각 서버로 트래픽을 로드밸런싱 하는지 확인해보겠습니다.
편의상 SSL, DNS 설정은 하지 않고 테스트 했습니다. 테스트할 땐 ALB 세부 정보에서 DNS 정보를 확인하고 DNS:PORT로 확인하면 됩니다.
브라우저에서 위 DNS 리스너 포트로 접속하면 됩니다.
ALB에서 1번 서버로 라우팅한 모습
ALB에서 2번 서버로 라우팅한 모습
여기까지 ALB에서 로드밸런싱하는 과정을 테스트해봤습니다.
이 작업은 ALB의 가장 기본적인 설정이고 다양한 ALB의 기능을 활용하면 보다 다양한 구성을 할 수 있습니다.