brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Jul 27. 2018

40. 글로벌 내부연동 VPC Peering

AWS로 글로벌 서비스하기

<1>  VPC간  연결  =  피어링하기 

<2>  독일과 싱가포르에 네트워크를 구축하고 내부 연동해보자~


<1>  VPC간  연결  =  피어링하기 


1

현황

글로벌 서비스하려면 각 나라 간 Network Peering이 필요하다.


2

문제점
인터넷 구간으로 데이터 전송시 비용이나 부하가 발생한다.


3

해결방안

나라(리즌)간 내부연동은 VPC Peering으로 해결한다.

AWS 리전 네트워크간 내부 연동하기

각 나라 VPC간 내부 연결하기

각 나라 VPC간  Peering 하기


4

 VPC Peeting 구성도

https://docs.aws.amazon.com/ko_kr/vpc/latest/peering/peering-configurations-full-access.html

5
AWS 글로벌 네트워크간 내부 연동하기


<2>  독일과 싱가포르에 네트워크를 구축하고 내부 연동해보자~


혼자서도 글로벌 네트워크를 구축할수 있는 시대가 되었다 ^^

유럽에서 인터넷 서비스하려면 독일에 서버를 구축한다.

일반적으로 중국쪽은 싱가포르쪽에 구축하여 운영한다.

여기서는 독일에 서버 구축하고, 싱가포르에 서버 구축하고, 내부연동 해보겠다


1

각 나라에 네트워크(VPC)를 구성한다.

네트워크를 구축하고, 서브네팅하고 ,게이트웨이 설정, 라우팅 설정한다.

ping테스트용으로 서버 1대 생성한다.

방화벽은 ssh,ping(icmp) 허용하는 구성으로 한다.


2

독일과 싱가포르에  네트워크를 구축한다.

독일은 10.100.100.0 /22 (C-class 4개) - Frank1

싱가포르는 192.168.0.0 /22 (C-class 4개) 




3

나중에 IP가 부족하지 않게 C-Class 4개 네트워크로 생성한다.


참고로 사설 블럭은 아래와 같다.

10.0.0.0~10.255.255.255.255  (10.0.0.0/8)

172.16.0.0~172.31.255.255 (172.16.0.0/12)

192.168.0.0 ~192.168.255.255)


4
독일 네트워크 서브네팅 한다.

10.100.100.0/24

Frank1-0.100.100.0-24


VPC ID는 알아두자. 연동(피어링) 할때 필요하다.

 vpc-6a4c6901




5
인터넷 게이트웨이 설정한다.
Frank1-GW



6
디폴트 라우팅 설정한다.
0.0.0.0/0  Frank1-GW


7

ping테스트옹 서버 1대 생성한다.

Auto-assign Public IP를 Enable해서 생성한다.

키는 frank1으로 한다.

생성 완료

ip확인 10.100.100.115  

public ip 18.185.211.152



8

방화벽에서 ping허용한다.(icmp허용)



9

집에서 독일은 300ms
18.185.211.152의 응답: 바이트=32 시간=302ms TTL=42
18.185.211.152의 응답: 바이트=32 시간=315ms TTL=42
18.185.211.152의 응답: 바이트=32 시간=302ms TTL=42
18.185.211.152의 응답: 바이트=32 시간=302ms TTL=42


10

호스팅업체 서버에서 288ms
64 bytes from 18.185.211.152: icmp_seq=1 ttl=36 time=288 ms
64 bytes from 18.185.211.152: icmp_seq=2 ttl=36 time=288 ms
64 bytes from 18.185.211.152: icmp_seq=3 ttl=36 time=288 ms
64 bytes from 18.185.211.152: icmp_seq=4 ttl=36 time=288 ms
64 bytes from 18.185.211.152: icmp_seq=5 ttl=36 time=288 ms
64 bytes from 18.185.211.152: icmp_seq=6 ttl=36 time=288 ms
64 bytes from 18.185.211.152: icmp_seq=7 ttl=36 time=288 ms
64 bytes from 18.185.211.152: icmp_seq=8 ttl=36 time=289 ms



11

싱가포르도 192.168.0.0 /22 (C-class 4개)로 네트워크 구축한다.
    


그 : sing1-vpc
싱가포르 VPC ID : vpc-42540a25

VPC ID는 알아두자. 

연동(피어링) 할때 필요하다.



12

서브네팅

sing1-sub1

192.168.0.0/24


13

인터넷 게이트웨이 설정한다.

14
디폴트 라우팅  0.0.0.0/0 을  설정한다.


15

서버생성

key pair는 sing1

방화벽 ssh, icmp 허용


16
싱가포르 서버정보 확인

192.168.0.159

52.221.242.231



17

싱가포르까지는 100ms정도 구나~


집에서 싱가포르까지 92ms

52.221.242.231의 응답: 바이트=32 시간=92ms TTL=233
52.221.242.231의 응답: 바이트=32 시간=92ms TTL=233
52.221.242.231의 응답: 바이트=32 시간=92ms TTL=233
52.221.242.231의 응답: 바이트=32 시간=94ms TTL=233


외부 호스팅서버에서는 82 ms

64 bytes from 52.221.242.231: icmp_seq=2 ttl=235 time=82.4 ms
64 bytes from 52.221.242.231: icmp_seq=3 ttl=235 time=82.4 ms
64 bytes from 52.221.242.231: icmp_seq=4 ttl=235 time=82.4 ms
64 bytes from 52.221.242.231: icmp_seq=5 ttl=235 time=82.4 ms



18

독일에서 싱가포르까지는 얼마나 걸리나? 165ms


[ec2-user@ip-10-100-100-115 ~]$ ping 52.221.242.231

PING 52.221.242.231 (52.221.242.231) 56(84) bytes of data.
64 bytes from 52.221.242.231: icmp_seq=1 ttl=231 time=165 ms
64 bytes from 52.221.242.231: icmp_seq=2 ttl=231 time=165 ms
64 bytes from 52.221.242.231: icmp_seq=3 ttl=231 time=165 ms
64 bytes from 52.221.242.231: icmp_seq=4 ttl=231 time=165 ms
64 bytes from 52.221.242.231: icmp_seq=5 ttl=231 time=165 ms
64 bytes from 52.221.242.231: icmp_seq=6 ttl=231 time=165 ms
64 bytes from 52.221.242.231: icmp_seq=7 ttl=231 time=165 ms


내부 통신은 안되는구나. 그렇지.

[ec2-user@ip-10-100-100-115 ~]$ ping 192.168.0.159
PING 192.168.0.159 (192.168.0.159) 56(84) bytes of data.



19

내부통신 어떻게 가나 보자~

유럽에서 다른데로 못가지요~


[root@ip-10-100-100-115 ~]# traceroute 192.168.0.159

traceroute to 192.168.0.159 (192.168.0.159), 30 hops max, 60 byte packets
1 ec2-54-93-0-70.eu-central-1.compute.amazonaws.com (54.93.0.70) 19.226 ms ec2-54-93-0-66.eu-central-1.compute.amazonaws.com (54.93.0.66) 21.809 ms ec2-54-93-0-68.eu-central-1.compute.amazonaws.com (54.93.0.68) 26.063 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 * * *
9 * * *
10 * * *
11 * * *




20

두 나라간 내부연동을 한다


순서
1) 독일에서 피어링 요청을 한다.

2) 싱가포르에서 피어링 요청을 승인한다.

3) 독일에서 싱가포르로 라우팅 잡는다.

    싱가포로에서 독일로 라우팅을 잡는다.
4) 잘 되는지 ping으로 확인한다.


1) 독일에서 피어링 요청을 한다.

[VPC] - [Peering Connections]


싱가포르 VPC ID : vpc-42540a25

둘간에 피어링 pcx-02xxxx




다른 Accout와도 연결이 가능하다.

VPC ID를 넣는다.





2) 싱가포르에서 피어링 요청을 승인한다.



참고

같은 AWS 계정이라면, Peering Connections >생성한 VPC 피어링 연결을 선택하고 [Actions], [Accept Request]를 선택합니다




3) 싱가포르에서 독일로 라우팅을 잡는다.

VPC > Route Tables > Routes 탭 >  Edit해서  목적지인 독일 네트워크에 대해 PCX(피어링게이트웨이)로 잡는다.

10.100.100.0/22 쪽으로 pcx-02xxxxx 추가한다.





독일에서 싱가포르로 라우팅 잡는다.




21

사설IP간에 Ping이 잘 되는지 확인한다.

안되던 ping 잘된다 ^^


[root@ip-10-100-100-115 ~]# ping 192.168.0.159
PING 192.168.0.159 (192.168.0.159) 56(84) bytes of data.
64 bytes from 192.168.0.159: icmp_seq=39 ttl=255 time=162 ms
64 bytes from 192.168.0.159: icmp_seq=40 ttl=255 time=162 ms
64 bytes from 192.168.0.159: icmp_seq=41 ttl=255 time=162 ms
64 bytes from 192.168.0.159: icmp_seq=42 ttl=255 time=162 ms


22

트레이스는 여전히 제공하지 않나보다.

[root@ip-10-100-100-115 ~]# traceroute 192.168.0.159

traceroute to 192.168.0.159 (192.168.0.159), 30 hops max, 60 byte packets

 1  * * *

 2  * * *

 3  * * *

 4  * * *

 5  * * *

 6  * * *

 7  * * *

 8  * * *

 9  * * *

10  * * *

11  * * *

12  * * *

13  * * *

14  * * *


23

참고

리전간 VPC Peering은 2018년 1월 부터 지원 됨.

https://aws.amazon.com/ko/blogs/korea/new-almost-inter-region-vpc-peering/



24

비용

VPC 피어링 연결 설정 또는 실행에 대한 비용은 없습니다. 

피어링 연결을 통해 전송 된 데이터는 관련된 가용 영역에 관계없이 보내고받는 데

 GB 당 $ 0.01로 청구됩니다.



25

트랫짓 게이트웨이로  개선 하세요

2020년 현재 트랫짓 게이트웨이로 좀 더 심플하게 VPC간 연동을 할수 있다.



26

지원되지 않는 피어링 구조

https://docs.aws.amazon.com/ko_kr/vpc/latest/peering/invalid-peering-configurations.html



감사합니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari