[AWS] ALB의 기본

isgood·2024년 9월 23일
post-thumbnail

AWS 에서 지원하는 로드밸런서 중에 ALB 를 사용하며 헷갈렸던 부분들을 정리해보는 시간을 가지려한다. 정리한 내용보다 훨씬 많은 내용이 있지만 시작하기에 중요한 부분만 짚고 넘어가보자!

ALB(Application Load Balancer) 란?

여러 곳에서 호출되는 어플리케이션(웹, WAS, 솔루션 등) 을 단일 접점으로서 자동으로 부하 분산을 처리해주는 장치이며 AWS에서는 서비스 형태로 제공되고 있다.

*로드밸런서의 목적은 비슷하지만 기능이 다르다. L7, L4로 크게 나뉘며 ALB는 L7, NLB는 L4 계층에서 동작한다. 궁금한 사람들은 OSI 7 Layer, AWS ALB, NLB를 검색해보기 바란다.

ALB의 구조 ALB의 구조

ALB의 특징 및 기능

  • ALB의 DNS NAME
    로드밸런서의 DNS 이름은 클라이언트 요청에 대한 단일 접점이다.
    Route53에 CNAME 레코드를 사용하여 DNS 이름을 등록할 수 있다.
    *Route53 사용 시 별칭(Alias)을 사용하여 레코트를 생성 시 쿼리 비용이 무료이다. 큰 금액은 아니지만 아키텍처 설계 시 활용 가능

  • ALB 리스너
    리스너는 ALB에 최초 접근하는 포트와 프로토콜이다. SSL 인증서 적용 및 URL Re-direction 설정이 이곳에서 이루어지며 리스너의 규칙에 따라 설정된 대상 그룹으로 패킷이 보내진다.

  • ALB 대상 그룹
    ALB의 대상 그룹에서는 적용된 인스턴스의 헬스 체크를 하며, 리스너에서 패킷을 받는 포트와 프로토콜 인스턴스 또는 특정 IP 어떤 포트로 보낼 것인지도 정할 수 있다.
    로드밸런싱의 알고리즘이 정해지는 단계이며 기본은 라운드 로빈 알고리즘이다.

  • 교차 영역 로드 밸런싱ALB 교차영역 로드밸런싱 활성화ALB 는 기본적으로 교차 영역 로드 밸런싱이 활성화되어 있으며 교차 영역 로드 밸런싱이란 ALB의 어느 인터페이스로 요청이 가더라도 가용 영역에 무관하고 일정하게 부하 분산이 이뤄지게 해주는 기능이다. ALB는 라운드로빈 알고리즘의 따라 각 인터페이스는 50:50 의 요청을 받으며 위 그림의 경우 연결되어 있는 대상 10개에 모두 일정하게 분산된 것을 확인 할 수 있다.
    ALB 교차영역 로드밸런싱 비활성화ALB의 교차 영역 로드 밸런싱이 비활성화 상태일 때의 요청에 대한 부하 분산 그림이다. 각 인터페이스가 50:50 의 요청을 받으며 각 인터페이스 안에 연결 대상에만 분산을 하기 때문에 모든 인스턴스가 동일한 요청을 받지 못한 것을 확인할 수 있다.

  • ALB 의 X-Forwarded-For 헤더
    위 헤더는 요청한 대상의 IP 를 수집할 수 있는 헤더이다. 기본적으로 수집하고 있으므로 nginx, apache, webtob 등 웹 서버에서 수집을 하게 설정을 바꾸어 주면 된다. 실무를 하다보면 해당 요청을 받는 경우들이 있는데 당당하게 얘기하면 된다!

  • ALB의 라운드로빈 알고리즘
    ALB의 라운드 로빈 알고리즘에서 필자가 처음에 많이 헷갈렸던 부분은 Route53에서 던져주는 nslookup 결과에 따른 부분이었다. 도메인을 호출했을 때 nslookup 에 나오는 결과는 Route53에 라우팅 정책에 따라 무작위로 호출된 결과이며 ALB의 라운드 로빈 알고리즘의 효과가 아니라는 것이다.
    즉, 라운드 로빈 알고리즘이 적용되는 계층은 ALB의 대상 그룹이며 도메인 호출의 결과는 Route53에서 무작위로 반환된 값이다.

profile
life is so good

0개의 댓글