Amazon EC2 인스턴스 / 볼륨에 대한 간단한 백업 전략?


13

Amazon EC2 EBS 지원 Windows 이미지 010에 대한 소개 백업을 입력했습니다 ...

SharePoint Services를 실행하는 단일 Windows 2008 서버에 대한 간단한 백업 전략을 찾기 위해 많은 노력을 기울였습니다. 하나의 데이터 볼륨을 가진 한 서버의 EBS 지원 이미지입니다. 나는 이국적인 것이 필요하지 않습니다. "일일"백업 만 있으면됩니다 (하루 동안의 데이터 손실은 치명적이지 않습니다).

사용하기 편한 EBS 지원 AMI 이미지 (Windows 2008)를 만들어 저장했습니다. 새로운 EBS AMI 이미지를 생성하여 백업을 시작했습니다. 이 작업은 매우 간단하지만 처음 10 – 15 분 동안 이미지를 생성하는 동안 실행중인 서버가 오프라인 상태가됩니다.

백업을 생성하는 표준 방법은 실행중인 인스턴스에 연결된 볼륨의 스냅 샷을 생성하는 것 같습니다. 다시 말하지만 매우 간단하며 스냅 샷 생성 중에 서버를 계속 사용할 수 있습니다. 명백한 Catch-22는 스냅 샷에서 직접 새 인스턴스를 시작할 수 없다는 것입니다.

실행중인 인스턴스를 S3 스토리지에 번들로 묶은 다음 S3 버킷에서 AMI를 등록하는 방법을 알고 있습니다. 이를 통해 실행중인 인스턴스의 백업을 캡처 할 수 있으며 실행중인 인스턴스가 손실 된 경우 S3 버킷에서 AMI를 등록하고 새 AMI를 시작하여 인스턴스를 복구 할 수 있지만 실제로는 복잡해 보입니다. 이 작업을 수행하려면 AWS 콘솔과 Firefox 용 S3 Organizer 플러그인간에 전환해야합니다. (명령 행 접근 방식은 언급하지 마십시오. 이것은 010 레벨 코스입니다).

EBS 지원 이미지로 재생하면 다음과 같은 접근 방식이 나에게 효과적입니다 (모두 AWS 콘솔 내에서 수행됨).

1. 백업의 경우 필요에 따라 시스템 볼륨 (/ dev / sda1)을 간단히 스냅 샷하십시오. 2. 실행중인 인스턴스가 손실 된 경우 다음을 수행하십시오. a. 마지막 스냅 샷 백업에서 새 볼륨을 생성합니다. b. 시작하는 AMI의 다른 인스턴스를 시작합니다 (ESB 지원) c.이 인스턴스를 중지합니다. d. 새로 중지 된 인스턴스에서 기존 시스템 볼륨을 분리하여 버립니다. e. 새로 생성 된 볼륨을 시스템 볼륨 (/ dev / sda1)으로 중지 된 인스턴스에 연결합니다. f. 새 인스턴스를 다시 시작하십시오. 나는 이것을 두 번 시험해 보았고 그것은 나를 위해 일하는 것 같다.

질문 :이 접근 방식에 문제가 있습니까?

답변:


9

귀하의 접근 방식은 매우 훌륭하게 들리지만 개선이 가능한 방법을 생각할 수 있습니다.

마지막 백업 이후 데이터 손실의 영향과 EBS 볼륨 오류 (가능한 경우는 아니지만)를 줄이기 위해 데이터를 시스템 파일과는 별도의 EBS 볼륨에 저장하고 시스템 볼륨보다 더 자주 데이터 볼륨을 백업 할 수 있습니다 .

현재 전략을 사용하면 마지막 백업 시간과 인스턴스 장애 시간 사이에 생성 된 데이터가 손실됩니다. 새로운 접근 방식을 사용하면 인스턴스 장애가 발생할 때까지 데이터 볼륨이 바로 쓰여 지므로 새 인스턴스가 시작되고 실행되면 다시 연결할 수 있습니다.


훌륭한 지적입니다.
John Miner

4

bash 스크립트를 사용하여 계정의 모든 볼륨에 대한 스냅 샷을 생성합니다

#!/bin/bash

ec2-describe-volumes | awk '{ print $2 }' | sort -u >  /tmp/ebs_volumes

for i in $(cat /tmp/ebs_volumes); do
   echo $i;
   ec2-create-snapshot $i;
done

3
오래된 스냅 샷을 어떻게 정리합니까?
rmalayter

1
영감 +1 (저는 비슷한 목적을 위해 스크립트를 작성했습니다 : serverfault.com/questions/275245/… )
Jonik

0

다음은 VPC 내의 모든 ec2 인스턴스에 대한 AMI 백업을 생성하는 스크립트입니다.

#!/bin/bash
#Script to Automate AMI backup

echo "----------------------------------\n   `date`   \n----------------------------------"

aws ec2 describe-instances --filters Name=vpc-id,Values=vpc-xxx |   awk '{ print $8 }' | sort -n   | grep  "i-" > /tmp/instanceid.txt

echo "Starting the Daily AMI creation: "

 #To create AMI from instance-id 

for i in $(cat /tmp/instanceid.txt); do
        echo "Creating AMI for Instance id $i ......."


echo "instance-`date +%d%b%y`-$i" > /tmp/aminame.txt

aws ec2 create-image --instance-id $i --name "`cat /tmp/aminame.txt`" --description "This is created by ami-backup.sh" --no-reboot | grep -ir ami | awk '{print $4}' > /tmp/amiID.txt

echo  "AMI Name is: `cat /tmp/aminame.txt`\n"

done

echo done
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.