본문 바로가기
공부/AWS

[AWS] Transit Gateway Multi Region 구축하기

by haejang 2021. 6. 15.
728x90
728x90

 

for 행주

 

Transit Gateway 사용해보는 글의 마지막에서 2개 이상의 리전을 연결할 땐 각 리전별로 TGW를 만든 후 TGW끼리 연결하면 된다고 했다

그 과정을 간단한 실습을 통해 연습해보도록 하겠다

 

최종 아키텍처는 아래와 같다

 

 

시작!


 

1. 실습환경(VPC, EC2) 생성 - CloudFormation


이전 글의 실습에서 사용한 CloudFormation 파일을 좀 변형하여 실습에 필요한 VPC와 EC2를 생성하도록 하겠다

먼저 아래의 파일을 다운받자

 

VPCforTGW - onlyPublic.yml
0.00MB

 

그리고 원하는 리전 두 군데(본 포스팅에선 서울, 도쿄 사용)의 CloudFormation 스택을 생성해주자

※ 버지니아, 오하이오, 캘리포니아, 오레곤, 도쿄, 서울만 가능

※ 해당 리전에 Key Pair가 존재해야한다 (없으면 만들어두자)

 

AWS Console > CloudFormation > 스택 생성 > 템플릿 파일 업로드 > 위의 파일 선택

 

 

각 리전에서 스택 이름과 키, IP대역으로 쓸 Number를 지정해준다

(서울 - 10.10.0.0/16 대역, 도쿄 - 10.20.0.0/16 대역 사용)

 

 

쭉쭉 다음 눌러주고 스택 생성을 완료해준 후 모든 리소스들이 프로비저닝될때까지 좀 기다려주자

 

스택 생성 완료!

 

2. Transit Gateway 생성


2-1) TGW 생성

콘솔 > VPC > Transit Gateway > Create Transit Gateway

 

 

대충 이름만 설정해주고 Create 해준 후, 해당 TGW들의 State가 pending -> available이 될 때까지 좀 기다려주자

 

2-2) TGW 연결 생성

먼저 각각의 TGW를 각 리전의 VPC와 연결해주자

콘솔 > VPC > Transit Gateway 연결 > Create Transit Gateway Attachment

 

 

TGW ID와 VPC ID(드롭다운 메뉴에서 선택), 해당 Attach의 네임태그까지 설정해준 후 Create을 눌러주자

이 Attach가 pending되는동안 TGW끼리의 Attach도 생성해보겠다

 

이번엔 둘 중 한 리전에서만 진행한다 (여기선 서울에서 진행)

 

 

TGW ID와 Attach name tag는 위에서도 설정했었다

중요한건 Attachment typePeering Connection 으로 바꿔주고 연결될 Region을 설정한 후, 해당 TGW ID를 직접 입력해줘야한다

이렇게 Attach를 생성하고 나면 처음 State는 initiating request 상태이다 -> pending acceptance 상태가 될 때까지 기다려준다

저렇게 상태가 바뀐 후 도쿄 리전의 TGW 연결 탭에 가보면 해당 Attach가 생성되어있다 (똑같이 pending acceptance 상태)

해당 연결의 네임 태그를 보기 좋게 바꿔주고(선택), 작업 > Accept > Accept를 눌러주자

 

 

그럼 또 pending 상태가 되므로 available 상태가 될 때까지 기다려주면 된다

 

2-3) TGW 라우팅 테이블 설정

TGW는 결국 하나의 거대한 라우터라고 볼 수 있다

20번 대역으로 보낼 트래픽을 도쿄로, 10번 대역으로 보낼 트래픽을 서울로 보내주려면 마찬가지로 라우팅 규칙을 만들어줘야 한다

 

콘솔 > VPC > Transit Gateway 라우팅 테이블 에 들어가면 기본으로 생성된 라우팅 테이블이 있다

심지어 해당 리전의 VPC로의 라우팅 설정은 이미 되어있다 (Attach 만들 때 같이 생성)

따라서 우리는 서울 - 도쿄 라우팅만 해주면 된다

 

라우팅 테이블 선택 > Routes 탭 > Create static route

 

 

상대 리전 VPC의 CIDR와 TGW Attach를 선택해준다

 

 

완료하고 나면 아래와 같이 static routing이 잘 설정된걸 확인할 수 있다

 

서울 / 도쿄

 

3. 라우팅 테이블 설정


각 서버가 들어있는 서브넷의 라우팅 테이블에서도 당연히 트래픽을 설정해줘야 한다

 

콘솔 > VPC > 라우팅 테이블 > Public RT 선택 > 라우팅 탭 > 라우팅 편집

 

 

상대방 리전 VPC의 CIDR와 트래픽을 보낼 TGW를 선택해준다

 

 

※ 일시적인 현상인지 뭔지 잘 모르겠으나, 현재(21.06.15) 버지니아와 캘리포니아 리전에선 라우팅 테이블 수정 시 "서브넷 연결이 있는 테이블의 로컬 경로는 수정할 수 없습니다" 라는 에러가 뜨며 수정이 불가하다 (로컬 경로 라우팅은 수정하지 않았는데도!)

※ 서울, 도쿄, 오하이오에서는 해당 에러가 나지 않는 것을 확인했으나, 버지니아나 캘리포니아에서 실습을 진행하고 있을 시 잠깐 서브넷 연결을 해제한 후 라우팅 테이블을 수정해주자

 

 

4. 연결 테스트


둘 중 아무 리전의 EC2에 먼저 접속을 한 후 나머지 리전으로의 Ping을 날려보도록 하겠다

 

서울 -> 도쿄 / 도쿄 -> 서울

연결이 잘 된걸 확인할 수 있다

 

 

접속하려는 서버의 키만 넣어준다면 SSH 접속도 될 것이다

 

 

 

※ 리소스 지울 땐 TGW Attach -> TGW -> CloudFormation Stack 순으로 삭제해주면 된다

 

 

728x90
728x90

댓글