2009年12月17日 星期四

Amazon EC2 使用教學 - Bundle Instance 系統備份

既然寫了 Amazon EC2 使用教學 - 以 EBS Volumes & Snapshots 增加和管理永久的硬碟空間 備份資料的方式,接著就要介紹一下備份系統。


EC2 機器關機後,除了資料不會儲存外,對系統的更動也不會保留,因此,辛苦設定好的系統環境必須要有備份的機制,這就是 Bundle 的服務。這個服務能夠讓你先專心設定一台機器,接著安置好環境後,可以在用 Create Instance 的方式,一次建立多台機器,有點類似以前用 Norton Ghost  安裝大量機器的概念(主要建立在硬體規格一樣),另外,Clonezilla 再生龍 是免費的軟體,也可以負責這類服務 。


在此以 Linux 機器作為範例,而 Windows 部分據說可以透過 Web UI 的 Bundle Instance (S3 AMI) 製作,但這部分我沒試。另外,一樣可以用指令來備份,有需要在參考這篇 Windows > Bundling an AMI


 


EC2 Linux 機器


備份 Linux 系統需要使用 EC2 提供的 tools ,過程較為繁瑣。在 EC2 上的 Linux 要備份系統前,必須先準備一下 Amazon Web Services > Your Account > Security Credentials > X.509 Certificate ,這個用在使用 ec2 tools 要做認證用的,類似確認使用者的身份,需要有 cert-*.pem 跟 pk-*.pem 兩個檔案囉,若真的忘記只好再去申請一組啦,我操作的機器: Getting Started on Fedora Core 8 (AMI Id: ami-3c47a355) - Minimal Fedora Core 8, 32-bit architecture, Apache 2.0, and Amazon EC2 AMI Tools ,更多詳細資訊請參考 Linux and UNIX > Bundling an AMI


X.509 Certificate


接著,把這 cert-*.pem 跟 pk-*.pem 從本機端複製到 EC2 上要備份系統的 Linux 機器,而此台機器假設是使用 demo.pem 作為認證的,


My Desktop $ scp -i /path/demo.pem /path/cert-*.pem /path/pk-*.pem root@ec2-##-##-##-##.compute-1.amazonaws.com:/mnt


登入 EC2 要備份的 Linux 機器


My Desktop $ ssh -i /path/demo.pem root@ec2-##-##-##-##.compute-1.amazonaws.com


進行系統備份,需留意 -u  接的是一組數字組成的 AWS ID 可以在 AWS > Your Account > Security Credentials 查看或是在 AWS Management Console 挑一台機器看 Owner 也行,而 -r 接的是系統的資訊 32-bit  ,此過程需要一些時間


EC2 $ cd /mnt
EC2 $ ec2-bundle-vol -d /mnt -k /mnt/pk-*.pem -c /mnt/cert-*-.pem -u ############ -r i386


EC2-Bundle-Linux ec2-bundle-vol 01 @ 20091214


........


EC2-Bundle-Linux ec2-bundle-vol 02 @ 20091214


接著將備份好的系統上傳至 S3,其中 -b 接得就是你要擺在 s3 的那個目錄裡,若該目錄不存在則會自動建立,而 -a 跟 -s 分是認證使用者的 Access Key ID 和 Secret Access Key
,可以在 Amazon Web Services > Your Account > Security Credentials > Access Keys 查到。


EC2 $ ec2-upload-bundle -b your-s3-bucket -m /mnt/image.manifest.xml -a **** -s ****


最後,則是註冊這個備份系統,有兩種方式可以作,一種是一樣透過 EC2 tools 中的 ec2-register ,另一種則是在 AWS Management Console > AMIs > Register New AMI 上註冊。使用 EC2 tools 則需要在自己的機器上安裝 EC2 tools ,並且要有 JAVA 運作環境,因此,用 AWS Management Console 可以省下很多事囉。


使用 ec2-register


My Desktop $ ec2-register -K /path/pk-*.pem -C /path/cert-*.pem your-s3-bucket/image.manifest.xml


使用 AWS Management Console


EC2-Register New AMI @ 20091214


 


備份完系統後,使用上就在 AWS Management Console > Instance > Launch Instance 時,可以切換到 My AMIs 上,就可以看到自己備份好的系統,剩下的流程就像建立新機器一樣。


EC2-Bundle-Windows 05 @ 20091214


相關問題



  • Client.InvalidInstanceType: Instance does not support bundling

    • 一開始在自己的桌機上(Unbuntu 9.04 desktop i386),備份 EC2 上的 Linux 機器,一直在試 ec2-bundle-instance ,但只會有這個訊息,最後發現應該是只適用在備份 Windows 機器啦

    • 參考資訊:[ec2-beta] Bundling image?



  • The specified bucket is not S3 v2 safe (see S3 documentation for details)

    • 當要在 EC2 Linux 機器上打算上傳資料至 Amazon S3 時,會蹦出這個訊息,主要是我使用的 bucket name 包含底線 "_",最後我換成 "-",

    • 詳細資訊:Bucket Restrictions and Limitations




1 則留言:

  1. thanks..........
    最近的task 得survey 市場上的IAAS平台

    如果有不懂處再請教您!

    請問你對分散式運算結合雲端 儲存 跟平行運算是否有研究呢?
    弄了一個eucalyptus 的環境,可是不太清楚我的SERVER OR APP 該怎麼運用雲端的資源,目前只能像AMAZON這樣 配置instance 開instance
    很想知道該怎麼透過這些instances 進行大規模運算


    版主回覆:(12/10/2009 08:22:01 AM)


    喔~ 我只玩過 Hadoop 而已, 且已經很久沒接觸了 :p
    市面上有很多open source提供雲端的儲存、運算
    大概必須要有資訊相關背景才比較好了解
    不是三言兩語可以道盡的 orz
    你需要花點時間找找資料囉

    回覆刪除