Today Keys : gateway load balancer, gwld, 게이트웨이, 로드밸런서, geneve, firewall, ips, ids, ingress routing, aws
이번 포스팅은 Partner Appliance의 간편한 배포, 확장성, 고가용성 제공을 위한 Gateway Load Balancer에 대한 예제입니다.
기존의 3rd-Party를 이용하여 방화벽 등을 구축하는 경우에 설계에 고려해야 할 사항이 많은 것을 물론, 운영에 대한 복잡도 증가 및 제약 사항이 존재하였으나, Gateway Load Balancer를 이용하게 되면 이러한 부분들을 거의 해소할 수 있으리라 생각됩니다.
이번 포스팅에서 Gateway Load Balancer이 무엇인가?에 대해서는 다루지 않으며, 기존 다른 포스팅과 마찬가지로 예제로 먼저 포스팅을 시작합니다.
이번 포스팅에서 다뤄질 예제에 대한 전체 아키텍처입니다.
이중화는 고려하지 않았기 때문에 1개 가용 영역만을 사용하였습니다.
서비스를 위한 ZIGI-VPC가 있고, Gateway Load Balancing을 위한 ZIGI-SEC-VPC가 있습니다.
ZIGI-SEC-VPC에는 Fortinet의 방화벽인 Fortigate을 사용하여 테스트를 진행합니다.
각 서브넷의 구성입니다.
위의 전체 아키텍처의 그림과 같습니다.
먼저 AWS 마켓 플레이스에서 fortinet 방화벽을 찾아서
ZIGI-SEC-VPC에 배포를 합니다.
방화벽 구성 시에는 서비스에 필요한 포트를 Security Group에서 미리 열어주어야 합니다.
(Ex. UDP 6081[GENEVE] )
방화벽을 배포하고 접속을 하면 다음과 같이 배포된 방화벽을 볼 수 있습니다.
방화벽에서는 GENEVE를 위한 설정과 함께 방화벽 정책을 추가합니다.
본 예제에서는 http에 대한 허용 정책을 추가해 두었습니다.
이제 본격적으로 Gateway Load Balancer를 생성합니다.
20년 11월 현재 제한된 리전에서만 제공되며,
본 예제는 버지니아 리전에서 테스트를 진행 했습니다.
Name과 VPC(AZ) 설정을 합니다.
앞서 얘기했듯이 본 예시는 테스트를 위한 단일 AZ 구성이지만,
실제 환경에서는 가용성을 위해서 멀티 AZ 구성을 하셔야 합니다.
Target에 대한 프로토콜은 GENEVE:6081로 정해져 있습니다.
앞서 배포한 Fortigate Appliance를 Target으로 등록합니다.
마찬가지로 예시에서는 1개의 Target이지만, 실 상용환경에서는 이중화 이상의 구성이 필요합니다.
설정 값을 확인 후, Gateway Load Balancer를 생성합니다.
Gateway Load Balancer가 생성된 것을 확인 할 수 있습니다. (type : gateway)
이제 Gateway Load Balancer를 사용하기 위해서 Endpoint Service를 생성합니다.
Gateway Load Balancer에 대한 Endpoint Service 생성 이후에는
해당 Endpoint Serivce를 사용하기 위한 Endpoint를 ZIGI-VPC에서 만듭니다.
Endpoint Service 생성 시, 수락을 받도록 설정했기 때문에 Endpoint를 생성하면
수락을 대기 중입니다. (Pending Acceptance)
수락을 하고 나면, Pending 상태로 바뀐 이후에
다시 Available로 변경됩니다.
이제 Endpoint 설정까지 완료되었습니다.
추가로 전체 아키텍처에 있는 웹서버(Web1) 및 웹서버 앞단의 LB(ZIGI-SVC-LB) 구성도 진행이 필요로 합니다.
해당 설정은 일반적인 설정이어서, 따로 설명하지는 않습니다.
Gateway Load Balancer 설정을 위한 Target(Fortigate) 및 GWLB, Endpoint 설정이 완료되면,
서비스를 위한 라우팅 설정을 진행합니다.
이제 Gateway Load Balancer Endpoint를 이용해서 Ingress Routing 등
전체 라우팅 설정을 진행합니다.
(라우팅 관련 내용은 본 포스팅에서는 다루지 않았습니다.)
이제 ZIGI-SVC-LB URL로 서비스 접속을 시도합니다.
Fortigate 방화벽 로그에서 보면 아래와 같이 외부(제 PC 112.X.X.177)에서
웹서버(Web1 : 10.0.0.182)로 접속을 시도해서 Permit된 로그를 확인 할 수 있습니다.
또한, 실제 웹 페이지가 정상적으로 열린 것을 아래와 같이 확인 할 수 있습니다.
방화벽에서 packet을 확인해 보면, 아래와 같이 정상적으로 방화벽을 통해서
서비스 패킷이 흘러간 것을 확인 할 수 있습니다.