주:

Red Hat Enterprise Linux Virtual Machine을 Amazon Web Services에서 Oracle Cloud Infrastructure로 마이그레이션

소개

OCI는 애플리케이션을 더 빠르고 안전하게 실행할 수 있는 차세대 클라우드이므로 Amazon Web Services(AWS)에서 Oracle Cloud Infrastructure(OCI)로의 마이그레이션은 많은 조직에서 점점 더 빈번해지고 있습니다.

가상 머신(VM) 마이그레이션은 종종 이러한 노력의 핵심 부분이며, 고객은 AWS에서 OCI로 마이그레이션하는 방법에 대한 적절한 지침을 찾을 수 있습니다. 또한 많은 조직에서 Linux는 대부분의 인프라를 구성합니다. 따라서 이 튜토리얼은 AWS에서 OCI로 전 세계에서 가장 널리 사용되는 Linux 배포판(Red Hat Enterprise Linux) 중 하나를 실행하는 가상 머신의 마이그레이션에 중점을 두고 있습니다.

이 사용지침서에서는 고객에게 OCI로의 가상 머신 마이그레이션에 대한 요구사항과 Red Hat Enterprise Linux VM을 AWS에서 OCI로 준비하고 마이그레이션하는 방법에 대한 지침을 제공하여 반가상화 모드에서 OCI에서 실행할 수 있도록 합니다. 또한 OCI를 사용하면 인스턴스가 에뮬레이트 모드로 실행될 수 있지만 반가상화 장치를 사용하는 VM은 에뮬레이트 모드에서 실행하는 VM보다 훨씬 빠른 성능을 제공하며 디스크 I/O 성능은 6배 이상 빨라집니다.

전체 프로세스는 AWS에서 VM을 준비하고, Amazon Simple Storage Service(Amazon S3)로 내보내고, OCI Object Storage로 전송하고, OCI에서 커스터마이징 이미지를 생성하고, 인스턴스 실행으로 구성됩니다. Amazon S3과 OCI Object Storage 간의 이미지 전송은 오픈 소스 도구인 rclone을 사용하여 수행됩니다. 작은 크기의 이미지만 실험하는 경우 수동으로 수행할 수 있습니다. 그러나 rclone을 사용하면 이미지를 훨씬 더 빠르고 간단하게 전송할 수 있으므로 사용하는 것이 좋습니다.

목표

필요 조건

가정

작업 1: 데이터 전송 인프라 준비

이 자습서에서는 다음과 같은 데이터 전송 아키텍처를 사용합니다.

작업 1.1: Amazon S3 및 OCI Object Storage 버킷 준비

이 작업에서는 다음 위치에 버킷을 생성합니다.

Amazon S3에서 다음 속성으로 버킷을 생성합니다.

Amazon S3 버킷 권한에서 다음 이미지에 표시된 것처럼 작업 중인 AWS 지역과 일치하는 권한 부여를 사용하여 버킷에 ACL을 연결합니다. 피부여자 영역별 표준 계정 ID(VM 임포트/익스포트를 사용하여 VM으로 인스턴스 익스포트)를 참조하십시오.

S3 ACL 첨부 파일

표준 스토리지 계층에서 OCI Object Storage에 버킷을 생성하여 이 작업을 완료합니다. 이 버킷은 나중에 Amazon S3에서 VM 이미지를 전송할 버킷입니다.

작업 1.2: Rclone 설치 및 구성

이 작업에서는 OCI에서 실행되는 VM에 rclone을 설치합니다. 소규모 VM을 실험하고 Amazon S3 및 OCI Object Storage의 두 가지 원격으로 rclone을 구성하는 경우 로컬 시스템에 rclone을 설치할 수 있습니다.

  1. OCI의 Oracle Linux VM에 rclone 및 SSH를 설치합니다.

    sudo -v ; curl https://rclone.org/install.sh | sudo bash
    
  2. rclone에서 remotes 구성을 수행합니다. 이 작업은 rclone 구성 세션을 시작하여 수행됩니다. 명령줄에서 다음 명령을 실행합니다.

    rclone config
    
  3. Amazon S3 원격 구성의 경우 다음 정보를 입력합니다.

    • 원격 이름: 원격 이름을 입력합니다.
    • 원격 유형: S3 유형을 선택합니다.
    • 제공자: AWS를 선택합니다.
    • access_key_id: 사용하기로 결정한 AWS 사용자와 연관된 액세스 키 ID를 입력합니다.
    • secret_access_key: 액세스 키 ID와 일치하는 보안 액세스 키를 입력합니다.
    • 지역: 작업 중인 AWS 지역을 선택합니다.
    • location_constraint: 작업 중인 Amazon 웹 영역과 일치하는 위치 제약 조건을 선택합니다. 일부 지역(예: 프랑크푸르트)의 경우 비어 있을 수 있습니다.
    • ACL: 보다 제한된 미리 준비된 ACL을 만들고 있는지 확인하려면 private를 선택합니다. 자세한 내용은 캔된 ACL을 참조하십시오.
  4. OCI Object Storage에 대한 복제 액세스의 경우 이 사용지침서에서는 OCI 사용자 및 API 서명 키를 사용합니다. 또는 동적 그룹을 사용할 수 있습니다. 자세한 내용은 인스턴스에서 서비스 호출을 참조하십시오.

    OCI Object Storage 원격을 구성하기 전에 다음 작업을 수행합니다.

    • OCI Object Storage로 인증하고 이미지 데이터 전송을 수행할 rclone용 OCI API 서명 키를 생성합니다. API 서명 키를 생성하고 VM에 키를 저장하는 디렉토리를 기록해 둡니다. OCI 구성 파일에서 키를 제공해야 하기 때문입니다. How to Generate an API Signing Key을 참조하십시오.

    • OCI 구성 파일을 생성합니다. 이 구성 파일에는 OCI API 서명 키가 필요합니다. 자세한 내용은 SDK and CLI Configuration File을 참조하십시오.

    OCI 제공자를 사용하는 rclone의 인증 옵션을 이해하려면 rclone의 고유 OCI Object Storage 제공자 백엔드 지원 발표를 참조하십시오.

  5. OCI 구성 파일은 일반적으로 디렉토리에 config 이름이 지정된 파일로 저장됩니다.

    ~/.oci/
    
  6. OCI API 서명 키 및 OCI 구성 파일을 생성한 후에는 rclone에서 OCI 원격을 구성할 수 있습니다. 다음 명령을 실행하여 구성 세션을 시작합니다.

    rclone config
    
  7. OCI Object Storage 원격 구성에 대해 다음 정보를 입력합니다.

    • 원격 이름: 원격 이름을 입력합니다.
    • 유형: Oracle Object Storage를 선택합니다.
    • 제공자: OCI 사용자 및 API 서명 키를 사용할 때와 같이 user_principal_auth을 선택합니다. 동적 그룹을 사용하는 경우 instance_principal_auth을 선택합니다.
    • 네임스페이스: 테넌시 네임스페이스를 입력합니다.
    • 구획: OCI 버킷 구획 OCID(Oracle Cloud Identifier)를 입력합니다.
    • 지역: OCI에서 작업 중인 지역을 입력합니다.
    • 끝점: 비워 두거나 끝점을 https://<namespace>.objectstorage.<region-code>.oci.customer-oci.com/n/<namespace> 형식으로 입력합니다.
  8. 다음 명령을 사용하여 rclone 원격 구성 파일을 확인합니다.

    cat ~/.config/rclone/rclone.conf
    

작업 2: 소스 VM 부트 볼륨 준비

작업 2.1: AWS VM 부트 볼륨의 필수 스냅샷 수행

AWS VM 부트 볼륨의 스냅샷을 수행합니다. 부트 볼륨 구성 작업을 시작하기 전에 필수입니다.

작업 2.2: 직렬 콘솔 사용

직렬 콘솔 연결을 통해 사용자는 VM 문제를 해결하고 시스템 구성 파일 편집 및 암호 재설정과 같은 작업을 수행할 수 있습니다. 일반적으로 직렬 콘솔용 VM을 준비하려면 GRUB 부트 로더 파일을 구성해야 합니다. 이 파일은 /etc/default/grub에 있습니다.

가장 중요한 GRUB 구성 매개변수는 다음과 같습니다.

- GRUB_TIMEOUT_STYLE: make sure it is commented if its value is "hidden"; alternatively, change it to "menu"
- GRUB_TIMEOUT: make sure it is higher than 0 to allow boot mode selection without skipping directly to the default option. Specify this value in both files.
- GRUB_CMDLINE_LINUX: make sure "console=tty1 console=ttyS0, 115200" is appended to it
- GRUB_TERMINAL: make sure its value is "serial console"
- GRUB_SERIAL_COMMAND: make sure its value is "serial -- unit=0 --speed=115200"
  1. /etc/default/grub를 엽니다.

    sudo vi /etc/default/grub
    

    다음 이미지에 표시된 파일처럼 보이도록 파일을 편집합니다.

    grub 편집

  2. 파일을 편집한 후 다음 명령을 실행하여 GRUB 부트 로더가 적절히 업데이트되었는지 확인합니다.

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    

작업 2.3: 반가상화 드라이버 확인

VM을 OCI로 임포트하여 반가상화 모드로 실행하려면 반가상화 VirtIO 드라이버가 이미지에 있어야 합니다. 이 작업에서는 커널 및 initramfs 임시 파일 시스템을 모두 검사하여 드라이버가 있는지 확인합니다. 커널 버전 3.4 이상을 실행하는 Linux 기반 운영 체제는 반가상화 드라이버를 지원하므로, 해당 드라이버가 있는지 확인하고 확인해야 하는 경우가 많습니다.

필요한 최소 VirtIO 드라이버 세트에는 pci, scsi가 포함됩니다. 이러한 드라이버는 커널 또는 initramfs에 있어야 합니다.

  1. 다음 명령을 사용하여 AWS VM의 커널을 확인합니다.

    sudo grep -i virtio /boot/config-$(uname -r)
    

    커널을 확인하십시오.

    주: pci VirtIO 드라이버는 커널에 있습니다.

  2. 다음 명령을 사용하여 AWS VM의 커널을 확인합니다.

    sudo lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
    

    initramfs 확인

    주: scsi VirtIO 드라이버는 initramfs에 있습니다.

  3. VM의 부트 볼륨에 드라이버가 없는 경우 dracut를 사용하여 initramfs를 재구축해야 합니다.

    sudo dracut -v -f --add-drivers “virtio virtio_pci virtio_scsi” /boot/initramfs-$(uname -r).img $(uname -r)
    

작업 2.4: 네트워킹 설정 구성

네트워킹 구성의 경우 다음을 확인합니다.

Linux에서 네트워킹 구성을 수행하는 방법에는 여러 가지가 있습니다. 특히 RHEL에서 /etc/sysconfig/network-scripts/ifcfg-eth0의 네트워킹 구성 파일을 편집하거나 NetworkManager를 사용하여 이더넷 연결 구성을 수행할 수 있습니다. 이 자습서에서는 후자를 사용하여 필요한 네트워킹 구성을 수행합니다. 자세한 내용은 이더넷 연결 구성을 참조하십시오.

  1. NetworkManager 명령줄 도구(nmcli)를 실행하여 VM의 네트워킹 구성에 대한 요약을 확인합니다.

    네트워킹 구성 요약

  2. VM에서 사용 가능한 연결을 나열하려면 다음 명령을 실행합니다.

    nmcli connection show
    

    연결 리스트가 표시됩니다. 이 자습서에 사용된 VM에는 다음과 같은 연결이 있습니다.

    접속 확인

  3. DHCP(동적 호스트 구성 프로토콜)를 사용하여 eth0와 연관된 이더넷 연결을 확인합니다.

    nmcli connection show <connection UUID>
    

    ipv4.method 매개변수가 나타날 때까지 스크롤합니다. 이 값은 auto여야 합니다.

    DHCP 확인

  4. eth0 인터페이스와 연관된 접속을 편집합니다. 다음 명령을 사용하여 인터페이스 구성에서 MAC 주소를 제거합니다.

    sudo nmcli connection modify <connection UUID> 802-3-ethernet.mac-address ''
    
  5. 다음 명령을 사용하여 이러한 변경 사항을 적용합니다.

    sudo nmcli con up <connection UUID>
    
  6. 또한 /etc/udev/rules 디렉토리에서 MAC 주소 하드 코딩된 규칙을 포함하는 udev 규칙 파일이 있는지 확인하고 삭제합니다. 이 튜토리얼에 사용된 AWS 이미지에는 70-persistent-net.rules 파일이 있습니다. 이 파일을 삭제하려면 다음 명령을 실행합니다.

    sudo rm /etc/udev/rules.d/70-persistent-net.rules
    

이제 네트워킹 구성이 완료되었습니다. /etc/sysconfig/network-scripts/ifcfg-eth0 파일을 확인하여 확인할 수 있습니다.

작업 3: 가상 머신 이미지를 Amazon S3로 내보내기

이 작업을 수행하려면 AWS CLI를 사용해야 합니다. 이 자습서에서는 AWS CLI 구성 작업을 건너뛰므로 AWS CloudShell를 사용합니다.

  1. VM을 중지합니다. AWS CloudShell를 열고 다음 명령을 실행하여 이미지를 내보냅니다.

    aws ec2 create-instance-export-task --instance-id <instance-id> --target-environment vmware --export-to-s3-task DiskImageFormat=vmdk,ContainerFormat=ova,S3Bucket=<bucket name>
    
  2. 다음 정보를 입력합니다.

    • 디스크 이미지 형식: VMDK는 OCI에서 지원하는 유일한 AWS 익스포트 형식이므로 입력합니다.
    • 컨테이너 형식: OVA를 입력하여 디스크 이미지를 VM에 대한 메타데이터와 결합합니다. 또는 이 매개변수를 익스포트할 수 있습니다.
    • 대상 환경: vmware는 OCI에서 지원되는 유일한 대상 환경이므로 입력합니다.
  3. AWS CloudShell에서 다음 명령을 실행하여 내보내기 작업의 상태를 모니터링할 수 있습니다.

    aws ec2 describe-export-tasks --export-task-ids <export task id>s
    

    작업을 처음 실행하면 활성 상태로 표시됩니다. 완료되면 completed 상태로 표시됩니다.

작업 4: OCI Object Storage로 이미지 전송

작업 1.2에서 rclone이 구성된 OCI VM에 SSH로 접속합니다. AWS S3 버킷에서 OCI Object Storage 버킷으로 익스포트된 이미지 복사를 수행합니다.

rclone copy <aws-remote>:<bucket>/<imagefile> <oci-remote>:<bucket> -vv

작업 5: OCI에서 사용자정의 이미지 생성 및 인스턴스 실행

  1. OCI 콘솔의 컴퓨트 서비스에서 사용자정의 이미지로 이동하고 이미지 임포트를 선택합니다.

  2. 다음 정보를 입력합니다.

    • 구획: 사용자정의 이미지를 생성할 구획을 선택합니다.
    • 이름: 사용자정의 이미지 이름을 입력합니다.
    • 운영 체제: RHEL을 선택합니다.
    • 소스: 오브젝트 스토리지 버킷에서 임포트합니다. 작업 1.1에서 구성한 버킷을 선택합니다.
    • 객체 이름: Amazon S3에서 전송한 이미지를 선택합니다.
    • 실행 모드: 반가상화 모드를 선택합니다.
  3. 이미지 임포트를 눌러 이미지 임포트를 시작합니다.

  4. 이미지가 생성되면 해당 이미지에서 인스턴스를 실행할 준비가 된 것입니다. 사용자정의 이미지 세부정보 페이지에서 인스턴스 생성을 선택하고 다음 정보를 입력합니다.

    • 이름: 인스턴스 이름을 입력합니다.
    • 구획: 인스턴스를 실행할 구획을 선택합니다.
    • 가용성 도메인.
    • VCN서브넷 이 자습서에서는 공용 서브넷을 사용하여 VPN 접속을 건너뛸 수 있습니다.
    • SSH 키: 새 SSH 키를 생성하거나 AWS에서 사용한 것과 동일한 키 세트를 사용하는 두 가지 옵션이 있습니다. 동일한 키 세트를 계속 사용하려면 소스 VM에 대해 AWS에서 사용한 것과 동일한 공개 키를 업로드하십시오. AWS 공용 키가 .pem 키 형식이라고 가정하고 OCI 인스턴스에 업로드하려면 .pem.pub로 변경합니다. 이렇게 하면 VM에 SSH로 접속하기 위해 동일한 전용 키를 계속 사용할 수 있습니다.
  5. 가상 머신을 실행합니다. 프로비전이 완료되면 접속할 수 있습니다. 연결하는 사용자는 opc가 아니라 ec2-user입니다.

    ssh -i pathToKey/keyfile ec2-user@<publicIp>
    

확인

추가 학습 자원

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

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