E is for Elastic
EC2在cloud computing裡, 提供的是最底層的IaaS. 這代表著很多比較高階的東西, 如: provisioning, monitoring, backup and disaster recovery 等等. 都要自己做, 這對development或deployment會增加許多額外負擔. 相對的, 以正面的觀點來看, 代表著EC2有最大的彈性, 能應付各種不同的需求. 也能用不同的作法來達成目的.
A picture is worth a thousand words
前一陣子我寫了一篇Recovery of EBS-boot EC2 Instances, 提供一種回復EBS-boot 的EC2 instances作法. 但是之前在alestic有看到一篇Move a Running EBS Boot Instance to New Hardware on Amazon EC2, 其實是作一樣的事. 不過我現在覺得Eric Hammond的作法比較好, 步驟少一點, 要清理的東西也少一些. 現在我把Eric Hammond的作法, 和我的作法用圖解比較一下. (啊! 好難得畫圖啊! 雖然本blog以圖少著稱, 但是偶爾還是得花點時間, 畫一些讓人比較易懂的圖咩!) 我先把我的作法用圖解講一次, 可以和上一篇的文字對照著看.
My approach
(a) 一開始, 有之前做好的一個EBS-boot image, (EBS-boot image的作法可以看creating EBS-backed AMIs from running instances 這篇) 我把它叫snap-1
, 把snap-1
註冊為AMI時, 得到AMI ID : ami-1
. 然後我用ami-1
來開新的EC2 instances. EC2 會依據snap-1
開一個新的EBS Volume, Volume ID是vol-1
, 然後用vol-1
作為boot partition, 開了一個新的EC2 instance, Instance ID 是i-1
(b) 有一天, 很不幸的, i-1
掛了. 但是vol-1
上的資料還在!!
(c) 我的作法, 對vol-1
作snapshot, 得到snap-2
, 也把vol-1
從i-1
detach 掉.
(d) 然後用snap-2
作AMI, 得到ami-2
, 然後用ami-2
開新的EC2 instance, 新的instance的volume 是vol-2
(e) 最後, 把i-1
, ami-1
, snap-1
, vol-1
都給清乾淨, 免得浪費錢咩!
Eric’s approach
(a), (b)流程和上面一樣, 但是從(c)開始, 就不一樣了咩!
(c) 直接用舊的AMI(ami-1
, 用的是舊的snapshot: snap-1
) 開一個新的EC2 instance, 得到Instance ID: i-2
, Volume ID: vol-2
.
(d) 把i-2
先stop一下, 然後把vol-2
從i-2
detach掉. 然後把原來的vol-1
attach回i-2
. 最後再把i-2
重新start就可以了!
(e) 要清的東西只有vol-2
, i-1
!
Conclusion
好啦, 我承認Eric的作法確實比較好啦! 步驟較簡單, 要清理的東西也比較少. 所以我以後也會改用Eric的作法咩!