Amazon DLM (Data Lifecycle Manager) 를 사용하여 EC2 주기적으로 백업하기

Amazon DLM(Data Lifecycle Manager)를 활용하여 EC2 인스턴스를 백업하는 방법에 대한 글입니다.
2019.08.27

안녕하세요! 클래스메소드 컨설팅부의 김태우입니다 :)

최근에 진행중인 프로젝트(안건)에서 Amazon DLM(Data Lifecycle Manager)을 활용하여 EC2 인스턴스 백업을 설정했는데요, 알아두면 좋은 기능이라고 생각하여 이번 글에서는 DLM 을 활용한 EC2 인스턴스를 주기적으로 백업하는 방법 (정확히 말하면 Snapshot 생성) 에 대해 소개하려고 합니다!

목차

여는 글

EC2 인스턴스를 백업하는 방식에는 크게 두가지 방법으로 나뉩니다.

  1. AMI 생성
  2. Snapshot 생성

AMI 를 생성하는 경우에는 인스턴스의 metadata 및 OS 가 설치된 그대로의 이미지(한개 또는 복수개의 스냅샷 + 메타데이터)를 생성하는 것이구요, Snapshot 을 생성하는 경우에는 인스턴스에 붙어있는(혹은 독립적인) EBS 볼륨을 스냅샷 형식으로 백업하는 것입니다.

AMI 백업 방식의 경우, 일부만 나열하자면 일반적으로 아래와 같은 경우에 유용하게 쓰입니다.

  • 긴급하게 백업된 인스턴스를 복구해야하는 경우
  • 인스턴스 설정 등이 복잡해서 설정이 완료된 인스턴스 이미지를 만들고 싶은 경우
  • Auto Scaling Group 에서 새 인스턴스를 자동으로 생성하기 위해 만드는 경우

Snapshot 백업 방식의 경우에는 아래와 같은 경우에 유용합니다.

  • OS 와 별개로 데이터만 백업하고 싶은 경우
  • 생성된 스냅샷을 기반으로 여러 종류의 AMI 를 생성하고 싶은 경우
  • Amazon DLM 을 활용하여 백업을 자동화하고 스토리지 비용 최적화를 원하는 경우 (동일한 볼륨에 대한 스냅샷을 여러번 생성하면 변경된 부분에 대한 데이터만 추가적으로 백업 + 오래된 스냅샷은 자동으로 삭제)

그럼, Amazon DLM(Data Lifecycle Manager) 에 대해 간단히 소개해보겠습니다!

Amazon DLM 란?

Amazon DLM 이란 공식 도큐먼트에도 적혀있듯이, Amazon EBS 볼륨을 백업하기 위한 Snapshot 의 생성 → 보관 → 삭제의 라이프사이클을 자동화하여 아래와 같은 이점을 누릴 수 있는 서비스입니다.

  • 정기적인 백업 스케줄에 맞춰 스냅샷을 생성하여 중요한 데이터를 보호합니다.
  • 감사기관이나 회사 내부의 규정 등에 의해 요구되는 데이터 백업 설정을 간편하게 해줍니다.
  • 오래된 스냅샷을 삭제하여 스토리지 비용을 절감합니다.

그럼, 실제로 어떻게 설정하는 것인지 바로 DLM Policy 를 생성하여 Snapshot 을 생성해보도록 하겠습니다.

EC2 인스턴스 생성 및 DLM Policy 작성

먼저, AWS 콘솔에 로그인하여 EC2 서비스 콘솔로 이동하여 EC2 인스턴스를 생성합니다. EC2 스냅샷을 생성할 때 인스턴스에 마운트된 스토리지마다 스냅샷이 생성됨을 보여주기 위해 본 글에서는 복수개의 스토리지를 추가했습니다. ec2_mount_multiple_ebs_volumes

인스턴스가 생성된 모습입니다. ec2_instance_created

Name 태그 및 DLM Policy 에서 참조할 태그를 붙여주었습니다. ec2_tags_attached

다음으로 좌측의 메뉴에 Lifecycle Manager 를 클릭합니다. ec2_console_menu

Create Snapshot Lifecycle Policy 버튼을 클릭하면 아래와 같이 DLM Policy 생성 페이지로 이동합니다. dlm_policy_create_page

Policy 내용은 적당히 아래와 같이 입력합니다. 본 글에서는 EBS 가 아닌 EC2 스냅샷을 만들어보는 것으로 진행하고 있지만, EBS 를 직접 타겟으로 하여 스냅샷을 만드는 것도 가능합니다. 리소스 타입을 Instance 로 선택하는 경우에는 해당 EC2 에 마운트된 모든 EBS 볼륨에 대한 스냅샷을 개별적으로 생성해줍니다.

Retention rule 은 해당 Policy 를 적용했을 때 최대 몇개의 스냅샷 버전을 저정할지에 대한 항목입니다. 이 항목에 따라 오래된 버전의 스냅샷은 자동으로 삭제됩니다.

이 글을 작성하고 있는 시점이 도쿄시간(JST)으로 저녁 8시 9분을 지나고 있기때문에 빠르게 테스트하기위해 11:15 UTC 로 지정했습니다. (11:15 UTC == 20:15 JST) 단, 화면에서 보이는 아래의 설명대로 지정된 11:15 UTC 에 정확히 백업이 실시되는 것이 아니라, 적혀있는 시간을 기준으로 1시간 이내에 스냅샷 작업이 시작됨에 유의합니다.

Snapshots start being created within one hour of the specified start time.

dlm_policy_create_settings_1

그 아래에 있는 Tag 정보 등은 기본값으로 두고, 맨 밑에 있는 Policy Summary 부분을 읽어서 설정한 내용이 맞는지 다시한번 확인합니다. dlm_policy_create_policy_summary

Create Policy 버튼을 누르고 policy id 를 확인합니다. dlm_policy_being_created

DLM Policy 를 생성한 직후의 콘솔화면입니다. dlm_policy_created_done

이로써 DLM 설정이 끝났습니다! 이제 실제로 스냅샷이 생성되었는지 확인해보겠습니다.

생성된 Snapshot 확인

좌측의 메뉴 중 Snapshots 메뉴로 이동합니다. 위의 Policy 작성 단계에서 설정한 시간에서 1시간 이내로 기다리면 Snapshot 이 생성됩니다. 아래 화면과 같이 EC2 에 마운트했던 EBS 볼륨 별로 Snapshot 이 생성되었음을 확인할 수 있습니다! :) snapshots_created_by_dlm_policy

생성된 Snapshot 으로부터 EC2 인스턴스화 하고싶은 경우

추가적으로 생성된 Snapshot 으로 부터 EC2 인스턴스를 생성하고 싶은 경우, 즉 snapshot 으로부터 인스턴스를 복원하고 싶은 경우에는 이와 관련한 아래의 AWS 공식문서 링크를 참고하면 됩니다. 저도 Linux 및 Windows 인스턴스의 스냅샷으로 부터 복원하는 작업을 직접 따라해보았는데, 한단계씩 매우 자세하고 친절하게 알려주는 문서라 그 외 특별히 추가할 내용은 없어보입니다.

심지어 아직 디스크 포맷이 정의되지 않은 EBS 의 경우에 디스크 포맷을 정의하여 마운트 시키는 방법도 알려주고 있어서 이 부분도 참고하실 수 있습니다.

당연한 말이겠지만, 한 가지 유의할 점은 root volume 으로부터 먼저 인스턴스화 시킨 후에 root volume 이 아닌 추가적인 볼륨을 마운트 해야한다는 점입니다. root volume 이 아닌 볼륨으로 EC2 인스턴스를 만들려고 시도하면 Initializing 단계에서 실패하게 됩니다.

참고할 AWS 공식문서 리스트

맺는 글

사실, 저는 이번 안건을 담당하기 전에는 DLM 이라는 용어를 들어본 적도 없었습니다ㅎㅎ;;

DLM은 생각보다 간단히 유용하게 사용할 수 있는 백업 기능임에도, 저처럼 아직 모르셨던 분들에게 작은 도움이나마 될 수 있었으면 좋겠습니다!

그럼, 다음 블로그 글을 お楽しみに!(기대해주세용) :D