1. 개요
AWS로 서비스를 운영하다 보면 타 VPC의 리소스에 연결이 필요한 경우가 있습니다. 타 VPC에 자원에 접근을 위해선 다양한 방법이 있습니다.
만약 접근하고자 하는 자원이 Public Network에 있다면 Pubilc IP를 통해 접근을 할 수 있지만, Private Network에 있는 자원이라면 바로 접근이 불가합니다. 이때 운영자는 VPC Peering 혹은 Transit Gateway를 사용하여 다른 VPC에 있는 리소스로의 접근이 가능할 것입니다.
하지만 VPC CIDR이 동일하다면 Routing에 문제가 생겨 동일 CIDR을 갖는 타 VPC의 리소스에 접근이 불가합니다.
이런 경우 VPC Private Link를 이용하여 CIDR이 동일한 VPC 간 리소스 접근을 가능하게 할 수 있습니다.
이번 포스트에서는 CIDR이 동일한 VPC의 리소스 접근을 위한 Private Link 구성에 대해 확인해 보겠습니다.
• Private Link 란?
퍼블릭 인터넷에 사용자의 데이터를 노출하지 않고 VPC(Virtual Private Cloud)와 AWS 서비스 및 AWS 파트너가 제공하는 3rd-party 솔루션 간의 프라이빗 한 연결을 제공하는 서비스입니다.
2. 내용
2.1 데모 아키텍처
• 동일 CIDR을 갖고 있는 Demo VPC
o demo1-vpc CIDR : 10.0.0.0/16
o demo2-vpc CIDR : 10.0.0.0/16
• 데모 목표
o demo1-vpc 내 EC2에서 demo2-vpc RDS로 접근
demo를 위해 VPC, EC2, RDS는 사전에 생성
2.2 적용 방안
2.2.1 Network Load Balancer 생성
데모 환경에서 demo2-vpc의 RDS에 접근하기 위해 Endpoint Service를 사용하여야 하며, Endpoint Service에서 RDS와의 연결을 위해 Network Load Balancer를 생성하여야 합니다.
2.2.1.1 Target Group 생성
Network Load Balancer에서 트래픽을 전달할 Target Group을 생성합니다.
데모환경에서는 Target Group의 Target은 RDS Instnace IP 입니다.
• nslookup 명령어로 private ip 확인
• Target Group 생성 (DB Port인 3306으로 생성)
2.2.1.2 Network Load Balancer 생성
이번 데모에서 Network Laod Balancer 생성 시 Listener Port는 3306으로 DB Port와 동일하게 생성하고 이전 스텝에서 생성한 Target Group을 할당합니다.
2.2.1.3 정상 생성 확인
Network Load Balancer가 정상적으로 생성이 되었다면 Target Group에 Target의 Health status가 Healthy로 전환됩니다.
2.2.2 Endpoint Service 생성
이전 스텝에서 생성한 Network Load Balancer를 대상으로 Endpoint Service를 생성합니다.
• 생성 화면
• Endpoint Service 확인
2.2.3 Endpoint 생성 및 Subnet 할당
EC2가 위치하고 있는 demo1-vpc에서 RDS가 위치하고 있는 demo2-vpc에 생성된 Endpoint Service와 연결하기 위하여 Endpoint를 생성합니다.
• Endpoint settings
o Other enepoint services 선택 후, demo2-vpc에 생성하였던 Endpoint Service Name을 넣고 Verify service를 합니다.
• Endpoint Subnet 할당
o Endpoint를 사용하고자 하는 Subnet에 할당합니다.
2.2.4 Endpoint Connections 승인
이전 스텝에서 Endpoint를 생성하고 나면, 기존에 생성하였던 Endpoint Service에서 승인(default 설정)을 해줘야 합니다.
• Accept endpoint connection request
• Accept
2.2.5 DB 접근 확인
이제 모든 연결이 끝났습니다. demo1-vpc에 위치하는 EC2에 접속하여 demo1-vpc에 생성한 Endpoint로 demo2-vpc에 위치한 RDS Database에 접속 가능한지 확인합니다.
• 정상 접근 확인
o 데모 환경에서 DB 접근 시 에러 해결
: 상기와 동일하게 진행 후 DB 접근 시 다음과 같은 Error가 발생할 수 있으며 해결 방안은 다음과 같습니다.
- 해결 방안
• Parameter group 수정 :
• Db커맨드 : mysqladmin flush-hosts -h 10.0.143.230 -P 3306 -uadmin -p
3. 마무리
위와 같이 동일 CIDR을 보유한 VPC 간 AWS 리소스 접근을 위해선 Private Link를 활용하여 보안이 확보된 접근이 가능한 것을 확인할 수 있었습니다.
Private Link는 이 밖에도 VPC와 AWS의 다양한 리소스와의 내부 연결을 통해 비용 절감과 보안성 향상에 도움을 주는 서비스로 아키텍처를 설계할 시 다양한 접근법을 통해 효율적인 아키텍쳐를 설계할 수 있습니다.