GWLB란?
AWS GWLB(Gateway Load Balancer)는 AWS 로드밸런서 서비스 타입중 하나로 외부에서 유입돼는 트래픽과 외부로 나가는 트래픽을 다른 네트워크(VPC)의 게이트웨이 역할로 가상어플라이언스로 라우팅할 수 있도록 해주는 서비스 입니다.
AWS GWLB를 사용하면 가상어플라이언스를 제공하는 파트너사들은 방화벽, 침입 탐지 및 방지 시스템의 배포, 확장 및 관리가 용이 해지며 사용자들은 가상 어플라이언스의 관리 영역을 구분할 수 있기 때문에 운영의 이점을 가져갈 수 있습니다.
트래픽 흐름을 보면 이해가 빠를 것 같습니다. 아래 그림과 같으며 파란색이 외부에서 Client가 서비스를 호출할때이고 주황색이 서비스에서 외부로 나갈때의 트래픽입니다.
GWLB를 이용한 아키텍처에 필요한 서비스
위와 같은 구조로 GWLB를 구현하기위해서 반드시 사용해야하는 서비스가 있습니다. 바로 GWLB Enpoint
와 GWLB Endpoint Service
입니다.
가상어플라이언스가 있는 오른쪽 VPC에 GWLB와 GWLB Endpoint Service를 생성하며 왼쪽의 사용자 VPC에 GWLB Endpoint를 생성하게 됩니다.
또 하나는 Ingress Route Table
입니다. 이는 기존 서브넷에만 적용되던 라우팅을 Ingternetgateway 나 Virtual Private Gateway에 적용할 수 있는 기능입니다. AWS Route Table생성 후 Edge Association 탭에서 설정 할 수 있습니다.
GWLB를 이용한 아키텍처 패턴은 다음 기준으로 정해지게 됩니다
또한 이 패턴은 Route Table 설정을 통해 구현이 가능합니다. 각 패턴에 대한 Route Table 설정은 아래에 자세히 설명 하도록 하겠습니다.
- Inbound 트래픽이 GWLB를 거치는 경우
- Outbound 트래픽이 GWLB를 거치는 경우
- Inbound트래픽이 GWLB를 거치지 않는 경우
- Outbound 트래픽이 GWLB를 거치지 않는 경우
AWS Routing Table 해석 방법
Route Table 설정하는 방법을 설명하기에 앞서 Route Table에 설정된 내용을 해석하는 방법을 알려드리도록 하겠습니다.
해당 Routing Table이 설정된 서브넷에 있는 리소스의 ENI가 트래픽이 시작되는 시작점인 Source
가 되고 Routing Table의 Destination
이 목적지, Target
은 시작점이 목적지를 갈수 있게해주는 수단이 됩니다.
이를 쉽게 해석하면 "Source에서 Destination으로 가는데 Target을 통해서 갈 수 있어" 라고 해석할 수 있습니디ㅏ. 만약 Destination이 0.0.0.0/0이라면 이는 Anywhere를 뜻하며 "Source는 Target을 통해서 어디든 갈 수 있어" 라고 해석할 수 있습니다.
또한 Public 또는 Private Routing Table에 GW Endpoint를 사용하려면 Ingress Routing을 추가하여 사용할 Public또는 Private 서브넷을 GW Endpoing로 할당 시켜야합니다. 아래 그림을 참고 하면 이해가 쉽습니다.
GWLB패턴을 조합 하면 4가지 케이스가 나옵니다
이 4가지 케이스 중 2가지 구성을 Cloudformation으로 만들었으며 해당 블로그를 참고하였습니다. https://whchoi98.gitbook.io/aws-gwlb
case1
Inbound 트래픽이 GWLB를 거치고, Outbound 트래픽도 GWLB를 거치는 경우
구조도
라우팅테이블
Cloudformation 예제 git hub 주소: https://github.com/kimdragon50/gwlb.git
case2
Inbound 트래픽이 GWLB를 거치지 않고, Outbound 트래픽은 GWLB를 거치는 경우
구조도
라우팅테이블
Cloudformation 예제 git hub 주소: https://github.com/kimdragon50/gwlb.git
case3
Inbound 트래픽이 GWLB를 거치고, Outbound 트래픽은 GWLB를 거치지 않는 경우
구조도
라우팅테이블
Cloudformation 예제 git hub 주소: https://github.com/kimdragon50/gwlb.git
case4
Inbound 트래픽이 GWLB를 거치지 않고, Outbound 트래픽은 GWLB를 거치지 않는 경우
- 이 케이스는 GWLB를 사용하지 않아도 되므로 생략합니다.
트래픽 테스트 방법
outbound test
- VPC01 서버에서
ping www.aws.com
- GWLB 서버에서
sudo tcpdump -nvv port 6081 | grep ICMP
Inbound test
- 웹브라우저에 생성된 alb DNS주소 입력
- GWLB 서버에서
sudo tcpdump -nvv port 6081 | grep elb
case01테스트 결과
outbound traffic
inbound traffic
case02 테스트 결과
- outbound traffic
- inbound traffic
반응없음
case03 테스트 결과
- outboud traffic
반응없음
- inbound traffic
'IT > AWS' 카테고리의 다른 글
[AWS] VPC Peering과 Transit Gateway 비교 (0) | 2021.11.24 |
---|---|
[AWS] 비용할인 체계, Savings Plans란? (0) | 2021.11.17 |
[AWS] EKS 클러스터에 서브넷 IP 추가 하기-4(신규 노드그룹 생성 편) (2) | 2021.10.18 |
[AWS] EKS 클러스터에 서브넷 IP 추가 하기-3(VPC CNI custom networking 활용 성공 편) (1) | 2021.10.17 |
[AWS] Cloudfront Log 파일 S3버킷에 날짜 경로로 저장하기(yyyy/mm/dd/hh) (0) | 2021.10.14 |