주:
- 이 자습서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 자격 증명, 테넌시 및 구획에 예제 값을 사용합니다. 실습을 완료했으면 이러한 값을 자신의 클라우드 환경과 관련된 값으로 대체하십시오.
OCI 이벤트 서비스 규칙을 사용하여 OCI 함수를 통해 프라이빗 영역에 대한 영역 간 DNS 레코드 업데이트
소개
이 사용지침서에서는 새 컴퓨트 인스턴스가 생성될 때 또는 Oracle Cloud Infrastructure Full Stack Disaster Recovery(OCI Full Stack DR) 계획에서 스위치오버 시나리오가 진행되는 동안 두 지역의 프라이빗 영역에 있는 컴퓨트 인스턴스에 대한 DNS(Domain Name System) 레코드를 자동으로 업데이트하는 방법을 알아봅니다. 이 사용지침서에서는 두 가지 특정 OCI 서비스를 다룹니다.
-
OCI 이벤트 서비스 규칙: OCI 환경 내의 변경 사항 및 이벤트에 대한 자동 응답을 트리거하는 서비스입니다.
-
OCI Functions: 인프라를 관리하지 않고도 이벤트에 대응하여 코드를 실행할 수 있는 서버리스 컴퓨팅 서비스입니다.
이 사용 사례는 처음에 OCI Full Stack DR switchover 계획 중에 사용하도록 구상되었습니다. 여기서 인스턴스는 리전 간에 이동됩니다. 기본적으로 DR(재해 복구) 전환 프로세스에는 새 영역에서 새 인스턴스를 생성한 다음 이전 영역에서 인스턴스를 종료하는 과정이 포함됩니다. 이 사용지침서에서는 이 시나리오를 기반으로 실행 - 인스턴스 종료 이벤트 유형을 중점적으로 설명합니다. 이 이벤트 유형은 OCI 함수를 트리거하여 두 지역의 프라이빗 영역에 대한 DNS 레코드를 업데이트합니다.
이 솔루션은 기본 OCI DNS 프라이빗 영역 자동화 역할을 할 수도 있습니다. 선택한 컴파트먼트에 생성된 각 새 인스턴스 또는 대상 인스턴스를 식별하기 위해 지정한 다른 필터에 대해 DNS 레코드를 생성합니다. 자세한 내용은 이벤트를 생성하는 서비스를 참조하십시오.
고급 아키텍처
참고:
이 튜토리얼은 교육 및 학습 목적으로만 설계되었습니다. 학습자가 통제 된 환경에서 실제 경험을 실험하고 얻을 수있는 환경을 제공합니다. 이 자습서에 사용된 보안 구성 및 관행은 실제 시나리오에 적합하지 않을 수 있습니다.
실제 응용 프로그램에 대한 보안 고려 사항은 훨씬 더 복잡하고 동적입니다. 따라서 운용 환경에서 여기에 설명된 기술 또는 구성을 구현하기 전에 포괄적인 보안 평가 및 검토를 수행해야 합니다. 이 검토에는 액세스 제어, 암호화, 모니터링 및 규정 준수를 포함한 보안의 모든 측면이 포함되어 시스템이 조직의 보안 정책 및 표준에 부합하도록 해야 합니다.
보안은 랩 환경에서 실제 배포 환경으로 전환할 때 항상 최우선 순위가 되어야 합니다.
목표
-
제공된 OCI 함수를 트리거할 OCI 이벤트 서비스 규칙을 설정합니다. 이 함수는 선택한 컴파트먼트에 새 인스턴스가 생성될 때마다 두 영역의 DNS 프라이빗 영역 레코드를 업데이트합니다.
참고: 이 자습서에서는 OCI Full Stack DR 설정에 대해 다루지 않습니다. 대신 두 개 이상의 지역에서 DNS 프라이빗 영역을 자동화하는 데 중점을 둡니다. 자세한 내용은 Oracle WebLogic Server 도메인과 함께 OCI Full Stack Disaster Recovery Service 사용을 참조하십시오.
필요 조건
-
OCI Environment
-
관리자 권한이 있는 OCI 계정입니다.
-
리소스를 생성할 컴파트먼트입니다.
주: 컴파트먼트 이름 및 컴파트먼트 ID를 기록해 두십시오.
-
새로 실행된 인스턴스가 필요할 수 있는 각 지역에 DNS 레코드를 보유할 OCI DNS 프라이빗 영역 OCID(Oracle Cloud Identifier) 목록입니다. 이 사용지침서에는 두 개의 DNS 프라이빗 영역이 있습니다. 하나는 GRU 영역용이고 다른 하나는 VCP 영역용입니다.
-
-
로컬 시스템 환경
-
로컬 Oracle Cloud Infrastructure 명령행 인터페이스(OCI CLI)를 설정합니다. 자세한 내용은 OCI CLI 설치를 참고하세요.
-
로컬 Docker에서 이미지를 빌드할 수 있습니다. Oracle Linux를 사용 중인 경우 Docker: Install Docker on Oracle Linux 8 (OL8)을 참조하십시오.
-
로컬 Fn 프로젝트 CLI를 통해 기능을 OCI에 배포할 수 있습니다. 자세한 내용은 Installing the Fn Project CLI를 참조하십시오.
-
작업 1: 동적 그룹 설정
도메인으로 이동하여 동적 그룹을 누르고 다음 그룹을 생성합니다.
동적 그룹 이름: MyFunctions
.
ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}
태스크 2: 정책 생성
정책으로 이동하여 다음 정책을 생성합니다.
정책 이름: FunctionsPolicies
.
Allow dynamic-group MyFunctions to read repos in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use instance-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to read app-catalog-listing in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use volume-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use virtual-network-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to manage dns-records in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use dns-zones in compartment YOUR-COMPARTMENT-NAME
작업 3: OCI 컨테이너 레지스트리 생성
-
개발자 서비스로 이동하여 컨테이너 레지스트리를 누르고 Fn 이미지에 대한 프라이빗 저장소를 생성합니다.
저장소 이름:
lab/fnpy-event-dns-update
. -
저장소를 확인하고 네임스페이스를 기록해 둡니다.
-
OCI CLI 및 Docker가 설치된 터미널 셸을 열고 레지스트리에 로그인합니다. 해당 지역의 올바른 URL을 확인하십시오. 이 자습서에서는 레지스트리 URL이
gru.ocir.io
인 브라질 동부(상파울루) 영역을 사용합니다.docker login gru.ocir.io Username: <your container namespace>/youruser Password: YOUR_AUTH_TOKEN_CREATED_EARLIER
작업 4: 프라이빗 영역에서 DNS를 업데이트하기 위한 Python OCI 함수 생성
-
OCI 콘솔로 이동하여 개발자 서비스를 누릅니다. 함수에서 애플리케이션 및 애플리케이션 생성을 누릅니다.
-
영향을 받는 OCI DNS 프라이빗 영역에 대한 구성을 생성합니다.
주: 이 구성 변수는 업데이트할 프라이빗 영역 OCID를 지정합니다. 여러 OCID를 콤마로 구분하여 나열할 수 있습니다.
암호 이름 값 TARGET_ZONES_OCID PRIVATE ZONES OCIDs list를 쉼표로 구분하여 설정합니다. 이 사용지침서에서는 GRU 영역용과 VCP 영역용의 두 개인 영역을 설정합니다.
샘플:
ocid1.dns-zone.oc1.sa-saopaulo-1.xxxx
ocid1.dns-zone.oc1.sa-vinhedo-1.xxx
-
Docker, OCI CLI, Fn Project CLI가 설치된 터미널 셸로 이동하고 다음 명령을 실행하여 기능을 초기화합니다.
주: 작업을 수행한 경우 Docker 로그인 명령이 현재 이미 실행된 상태이고, 그렇지 않은 경우 작업 3.3에서 Docker 로그인을 계속하십시오.
mkdir lab cd lab fn create context oci-cloud --provider oracle fn use context oci-cloud fn update context oracle.compartment-id PASTE_YOUR_COMPARTMENT_OCID fn update context api-url https://functions.sa-saopaulo-1.oraclecloud.com fn update context registry gru.ocir.io/PASTE_YOUR_REGISTRY_NAMESPACE/lab fn init --runtime python fnpy-event-dns-update cd fnpy-event-dns-update ls -lrt
주: 이 자습서에서는 브라질 동부(상파울로) 영역을 사용하고 있습니다. 다른 영역을 사용 중인 경우
api-url
및registry
위치를 변경해야 합니다.init
명령은func.py
에 hello world 함수를 생성합니다. 이 코드를 덮어씁니다. -
여기에서 Python 함수 샘플 코드를 가져옵니다. fnpy-event-dns-update.zip, 압축을 풀고
init
명령 중에 파일을 덮어씁니다.-
zip 파일을
fn init
명령을 실행한 lab 디렉토리로 복사하고 디렉토리에서 파일을 확인합니다.ls -lrt
-
파일의 압축을 풀고 기존 파일을 덮어씁니다.
unzip fnpy-event-dns-update.zip
-
-
새 코드를 작성하고 함수를 배치합니다.
ls -lrt fn deploy --app MyApp
작업 5: OCI 이벤트 서비스 규칙 생성
-
OCI 콘솔로 이동하여 관찰 가능성 및 관리를 누릅니다. 이벤트 서비스에서 규칙을 선택하고 규칙 생성을 누릅니다.
-
다음 정보를 입력하십시오.
- 이름:
MyAutoDNSRule
를 입력합니다. - 규칙 조건:
- 조건 1:
- 조건:
Event Type
을 선택합니다. - 서비스 이름:
Compute
을 선택합니다. - 이벤트 유형:
Instance - Launch End
을 선택합니다.
- 조건:
- 조건 2:
- 조건:
Attribute
을 선택합니다. - 속성 이름:
compartmentId
을 선택합니다. - 속성 값: 컴파트먼트 OCID를 입력합니다.
- 조건:
- 조건 1:
- 작업:
- 작업 유형:
Functions
을 선택합니다. - 함수 컴파트먼트: 해당 컴파트먼트를 선택합니다.
- 함수 응용 프로그램:
MyApp
를 선택합니다. - 함수:
fnpy-event-dns-update
을 선택합니다.
- 작업 유형:
주: 이 예제에서는 인스턴스를 compartmentID로 필터링합니다. 즉, 해당 컴파트먼트에서 새로 실행된 인스턴스가 선택된 함수를 트리거합니다. 필요에 따라 다양한 필터 및 조건을 지정할 수 있습니다.
- 이름:
작업 6: 솔루션 검증
이 사용지침서에서는 GRU 및 VCP 영역 모두에서 DNS 개인 영역을 설정하고 각 DNS 개인 영역에 대한 OCID를 문서화했습니다. 해당 OCID는 OCI 함수를 구성하는 데 사용됩니다.
-
OCI 함수가 사용 가능한지 확인하고 해당 함수에 대한 로깅을 사용으로 설정합니다.
-
OCI 콘솔로 이동하여 개발자 서비스를 누릅니다. 함수에서 애플리케이션을 누르고 생성된 애플리케이션
MyApp
을 선택합니다. -
로그를 누르고 로그 사용을 선택합니다.
-
-
현재 DNS 개인 영역을 확인합니다. 다음 이미지와 같이 두 영역에서 모두
UBUNTUAPPS.COM
이라는 도메인을 설정했습니다. -
새 컴퓨트 인스턴스를 생성하여 OCI Full Stack DR 스위치오버를 시뮬레이션합니다. 그러면
Instance Launch - END
이벤트가 트리거됩니다. 그러면 이 이벤트는 OCI Functions를 호출하여 두 리전의 DNS 프라이빗 영역을 업데이트합니다. -
인스턴스가 생성된 후 두 영역에서 DNS 개인 영역이 제대로 업데이트되었는지 확인합니다.
-
OCI Functions 로그를 검토하여 실행된 함수의 세부정보를 확인하십시오.
관련 링크
확인
- 작성자 - Joao Tarla(Oracle LAD A-Team 솔루션 엔지니어)
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Use OCI Events Service Rule to Update Cross Region DNS Records for a Private Zone with OCI Functions
G11042-01
July 2024