주:

OCI 이벤트 서비스 규칙을 사용하여 OCI 함수를 통해 프라이빗 영역에 대한 영역 간 DNS 레코드 업데이트

소개

이 사용지침서에서는 새 컴퓨트 인스턴스가 생성될 때 또는 Oracle Cloud Infrastructure Full Stack Disaster Recovery(OCI Full Stack DR) 계획에서 스위치오버 시나리오가 진행되는 동안 두 지역의 프라이빗 영역에 있는 컴퓨트 인스턴스에 대한 DNS(Domain Name System) 레코드를 자동으로 업데이트하는 방법을 알아봅니다. 이 사용지침서에서는 두 가지 특정 OCI 서비스를 다룹니다.

이 사용 사례는 처음에 OCI Full Stack DR switchover 계획 중에 사용하도록 구상되었습니다. 여기서 인스턴스는 리전 간에 이동됩니다. 기본적으로 DR(재해 복구) 전환 프로세스에는 새 영역에서 새 인스턴스를 생성한 다음 이전 영역에서 인스턴스를 종료하는 과정이 포함됩니다. 이 사용지침서에서는 이 시나리오를 기반으로 실행 - 인스턴스 종료 이벤트 유형을 중점적으로 설명합니다. 이 이벤트 유형은 OCI 함수를 트리거하여 두 지역의 프라이빗 영역에 대한 DNS 레코드를 업데이트합니다.

이 솔루션은 기본 OCI DNS 프라이빗 영역 자동화 역할을 할 수도 있습니다. 선택한 컴파트먼트에 생성된 각 새 인스턴스 또는 대상 인스턴스를 식별하기 위해 지정한 다른 필터에 대해 DNS 레코드를 생성합니다. 자세한 내용은 이벤트를 생성하는 서비스를 참조하십시오.

고급 아키텍처

T3_1

참고:

목표

필요 조건

작업 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 컨테이너 레지스트리 생성

  1. 개발자 서비스로 이동하여 컨테이너 레지스트리를 누르고 Fn 이미지에 대한 프라이빗 저장소를 생성합니다.

    저장소 이름: lab/fnpy-event-dns-update.

    T3_1

  2. 저장소를 확인하고 네임스페이스를 기록해 둡니다.

    T3_1

  3. OCI CLI 및 Docker가 설치된 터미널 셸을 열고 레지스트리에 로그인합니다. 해당 지역의 올바른 URL을 확인하십시오. 이 자습서에서는 레지스트리 URL이 gru.ocir.io브라질 동부(상파울루) 영역을 사용합니다.

    docker login gru.ocir.io
    Username: <your container namespace>/youruser
    Password: YOUR_AUTH_TOKEN_CREATED_EARLIER
    

    T3_3

작업 4: 프라이빗 영역에서 DNS를 업데이트하기 위한 Python OCI 함수 생성

  1. OCI 콘솔로 이동하여 개발자 서비스를 누릅니다. 함수에서 애플리케이션애플리케이션 생성을 누릅니다.

    T9_1

  2. 영향을 받는 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
    

    T4_2

  3. 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-urlregistry 위치를 변경해야 합니다.

    T4_3

    init 명령은 func.py에 hello world 함수를 생성합니다. 이 코드를 덮어씁니다.

  4. 여기에서 Python 함수 샘플 코드를 가져옵니다. fnpy-event-dns-update.zip, 압축을 풀고 init 명령 중에 파일을 덮어씁니다.

    1. zip 파일을 fn init 명령을 실행한 lab 디렉토리로 복사하고 디렉토리에서 파일을 확인합니다.

      ls -lrt
      
    2. 파일의 압축을 풀고 기존 파일을 덮어씁니다.

      unzip fnpy-event-dns-update.zip
      

    T9_1

  5. 새 코드를 작성하고 함수를 배치합니다.

    ls -lrt
    fn deploy --app MyApp
    

    T4_1

작업 5: OCI 이벤트 서비스 규칙 생성

  1. OCI 콘솔로 이동하여 관찰 가능성 및 관리를 누릅니다. 이벤트 서비스에서 규칙을 선택하고 규칙 생성을 누릅니다.

  2. 다음 정보를 입력하십시오.

    • 이름: MyAutoDNSRule를 입력합니다.
    • 규칙 조건:
      • 조건 1:
        • 조건: Event Type을 선택합니다.
        • 서비스 이름: Compute을 선택합니다.
        • 이벤트 유형: Instance - Launch End을 선택합니다.
      • 조건 2:
        • 조건: Attribute을 선택합니다.
        • 속성 이름: compartmentId을 선택합니다.
        • 속성 값: 컴파트먼트 OCID를 입력합니다.
    • 작업:
      • 작업 유형: Functions을 선택합니다.
      • 함수 컴파트먼트: 해당 컴파트먼트를 선택합니다.
      • 함수 응용 프로그램: MyApp를 선택합니다.
      • 함수: fnpy-event-dns-update을 선택합니다.

    T5_1

    주: 이 예제에서는 인스턴스를 compartmentID로 필터링합니다. 즉, 해당 컴파트먼트에서 새로 실행된 인스턴스가 선택된 함수를 트리거합니다. 필요에 따라 다양한 필터 및 조건을 지정할 수 있습니다.

작업 6: 솔루션 검증

이 사용지침서에서는 GRU 및 VCP 영역 모두에서 DNS 개인 영역을 설정하고 각 DNS 개인 영역에 대한 OCID를 문서화했습니다. 해당 OCID는 OCI 함수를 구성하는 데 사용됩니다.

  1. OCI 함수가 사용 가능한지 확인하고 해당 함수에 대한 로깅을 사용으로 설정합니다.

    1. OCI 콘솔로 이동하여 개발자 서비스를 누릅니다. 함수에서 애플리케이션을 누르고 생성된 애플리케이션 MyApp을 선택합니다.

      T6_1

    2. 로그를 누르고 로그 사용을 선택합니다.

      T6_1

  2. 현재 DNS 개인 영역을 확인합니다. 다음 이미지와 같이 두 영역에서 모두 UBUNTUAPPS.COM이라는 도메인을 설정했습니다.

    T6_1

    T6_1

  3. 새 컴퓨트 인스턴스를 생성하여 OCI Full Stack DR 스위치오버를 시뮬레이션합니다. 그러면 Instance Launch - END 이벤트가 트리거됩니다. 그러면 이 이벤트는 OCI Functions를 호출하여 두 리전의 DNS 프라이빗 영역을 업데이트합니다.

    T6_2

    T6_2

  4. 인스턴스가 생성된 후 두 영역에서 DNS 개인 영역이 제대로 업데이트되었는지 확인합니다.

    T6_3

    T6_3

  5. OCI Functions 로그를 검토하여 실행된 함수의 세부정보를 확인하십시오.

    T6_4

확인

추가 학습 자원

docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.