Apache Airflow를 사용해 가상 디스크 이미지를 Oracle Cloud Infrastructure Block Volumes로 임포트

조직이 클라우드로 계속 마이그레이션함에 따라 기존 블록 볼륨을 원활하게 전송하고 관리하는 데 어려움을 겪고 있는 경우가 많습니다. 온프레미스 워크로드 마이그레이션, 재해 복구 전략 구현, 클라우드 인프라 최적화 등에 관계없이 가상 디스크를 손쉽게 가져올 수 있는 기능은 매우 중요합니다.

이곳에서는 Oracle Cloud Infrastructure Functions(OCI Functions), OCI Object Storage, Apache Airflow, qemu-img 및 이벤트 기반 아키텍처를 통해 사용자가 가상 디스크 이미지 파일을 Oracle Cloud Infrastructure Block Volumes로 자동으로 가져올 수 있습니다.

주:

이 솔루션은 통합관리를 위해 Apache Airflow를 사용하므로 이전 경험을 통해 사용자는 가상 디스크 가져오기 워크플로우를 모니터링하고, 문제를 해결하고, 중단된 변환 플로우를 재시도할 수 있습니다.

구조

일반적인 가상 디스크 이미지 가져오기 워크플로우의 구조는 다음 절에 설명되어 있습니다.

  1. 사용자가 OCI Object Storage 버킷에 새 가상 디스크 이미지를 업로드합니다.
  2. 가상 디스크 이미지 파일 업로드가 완료되면 이벤트가 OCI 함수 실행을 트리거합니다.
  3. 이 함수는 가상 디스크 객체 메타데이터를 인출하고 Apache Airflow API를 호출하여 DAG(Directed Acyclic Graph) 실행을 시작합니다.
  4. Apache Airflow DAG는 14단계로 가상 디스크 이미지를 OCI Block Volume으로 임포트합니다. 가장 중요한 단계는 다음과 같습니다.
    • 가상 디스크 이미지 임포트를 처리할 새 워커 컴퓨트 인스턴스를 생성합니다.
    • 새 인스턴스에 필요한 도구 설정: qemu-img, oci-cli.
    • 버킷에서 워커 인스턴스로 가상 디스크 이미지를 다운로드합니다.
    • qemu-img를 사용하여 가상 디스크 이미지의 실제 크기를 확인하고 새 OCI 블록 볼륨(가상 디스크 이미지라고 함)을 프로비전합니다.
    • 작업자 컴퓨트 인스턴스에 OCI 블록 볼륨을 연결합니다.
    • 가상 디스크 이미지 콘텐츠를 OCI 블록 볼륨에 씁니다.
    • OCI 블록 볼륨에서 fsck를 실행합니다.
    • OCI 블록 볼륨을 분리합니다.
    • 작업자 인스턴스를 종료합니다.
    • (선택사항) OCI 블록 볼륨에서 백업 정책을 업데이트합니다.
  5. 사용자는 Apache Airflow에 연결하여 DAG 실행을 모니터링할 수 있습니다.

다음 다이어그램은 이 참조 아키텍처를 보여 줍니다.



virtual-disk-import-arch-oracle.zip

아키텍처의 구성 요소는 다음과 같습니다.

  • 지역

    Oracle Cloud Infrastructure 지역은 가용성 도메인이라는 하나 이상의 데이터 센터를 포함하는 지역화된 지리적 영역입니다. 지역은 다른 지역과는 독립적이며, 거리는 국가 또는 대륙에 걸쳐 분리될 수 있습니다.

  • 가용성 도메인

    가용성 도메인은 한 지역 내의 독립형 독립형 데이터 센터입니다. 각 가용성 도메인의 물리적 리소스는 결함 허용을 제공하는 다른 가용성 도메인의 리소스와 격리됩니다. 가용성 도메인은 전원이나 냉각과 같은 인프라나 내부 가용성 도메인 네트워크를 공유하지 않습니다. 따라서 특정 가용성 도메인에서 장애가 발생해도 해당 지역의 다른 가용성 도메인에 영향을 주지 않습니다.

  • VCN(가상 클라우드 네트워크) 및 서브넷

    VCN은 Oracle Cloud Infrastructure 지역에서 설정한 커스터마이징 가능한 소프트웨어 정의 네트워크입니다. 기존 데이터 센터 네트워크와 마찬가지로 VCN을 사용하면 네트워크 환경을 완전히 제어할 수 있습니다. VCN은 VCN 생성 후 변경할 수 있는 겹치지 않는 여러 CIDR 블록을 가질 수 있습니다. VCN을 서브넷으로 분할할 수 있으며, 영역 또는 가용성 도메인으로 범위를 지정할 수 있습니다. 각 서브넷은 VCN의 다른 서브넷과 겹치지 않는 연속적인 주소 범위로 구성됩니다. 서브넷을 생성한 후 크기를 변경할 수 있습니다. 서브넷은 공용 또는 전용일 수 있습니다.

  • 객체 스토리지

    오브젝트 스토리지를 사용하면 데이터베이스 백업, 분석 데이터, 이미지 및 비디오와 같은 리치 콘텐츠 등 모든 콘텐츠 유형의 대량의 정형 및 비정형 데이터에 빠르게 액세스할 수 있습니다. 인터넷 또는 클라우드 플랫폼 내에서 직접 안전하고 안전하게 데이터를 저장하고 검색할 수 있습니다. 성능 또는 서비스 안정성의 저하 없이 스토리지를 원활하게 확장할 수 있습니다. 빠르고 즉각적이며 자주 액세스하는 데 필요한 "핫" 스토리지에 표준 스토리지를 사용합니다. 장기간 보관하고 거의 액세스하지 않는 "콜드" 스토리지에는 아카이브 스토리지를 사용합니다.

  • 이벤트

    Oracle Cloud Infrastructure 서비스는 리소스 변경사항을 설명하는 구조화된 메시지인 이벤트를 내보냅니다. 이벤트는 생성, 읽기, 업데이트 또는 삭제(CRUD) 작업, 리소스 수명 주기 상태 변경 및 클라우드 리소스에 영향을 주는 시스템 이벤트에 대해 내보내집니다.

  • 함수

    Oracle Cloud Infrastructure Functions는 확장성이 뛰어난 완전 관리형 멀티테넌트, 온디맨드 FaaS(Functions-as-a-Service) 플랫폼입니다(FaaS). 그것은 Fn 프로젝트 오픈 소스 엔진에 의해 구동 됩니다. 함수를 사용하면 코드를 배치하고 직접 호출하거나 이벤트에 대한 응답으로 트리거할 수 있습니다. Oracle Functions는 Oracle Cloud Infrastructure Registry에서 호스팅되는 Docker 컨테이너를 사용합니다.

  • DevOps

    DevOps 서비스는 아티팩트를 구축하고 OCI 컴퓨트 서비스(Functions, Oracle Container Engine(OKE) 또는 컴퓨트 인스턴스에 배포하는 프로세스를 지원하는 개발자를 위한 엔드투엔드 CI/CD(지속적 통합 및 지속적 제공) 플랫폼입니다.

  • 정책

    Oracle Cloud Infrastructure Identity and Access Management 정책은 어떤 리소스에 액세스할 수 있는지와 방법을 지정합니다. 액세스는 그룹 및 구획 수준에서 부여됩니다. 즉, 특정 구획 또는 테넌시 내에서 그룹에 특정 유형의 액세스 권한을 부여하는 정책을 작성할 수 있습니다.

  • 블록 볼륨

    블록 스토리지 볼륨을 사용하면 스토리지 볼륨을 생성, 연결, 연결 및 이동하고 스토리지, 성능 및 애플리케이션 요구사항을 충족하기 위해 볼륨 성능을 변경할 수 있습니다. 볼륨을 인스턴스에 연결한 후 일반 하드 드라이브처럼 볼륨을 사용할 수 있습니다. 볼륨 연결을 해제하고 데이터 손실 없이 다른 인스턴스에 연결할 수도 있습니다.

  • 가상 시스템

    Oracle Cloud Infrastructure(OCI) Compute VM은 소규모 개발 프로젝트에서 실시간 통신 플랫폼과 같은 대규모 글로벌 애플리케이션에 이르기까지 다양한 워크로드를 위해 클라우드에서 안전하고 탄력적인 컴퓨팅 용량을 제공합니다. 유연한 구성을 통해 사용자는 커스터마이징된 프로세서 및 메모리 값으로 VM 리소스를 최적화하여 가격 대비 성능을 향상시킬 수 있습니다.

권장사항

다음 권장 사항을 시작점으로 사용합니다. 요구 사항은 여기에 설명된 아키텍처와 다를 수 있습니다.
  • VCN

    VCN을 생성할 때 VCN의 서브넷에 연결할 리소스 수를 기준으로 필요한 CIDR 블록 수와 각 블록의 크기를 결정합니다. 표준 전용 IP 주소 공간 내에 있는 CIDR 블록을 사용합니다.

    전용 접속을 설정할 다른 네트워크(Oracle Cloud Infrastructure, 온프레미스 데이터 센터 또는 다른 클라우드 제공자)와 겹치지 않는 CIDR 블록을 선택합니다.

    VCN을 생성한 후 해당 CIDR 블록을 변경, 추가 및 제거할 수 있습니다.

    서브넷을 설계할 때 트래픽 흐름 및 보안 요구 사항을 고려합니다. 특정 계층 또는 역할 내의 모든 리소스를 보안 경계로 사용할 수 있는 동일한 서브넷에 연결합니다.

  • 보안

    스택을 배치하는 사용자가 Administrators 그룹의 멤버가 되도록 적극 권장합니다. 사용자가 allowed_source_cidr 변수를 사용하여 Apache Airflow를 인터넷에 노출하는 경우 특정 IP, 서브넷 CIDR 블록을 채우는 것이 좋습니다.

고려사항

이 참조 구조를 배치할 때는 다음 사항을 고려하십시오.

  • 보안

    Apache Airflow 및 임시 작업자 인스턴스를 실행하는 인스턴스는 동적 그룹을 사용하여 해당 인스턴스가 속한 구획의 인스턴스, 블록 볼륨 및 읽기 객체를 관리하도록 승인됩니다. 함수는 구획의 객체 리소스에 대해 읽기 작업을 수행할 수 있는 권한이 부여됩니다.

  • 가용성

    Apache Airflow 인스턴스의 포트 8080에 있는 Apache Airflow API는 새 VCN이 생성되고, 인스턴스에 공용 IP 주소가 있고, allowed_source_cidr 변수에 연결이 시도된 소스 IP가 포함된 경우에만 인터넷에서 연결할 수 있습니다.

  • 비용

    임시 컴퓨트 인스턴스는 Oracle Cloud Infrastructure Block Volumes에 대한 각 가상 디스크 임포트 작업을 처리하기 위해 생성됩니다. 워크플로우가 성공적으로 완료되면 인스턴스가 종료됩니다.

  • 위치

    OCI Object Storage에 업로드된 가상 디스크 이미지 파일의 "ad_number": 1/2/3 메타데이터를 사용하여 블록 볼륨 배치를 사용자정의할 수 있습니다.

배치

이 참조 아키텍처의 리소스를 구성하고 배포하는 Terraform 코드는 GitHub에서 확인할 수 있습니다.

  1. GitHub로 이동합니다.
  2. 저장소를 로컬 컴퓨터에 복제하거나 다운로드합니다.
  3. README 문서의 지침을 따릅니다.

추가 탐색

Oracle Cloud Infrastructure, Apache Airflow 및 qemu-img에 대한 자세한 내용은 다음 리소스를 참조하십시오.

확인

Author: Andrei Ilas