ㅍㅍㅋㄷ

AWS VPC를 디자인해보자(4) - VPC Peering을 활용한 Multi VPC 사용하기 본문

IT/AWS

AWS VPC를 디자인해보자(4) - VPC Peering을 활용한 Multi VPC 사용하기

클쏭 2016. 6. 20. 16:44

AWS VPC를 디자인 해보자(4) - VPC Peering을 활용한 Multi VPC 사용하기






 VPC(Virtual Private Cloud) 서비스는 AWS 사용자가 직접 가상 네트워크 환경을 구성하는 서비스이다. 이 서비스를 이용하면 Public network 환경과 Private network 환경을 사용자가 원하는대로 디자인하고 구축할 수 있게 된다.

 또한 다양한 부가 기능을 통해 VPC 환경 내 네트워크 흐름을 제어할 수 있기 때문에 나만의 가상 데이터 센터를 구축하여 사용할 수 있게 된다.


 이번 포스팅에는 여러 VPC를 연동해서 사용할 수 있는 VPC Peering에 대해서 알아보자. 





VPC Peering



 VPC는 사용자마다 다수의 VPC 환경을 구성해서 사용 가능하다. 그러므로 적당한 기준으로 VPC 를 분리해서 운영하는게 관리상 장점이 될 수 있다.


하지만, 이런 경우를 생각해 보자. 

 10.10.0.0/16 대역을 사용하는 VPC A 와 10.30.0.0/16 대역을 사용하는 VPC B 가 있다고 가정해보자.

 만약, VPC A 에 배포된 instance 와 VPC B 에 배포된 instance가 서로 통신을 하고 싶다면 어떻게 구성하면 될까. 



 



 실제 데이터센터의 경우를 비추어 생각해보면, 두 데이터 센터를 연결하려면 전용선을 이용하거나 VPN 같은 장비를 이용하여 연결 구간을 외부에 노출시키지 않고 internal 하게 연결 시켜야 한다. 하지만 이런 방법은 많은 도입비용과 관리에 대한 부담이 앞서게 된다. 


하지만 AWS의 경우, 몇가지 상황이 충족한다면 VPC Peering 이라는 기능을 이용하여 손쉽게 두 VPC를 연결 가능하다. Gateway 나 VPN 연결 방식이 아닌 AWS의 internal level 에서 구현한 연결이기 때문에 보안이나 대역폭에 대한 고민, SPOF 에 대한 걱정 없이 바로 연결이 가능하다. 


 아래는 VPC Peering 을 위한 기본 전제 조건이다. 




  • 다른 Region에 있는 VPC 간에는 Peering 연결이 불가하다.
  • 두 VPC 의 CIDR 블럭이 중복되는 경우 연결이 불가하다. 
  • VPC 당 Peering 은 최대 50개 가능하다. 
  • VPC Peering 간 MTU는 1,500 byte 이다.


 위 제약 조건을 제외 하고는 VPC 간 Peering 연결이 가능하며, 다른 계정에 있는 VPC도 연결이 가능하다. 


 

 그렇다면 직접 VPC Peering 설정해보자.

 테스트 해볼 VPC 구성은 아래와 같다. 






  • Peering 으로 연결한 VPC 정보는 아래와 같다.
    1. song-vpc-01 : 10.10.0.0/16 
    2. song-vpc-02 : 10.30.0.0/16
  • song-vpc-01 에는 총 4개 subnet이 있으며 이 중에 두개 subnet은 Internet Gateway에 연결된 public subnet 이며, 나머지는 private subnet 이다. 
  • song-vpc-02 에는 총 2개의 subnet이 있으며 모두 Internet Gateway 에 연결된 public subnet 이다. 



먼저 Peering 할 VPC 두개를 생성한 후, Subnet 과 통신을 위한 Internet Gateway, Route table을 설정한다.  

VPC 구성을 위한 설명은 이번 포스팅과 관계가 적으므로 생략.


VPC 구성이 완료 되었다면, 이제 Peering 설정을 해보자.
VPC의 메뉴중 "Peering Connections" 를 선택 후 Create Peering Connection 클릭.

 


  1. Local VPC to peer 는 연결할 song-vpc-01 의 ID 를 작성한다. 
  2. 만약 같은 계정일 때 My account 선택, 만약 다른 계정일 때는 Another account 를 선택 한 후 account ID 를 넣는다. 
  3. 마지막 VPC 는 연결할 대상 VPC song-vpc-02 의 ID를 작성한다. 

VPC Peering 연결은 요청과 요청에 대한 응답 구조이다.  
여기서는 song-vpc-01 이 요청 / song-vpc-02 가 요청에 응답하는 형상이다.

VPC Peering 요청과 응답에 대한 상태 주기는 아래와 같다. 자세한 설명은


  [ 출처 : http://docs.amazon.com ]






Peering 을 요청하면 아래와 같이 상대 VPC 에서 응답 요청을 볼 수 있다. 요청에 대한 응답을 기다리는 상태는 pending-acceptance 이다.  


Peering 요청을 수락해보자. Action 버튼에서 Accept Request 를 선택하면 된다. 
요청을 수락하면 아래와 같이 status 가 active 로 바뀌면 연결이 완료된 것이다. 


연결이 완료 되었다고 바로 통신이 되는 것은 아니다. 

서로간 통신이 가능하도록 Route table을 설정해 줘야 한다. 

먼저 song-vpc-01(10.10.0.0/16) 에서 song-vpc-02(10.30.0.0/16) 으로 통신할 수 있도록 song-vpc-01에 적용된 route table 규칙을 아래와 같이 추가해준다. 


먼저 song-vpc-01 에 있는 public subnet / private subnet 의 route table 에 아래와 같이 10.30.0.0/16 대역 패킷에 대한 경로를 설정해 준다. 
Target 은 위에서 생성한 vpc-peer-01로 지정 한다. 

[ 캡쳐는 귀찮으니 public route table 만.. private 용 route table 도 똑같이 적용해준다. ]



song-vpc-02 의 route table 의 경우는 반대로 10.10.0.0/16 대역에 대한 경로를 설정해 준다. 

Target 은 마찬가지로 vpc-peer-01 로 지정한다. 




* VPC Peering 을 통한 통신도 ACL 과 Security Group 을 동일하게 적용 받게 된다. 

그러므로 만약 Network ACL 과 Security Group 도 설정되어 있다면, 반드시 해당 대역에 대해 허용 규칙을 넣어주도록 한다. 



이제 해당 대역에 배포된 instance 가 서로간 통신이 잘 되는지 확인해 보자. 

아래는 10.10.101.0 대역에 배포된 song-vpc-01 에 배포된 private subnet에 있는 instance(10.10.101.205) 에서

song-vpc-02에 배포된 instance의 private IP 10.30.10.151 로 ping 테스트를 해본 결과이다.



[root@ip-10-10-101-205 ec2-user]# ping 10.30.10.151

PING 10.30.10.151 (10.30.10.151) 56(84) bytes of data.

64 bytes from 10.30.10.151: icmp_seq=1 ttl=255 time=0.627 ms

64 bytes from 10.30.10.151: icmp_seq=2 ttl=255 time=0.679 ms

...


정상적으로 통신 된 것을 볼 수 있다. 






VPC Peering 의 경우 같은 Region에 있는 VPC 사이에만 설정이 가능하다.

만약 다른 Region 에 배포되어 있는 VPC 을 연동하려면 어떻게 하면 될까. 


이 부분은 다음 포스팅에서 다뤄 볼 예정이다.



 


[ 참고 ] 


  • http://docs.aws.amazon.com/ko_kr/AmazonVPC/latest/PeeringGuide/vpc-peering-overview.html



Comments