VPC peering이란??
AWS에서 서로 다른 VPC에 있는것은 각각 다른 네트워크에 속해 있는것이기 때문에, 하나의 리전 또는 계정에 속해있다고 할지라도 프라이빗 IP주소를 사용한 접근은 기본설정으로는 불가능하다. 이때, VPC peering connection을 이용하면, 서로 다른 VPC 간에도 같은 네트워크에 속하는 경우와 같이 프라이빗 IPv4 또는 IPv6 주소로 통신할 수 있도록 해준다. VPC peering 연결은 동일한 리전 내 다른 VPC 뿐만 아니라, 다른 리전, 다른 AWS 계정과의 연결도 가능하다.
VPC 피어링 관계에서의 트래픽은 퍼블릭 인터넷을 통과하지 않으므로 보안에 강하다는 장점이 있다. 또한, 간단하게 다른 계정과 리소스를 연결 할 수 있고, VPC 피어링 연결은 게이트웨이도, VPN연결도 아니며 물리적 하드웨어에 의존하지 않아, 통신 또는 대역폭 병목에 대한 단일장애점(SPOF: Single Point of Failure)이 없다.
VPC peering connection 생성하기
vpc 콘솔에 접속한다. 좌측메뉴바에서 Virtual Private Cloud(VPC)의 하위 메뉴 중 피어링연결을 선택한 후, 연결 창에서 피어링 연결 생성을 선택한다.
피어링 연결 설정에서 연결을 신청하고자 하는 VPC를 선택하고, 피어링할 대상 VPC를 입력해준다.
나는 ohio 리전의 VPC가 연결을 신청하도록 하였고, seoul 리전의 VPC를 피어링 대상으로 입력했다. 아래 화면에서 확인 가능하듯이, 다른 계정, 다른 리전, 동일 리전 내 모든 VPC와의 연결이 가능하다.
다만, 다른 리전이나 계정의 VPC는 자동완성으로 표현되지 않으므로, 정확한 VPC ID를 직접 입력해야한다.
입력값을 모두 채웠으면 피어링 연결 생성을 클릭한다.
그러면, 아래와 같이 피어링 연결이 정상정으로 요청 되었고, 리전을 변경해서 수락하라는 안내 메세지가 나온다.
이제 안내메세지를 따라 서울리전으로 변경해서 요청을 수락한다. 대상 VPC의 리전으로 이동하면, 아래와 같이 연결을 수락하라는 안내 메세지가 나온다. 여기서 작업 → 요청 수락을 선택하여 요청을 수락한다.
요청수락이 완료되면 피어링 상태가 활성으로 변경되면서 연결이 정상적으로 생성된것이다.
라우팅 테이블에 VPC 경로 추가하기
✅ VPC 피어링 커넥션을 통해서 트래픽을 송수신 하려면, VPC 라우팅 테이블에서 피어링된 VPC의 경로를 추가해주어야 한다.
콘솔 메뉴바에서 라우팅 테이블을 선택하고, 피어링 연결된 VPC의 라우팅 테이블을 선택한다. 하단의 라우팅 편집을 클릭해 편집 창으로 접속해서 라우팅을 추가해준다.
대상에는 연결한 VPC의 전체 CIDR 블록 입력해 주었는데, 좀 더 **세분화된 주소(**인스턴스의 IP 주소 등)를 입력해도 된다. 우측의 대상에서는 피어링 연결을 선택해주면 자동으로 연결된 피어링 연결의 ID가 선택된다.
양쪽의 VPC에 피어링 연결된 VPC에 대한 라우팅을 추가해준다.
VPC 피어링 연결에 대한 DNS 확인을 활성화
✅ 피어 VPC의 인스턴스가 쿼리를 보낼 때 VPC가 퍼블릭 IPv4 DNS 호스트 이름을 프라이빗 IPv4 주소로 확인하도록 활성화하려면 기존 피어링 연결을 수정해야 한다. DNS 호스트 이름과 DNS 확인에 대해 두 VPC를 모두 활성화해야 한다.
피어링 연결 콘솔에 접속해서 생성한 피어링연결을 선택한다.
아래 그림과 같이 세부 정보 아래에 DNS 설정 섹션이 있다. 여기에서 설정 편집을 선택한 후, 확인을 허용하도록 선택 후 저장해주면 된다.
다른 리전의 VPC 연결의 경우에는, 각 리전에 한번씩 접속해서 요청자와 수락자 모두 활성화 시켜주어야 한다.
위의 그림과 같이 모두 활성화가 되었다면 설정 완료이다.
VPC 피어링 연결 확인
이제 두 VPC간의 피어링 연결이 정상적으로 작동하는지 확인을 위해서 오하이오 리전의 EC2에서 서울 리전의 RDS에 접속해 보자.
일단, EC2의 보안그룹의 아웃바운드는 전체 허용이므로 따로 수정할 필요가 없다. 접속하고자 하는 서울 리전의 RDS 보안그룹의 인바운드 규칙에만 오하이오 리전의 EC2 보안그룹을 추가하면된다.
⚠️ 보안그룹의 소스는 같은 리전일 경우에는 연결하고자 하는 인스턴스의 보안그룹을 입력하고,
다른 리전일 경우에는 보안그룹 참조가 불가능하므로 VPC의 CIDR블록을 입력하고,
다른 계정일 경우에는 보안그룹 앞에 계정번호를 포함(예: 123456789012/sg-1a2b3c4d)해야 한다.
내경우에는 다른 리전간의 연결이므로 접속을 허용하고자 하는 VPC의 CIDR블록을 입력한다.
이제 오하이오 리전의 EC2에서 서울 리전의 postgresql로 접속을 시도해보면 된다.
'Amazon AWS' 카테고리의 다른 글
Amazon QuickSight에서 RDS/Redshift에 Private 연결 (0) | 2024.06.16 |
---|---|
Amazon DocumentDB 인스턴스 사이즈 계산기 (0) | 2023.10.08 |
AWS SAM을 이용해 Fast API를 AWS에 서버리스로 배포하기 (0) | 2022.09.18 |
리눅스(Ubuntu 20.04)에 AWS CLI 설치, 자동완성 설정하기 (0) | 2022.07.03 |
Opensearch 생성 시, vpc access 불가로 인한 생성 불가 오류 해결 (0) | 2022.06.19 |