[ALB의 구성 요소]
- 리스너
- 규칙(rule)
- 대상 그룹(Target Group)
사용자의 요청이 들어왔을 때의 과정
사용자의 요청 → ALB → 리스너 → 규칙을 기반으로 특정 대상 그룹에 요청을 넘김.
(ex. 이번주 과제에서 로드 밸런서의 DNS를 타고 들어가면 위의 과정을 실행하게 됨)
[리스너]
Applicaion Load Balancer의 리스너는 7계층(Applicaion)의 프로토콜(HTTP, HTTPS)에 해당하는 요청을 받아들인다. 또한 HTTP 요청 메시지에 딸려오는 정보들을 이용하여 규칙에 의해 라우팅을 하게 된다. default 포트 번호는 HTTP는 80, HTTPS는 443이고, 다른 포트 번호를 사용하는 리스너를 생성할 수도 있다.
이번 과제 중 리스너?
다음과 같이 80번을 포트 번호로 사용하는 리스너에 Not reachable이라는 문구가 떴었다. 대상 그룹(ASG)의 인바운드 규칙에서 HTTP(80번)을 허용하지 않아서 저런 문구가 뜬 것이었다.
보안 그룹 - 인바운드 규칙에서 다음과 같이 HTTP에 대한 규칙을 추가해주면 해결이 된다.
[규칙]
HTTP 요청 메시지로부터 정보를 받아서 해당 정보를 통해 리스너가 어느 Target Group으로 보낼지 정해주는 것을 규칙이라고 한다. 규칙은 규칙 조건과 규칙 작업으로 나뉜다. 규칙 조건은 정보와 비교하면서 해당이 되는지 확인하는 부분이고, 규칙 작업은 규칙 조건과 일치하면 실행하는 행동이다.
이번 주차 과제를 실시하면서 자동으로 생긴 리스너의 규칙이다. 항상 TargetGroup으로 보내는 것을 확인할 수 있다.
규칙을 추가하면 기존 규칙의 상단에 추가되는 것을 볼 수 있는데, 규칙은 위에서부터 확인한다. 그러므로 마지막 조건(default로 있던 것)은 규칙 조건이 항상 참이었으므로 if문의 else라고 생각할 수 있다.
[규칙 조건]
규칙 조건은 다음과 같이 6가지로 설정할 수 있다.
- 호스트 헤더: 특정 도메인으로 접속했는지 확인하는 조건. 하나의 IP에 여러 도메인이 걸린 경우 유용하다.
- 경로: 특정 경로로 접속했는지 확인하는 조건.
- HTTP 헤더: HTTP 헤더 중 하나 이상을 비교하는 조건.
- HTTP 요청 메서드: 요청 메서드를 통해 확인하는 조건. GET, HOST 등으로 구분할 수 있다.
- 쿼리 문자열: 쿼리 스트링을 이용하는 조건.
- 소스 IP: 특정 IP 주소를 이용하는 조건. 어떤 IP 주소에서 접속했는지에 따라 다른 타겟 그룹으로 보낼 수 있다.
[규칙 작업]
규칙 작업은 다음과 같이 3가지가 있다.
- 전달 대상은 내 타겟 그룹 중 어디로 보낼지 선택할 수 있다. 여러 그룹을 선택할 수도 있고, 해당 경우에는 각자의 그룹이 트래픽 배포를 분담하게 된다.
- 리디렉션 대상은 현재 요청을 다른 URL로 전달한다.
- 고정 응답 반환은 사용자가 직접 입력한 코드를 실행시키는 페이지를 반환한다. text, html, css, javascript, json로 선택 가능하다.
사용 예시
gojung 경로에 <h1>HI</h1>로 고정 응답 반환을 하면 다음과 같은 화면이 나오게 된다.
잘 나왔다.
Reference
https://dev.classmethod.jp/articles/alb-listener-learn-doit/
https://dev.classmethod.jp/articles/alb-listener-learn-doit/
'ACC > ACC CNU' 카테고리의 다른 글
[ASC 1기] 5주차 - Storage (0) | 2023.07.05 |
---|---|
[ASC 1기] 4주차 - Auto Scaling Group, Load Balancing (0) | 2023.06.28 |
[ASC 1기] 4주차 준비 - 네트워크, Transit Gateway (0) | 2023.06.28 |
[ASC 1기] 3주차 준비 - Subnet (0) | 2023.06.22 |
[ASC 1기] 2주차 - Docker (0) | 2023.05.31 |