Last Updated on 2월 9, 2024 by Jade(정현호)
Contents
Key Concepts and Terminology
먼저 Oracle Cloud의 Key Concepts and Terminology 를 살펴보면 여러가지 용어와 내용이 있습니다
이중에 Hierarchy 구조의 개념으로 몇 가지 설명 드리면 간략하게
Tenancy(테넌시) - Region - Compartment(컴파트먼트) - OCI Resource
의 순으로 대략적으로 설명할 수 있을 것 같습니다.
Tenancy 는 클라우드 계정을 생성하면 tenancy가 생성이 되게 되고 쉽게 계정 과 같은 의미로 생각 하시면 됩니다.
Region 은 데이터 센터가 운영되는 지리적인 영역을 의미합니다.
Compartment는 자원들을 구성/관리 그리고 보안적 격리, 엑세스 제어 등의 목적으로 하는 논리적인 개념의 구조 라고 생각하면 됩니다.
Tenancy가 생성되면 최초로 Root Compartment 하나가 생성되며 바로 VCN과 Compute instance 그리고 다른 OCI Resources을 생성하게 되면 이 Root Compartment(한글로 구획)에 속해지게 됩니다
또는 처음에 구획(Compartment) 을 생성 후 특정 구획에 VCN, Compute 리소스 등을 생성하여 사용할 수 있습니다.
OCI Resource 는 VCN ,Subnet 과 같은 네트워크 리소스, Compute Instance 등이 있습니다
대략적인 그림으로 보면 이렇게 표현될 수 있을 것 같습니다 이미지는 쉽게 이해할 수 있는 간단한 이미지로 선택하였습니다.
* 상세한 내용보다 간략하게 설명에 중점을 두었습니다.
VCN 간의 피어링
Oracle Cloud(오라클 클라우드) 에서 Peering 은 두 VCN(Virtual Cloud Network) 간의 연결을 의미합니다.
리전 내에 Compartment(root)/구획이 있고 별도로 생성하였다면 하위의 구획이 있을 것입니다.
위에서 설명한 구획 별로 리소스의 생성이나 관리를 하는 구조이며 구획 별 생성된 VCN을 연결하거나 같은 리전내 다른 Tenancy와 연결, 혹은 다른 리전의 VCN 과의 연결하여 private ip 간의 통신을 연결하는 것을 peering 이라고 할 수 있습니다.
peerig은 2가지로 분류할 수 있습니다.
Local VCN Peering
- 같은 리전내에 VCN을 연결할 경우 / tenancy는 같거나 달라도 됩니다
- 아래 이미지는 같은 Tenancy 내에 다른 구획 간의 VCN의 연결을 의미합니다.
* 같은 리전내에 다른 Tenancy 간의 연결
Remote VCN Peering
- 다른 리전과의 VCN을 연결
중요한 점은 2개의 peering 모두 내부 IP대역 CIDR 이 달라야 합니다(겹치면 안됨)
이번 포스팅은 같은 리전 내에 다른 Tenancy 을 연결 상황인 Local VCN Peering 을 설명 드리려고 합니다.
Local VCN Peering 구성 환경
먼저 가장 중요한 전제조건은 연결하려는 VCN의 내부 IP 대역대가 달라야 합니다
VCN 그리고 VCN과 관련된 서브넷 등이 Root Compartment 에 있어서는 안 됩니다.
별도의 서브 Compartment 이어야 합니다(Compartment는 변경할 수 있음)
설정하는 환경은 아래와 같은 환경에서 진행하려고 합니다.
Region : Seoul
Tenancy 1 : A1
Compartment : A1-compart
CIDR Block : 10.0.0.0/16
Region : Seoul
Tenancy 2 : A2
Compartment: A2-compart
CIDR Block : 10.2.0.0/16
* Tenancy 와 Compartment 명은 예시입니다
* Root Compartment 가 아닌 별도로 생성한 구획에 리소스가 있는 상황입니다.
* 구성이 완료된 상태에서 글 작성이라 스크린샷에는 내용이 있을 수도 있습니다.
Local Peer Gateway 생성
연결할 Tenancy 혹은 department 양쪽 모두에 생성합니다.
네트워킹 -> 가상 클라우드 네트워크 로 이동합니다.
먼저 아래 Compartment(구획) 에서 별도로 생성한 구획을 선택합니다
그런 다음 생성한 VCN 을 선택합니다. (VCN 이름은 다를 수 있습니다.)
로컬 피어링 게이트웨이를 선택합니다.
로컬 피어링 게이트웨이 생성합니다.
로컬 피어링 게이트웨이에서 사용할 이름을 입력 후 하단의 생성을 클릭합니다.
이름은 여기서는 예시로 LGPn(1,2,3,4~n) 으로 사용하였습니다.
생성 후 상태는 "신규 - Not connected to a peer" 상태입니다.
* 이 작업은 연결할 Tenancy 혹은 department 양쪽 모두에서 동일하게 생성 진행해야 합니다.
정책 설정
Tenany-Compartment 간의 연결에 있어서 Requestor와 Acceptor 정책을 설정해야 합니다.
Acceptor 는 Tenancy 1 : A1 으로 할 것 입니다.
Tenancy 1 : A1
Compartment : A1-compart
Requestor 는 Tenancy 2 : A2 으로 할 것 입니다.
Tenancy 2 : A2
Compartment : A2-compart
Requestor Policy
먼저 Requestor 정책구문을 생성하겠습니다.
Tenancy 1 에서 계정 아이콘 - > 테넌시 -> OCID 복사 를 합니다.
예를 들어 OCID 가 "ocid.Tenancy-1-OCID-1234" 일 경우
구문작성 ==> Define tenancy Requestor as ocid.Tenancy-1-OCID-1234
Tenancy 1 에서 ID -> 그룹 으로 이동합니다.
Administrators -> 점 3개 클릭
Administrators 의 OCID를 복사합니다
예를 들어 OCID "ocid.Tenancy-1-group.1234"
구문작성 ==> Define group Administrators as ocid.Tenancy-1-group.1234
추가로 Requestor 의 Department 로 구문을 작성합니다.
Tenancy 2 : A2
Compartment : A2-compart
Admit group Administrators of tenancy Requestor to manage local-peering-to in compartment A2-compart
Admit group Administrators of tenancy Requestor to associate local-peering-gateways in tenancy Requestor with local-peering-gateways in compartment A2-compart
정리하면 Requestor 에서의 구문은 아래와 같이 됩니다.
Define tenancy Requestor as ocid.Tenancy-1-OCID-1234
Define group Administrators as ocid.Tenancy-1-group.1234
Admit group Administrators of tenancy Requestor to manage local-peering-to in compartment A2-compart
Admit group Administrators of tenancy Requestor to associate local-peering-gateways in tenancy Requestor with local-peering-gateways in compartment A2-compart
Requestor 인 Tenancy 2 의 ID -> 정책 으로 이동합니다.
정책 -> 구획에서 Root Compartment 를 선택 -> 정책 생성을 진행합니다.
정책이름 입력 후 -> 사용자정의(고급) 을 클릭합니다.
정책 작성기에 위에서 작성한 정책을 입력 후, 아래 생성을 클릭합니다.
Acceptor Policy
그 다음 Acceptor 정책구문을 생성하겠습니다.
Tenancy 2 에서 계정 아이콘 - > 테넌시 -> OCID 복사 를 합니다.
예를 들어 OCID 가 "ocid.Tenancy-2-OCID-1234" 일 경우
구문작성 ==> Define tenancy Acceptor as ocid.Tenancy-2-OCID-1234
추가 정책은 아래와 같이 작성됩니다.
A1-compart 는 첫번째 Tenancy의 Compartment 입니다.
Allow group Administrators to manage local-peering-from in compartment A1-compart
Endorse group Administrators to manage local-peering-to in tenancy Acceptor
Endorse group Administrators to associate local-peering-gateways in compartment A1-compart with local-peering-gateways in tenancy Acceptor
-> 한줄로 입력
정리하면 아래와 같습니다.
Define tenancy Acceptor as ocid.Tenancy-2-OCID-1234
Allow group Administrators to manage local-peering-from in compartment A1-compart
Endorse group Administrators to manage local-peering-to in tenancy Acceptor
Endorse group Administrators to associate local-peering-gateways in compartment A1-compart with local-peering-gateways in tenancy Acceptor
-> 한줄로 입력
Acceptor 인 Tenancy 1 의 ID -> 정책 으로 이동합니다.
Acceptor 인 Tenancy 1 의 정책 -> 구획에서 Root Compartment 를 선택 -> 정책 생성을 진행합니다.
정책이름 입력 후 -> 사용자정의(고급) 을 클릭합니다.
정책 작성기에 위에서 작성한 정책을 입력 후, 아래 생성을 클릭합니다.
경로 추가 및 LP Gateway 추가 설정
환경을 다시 한번 더 살펴보면 아래와 같습니다.
Region : Seoul
Tenancy 1 : A1
Compartment : A1-compart
CIDR Block : 10.0.0.0/16
Region : Seoul
Tenancy 2 : A2
Compartment: A2-compart
CIDR Block : 10.2.0.0/16
네트워킹 -> 가상 클라우드 네트워크 로 이동합니다.
별도로 생성한 구획을 선택합니다.
VCN을 선택합니다.
경로 테이블 로 이동합니다
Default Route Table 로 이동 합니다.
경로 규칙 추가 -> 로컬 피어링 게이트웨이 를 선택 합니다
Requestor - 2번 Tenancy 에서 설정은 아래와 같이 1번의 CIDR Block을 입력해줍니다.
Acceptor - 1번 Tenancy 에서는 2번 서버의 CIDR Block을 입력합니다.
Requestor - 2번 Tenancy 에서 로컬 피어링 게이트웨이 로 이동합니다
Requestor - 2번 Tenancy 의 정보에서 점 3개를 클릭합니다
Requestor - 2번 Tenancy 에서 Local-Peer Gateway의 OCID 값을 복사합니다.
이번에는 Acceptor - 1번 Tenancy 에서 동일하게 로컬 피어링 게이트웨이 에서 "피어링 접속 설정" 을 클릭합니다.
"로컬 피어링 게이트웨이 OCID 입력" 을 선택 후 복사한 2번-Requestor OCID 를 입력하여 줍니다.
위에서 접속 설정을 완료하면 처음에는 "보류 중" 으로 상태가 확인됩니다
시간이 조금 지나면(수분 이내) 양쪽의 local-peering gateway 정보에 "피어링됨" 으로 확인됩니다.
위에서 수행한 Local-Peering Gateway OCID 값 입력은 Acceptor 쪽에서만 하면 Requestor는 자동적으로 연결됩니다.
즉 한곳에서 한 번만 수행 하면 됩니다.
이번에는 서브넷 -> 공용 서브넷으로 이동합니다.
Security list 에서 사용중인 보안 목록을 선택합니다.
수신 규칙 추가 를 선택합니다.
수신 규칙은 양쪽에서 서로의 CIDR Block 을 입력해주면 됩니다.
2번 Tenancy 에서 1번 Tenancy 정보를 입력합니다.
1번 Tenancy 에서 2번 Tenancy 정보를 입력합니다.
여기까지 완료되었다면 설정이 모두 완료되었습니다.
마지막으로 ping 등으로 통신이 되는지를 체크를 해봅니다.
$ Tenancy 1 - ping 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.297 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=0.310 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.327 ms
$ Tenancy 2 - ping 10.2.0.2
PING 10.2.0.2 (10.2.0.2) 56(84) bytes of data.
64 bytes from 10.2.0.2: icmp_seq=1 ttl=64 time=38.3 ms
64 bytes from 10.2.0.2: icmp_seq=2 ttl=64 time=0.248 ms
64 bytes from 10.2.0.2: icmp_seq=3 ttl=64 time=0.291 ms
64 bytes from 10.2.0.2: icmp_seq=4 ttl=64 time=0.331 ms
Help & Reference
이 글은 한국오라클 김범준 엔지니어의 도움으로 이전에 구성하였을 때의 이력과 기록을 기반으로 작성되었습니다.
Cloud Engineer / Advanced Support Engineer
KR ACS Cloud Lead Engineer
Oracle Cloud Infrastructure
Oracle Database
Reference Link
• https://docs.cloud.oracle.com/localVCNpeering.htm
• https://docs.cloud.oracle.com/oci_security_KR.pdf
연관된 글
오라클 클라우드 - 프리티어 무료 사용 - 계정 생성 및 초기 생성
Principal DBA(MySQL, AWS Aurora, Oracle)
핀테크 서비스인 핀다에서 데이터베이스를 운영하고 있어요(at finda.co.kr)
Previous - 당근마켓, 위메프, Oracle Korea ACS / Fedora Kor UserGroup 운영중
Database 외에도 NoSQL , Linux , Python, Cloud, Http/PHP CGI 등에도 관심이 있습니다
purityboy83@gmail.com / admin@hoing.io