주의: Peering을 연결하는 두 VCN은 서로 CIDR이 겹치지 않아야 합니다.
Peering은 일반적으로 두 개의 VCN을 연결하는 단일 Peering 관계이지만, 하나의 VCN(ex. VCN-1)과 여러개의 VCN(ex. VCN-1-1, VCN-1-2, VCN-1-3)을 연결하는 1:n 관계로 구성도 할 수 있습니다. 이 때 VCN-1과 Peering되는 3개의 VCN은 서로 겹치는 CIDR를 가질 수 있습니다.
만일 두 개의 VCN을 관리하는 관리자가 서로 다른 경우에는 수락자는 수락자의 구획에 있는 LPG에 연결할 수 있는 권한을 요청자에게 부여 하는 특정 IAM 정책을 생성해야 합니다. 해당 정책이 없으면 요청자의 연결 요청이 실패합니다. IAM 설정과 관련해서는 다음 링크를 참고합니다.
https://docs.oracle.com/en-us/iaas/Content/Network/Tasks/remoteVCNpeering.htm#Step1
여기서는 한 명의 관리자가 모든 VCN을 관리한다는 전제하에 구성할 예정이므로, 별도의 IAM 정책을 구성하지 않습니다.
실습을 위한 두 개의 VCN을 준비합니다. VCN 마법사를 활용하여 다음과 같이 VCN을 생성합니다.
VCN 생성은 다음 가이드를 참고합니다.
OCI에서 VCN Wizard를 활용하여 빠르게 VCN 생성하기
전용 서브넷 CIDR 블록: 172.16.1.0/24
먼저 각 리전에 DRG를 생성합니다. DRG를 생성하기 위해서는 메뉴 > 네트워킹(Networking) » Customer Connectivity(고객 접속) Dynamic Routing Gateways(동적 경로 지정 게이트웨이)로 이동합니다.
동적 경로 지정 게이트웨이 생성(Create Dynamic Routing Gateway) 버튼을 클릭한 후 다음 이름으로 DRG를 생성합니다.
DRG 이름: DRG-OCI-HUB
생성한 DRG를 VCN에 연결하여야 합니다. 생성된 각 DRG를 클릭한 후 가상 클라우드 네트워크 연결 생성 버튼을 클릭하여 다음과 같이 연결 생성을 합니다.
VCN: oci-hubvcn
Seoul
Tokyo
원격 피어링 접속 연결(Remote Peering Connections Attachments)을 생성합니다. 생성한 각 DRG를 클릭한 후 다음과 같이 RPC 연결을 생성합니다.
RPC 이름: RPC-1
RPC-1 또는 RPC-2의 OCID 값을 복사하여 다른 쪽의 RPC에서 연결 작업을 수행합니다. 여기서는 RPC-2의 OCID 값을 활용하여 RPC-1에서 연결 작업을 수행하도록 합니다.
RPC-2의 OCID값을 얻기 위해서는 먼저 앞서 생성한 RPC-2 연결의 Remote Peering Connection(원격 피어링 접속) 항목의 RPC-2를 선택합니다.
다음과 같이 OCID 값을 복사합니다.
다시 RPC-1 연결로 이동한 후 원격 피어링 접속(Remote Peering Connection) 항목에 있는 RPC-1을 선택합니다.
연결 설정을 선택한 후 지역을 ap-tokyo-1(도쿄), 원격 피어링 접속 OCID를 앞서 복사한 OCID로 입력한 후 연결 설정을 클릭합니다.
연결이 되면 다음과 같이 피어링 상태가 피어링됨으로 변경됩니다.
테스트를 위한 VM 인스턴스는 각 VCN의 공용 서브넷(Public Subnet)을 사용할 것입니다. 따라서 공용 서브넷에 구성된 경로 테이블(Routing Table)을 활용할 것입니다. 먼저 각 리전의 VCN을 선택한 후에 다음과 같이 기본 생성된 경로 테이블을 선택한 후 경로 규칙(Routing Rule)을 추가합니다.
Seoul
Tokyo
보안 목록에서는 테스트를 위해 서로 모든 프로토콜에 대해 모든 포트를 오픈하도록 하겠습니다. 각 VCN의 보안 목록에서 다음과 같이 수신 규칙(Ingress Rules)를 추가합니다.
IP 프로토콜: 모든 프로토콜
Seoul
Tokyo
이제 각 리전의 공용 서브넷에 VM 인스턴스를 하나씩 생성한 후에 연결을 테스트해보도록 하겠습니다. 리눅스 인스턴스 생성 및 접속 방법은 아래 포스팅을 참고합니다.
인스턴스 Private IP: 172.16.0.208
Seoul -> Tokyo
$ ssh -i <private_key_file> opc@130.162.137.87
$ ping 173.16.0.156
PING 173.16.0.156 (173.16.0.156) 56(84) bytes of data.
64 bytes from 173.16.0.156: icmp_seq=1 ttl=62 time=33.2 ms
64 bytes from 173.16.0.156: icmp_seq=2 ttl=62 time=33.2 ms
Tokyo -> Seoul
$ ssh -i <private_key_file> opc@158.101.138.220
$ ping 172.16.0.208
PING 172.16.0.208 (172.16.0.208) 56(84) bytes of data.
64 bytes from 172.16.0.208: icmp_seq=1 ttl=62 time=33.10 ms
64 bytes from 172.16.0.208: icmp_seq=2 ttl=62 time=33.10 ms
이 글은 개인적으로 얻은 지식과 경험을 작성한 글로 내용에 오류가 있을 수 있습니다. 또한 글 속의 의견은 개인적인 의견으로 특정 회사를 대변하지 않습니다.
Donghu Kim INFRASTRUCTURE
oci networking remote_peering