EC2 Instance 應該是每個接觸AWS服務的人都會碰到的。所謂的instance其實就是一台虛擬機。要開啟一個instance, 你必須先挑選一個AMI(Amazon Machine Image), AMI 包含了一些預先設定好的軟體,像是作業系統,伺服器軟體和執行服務所需的相關應用程式。
instance 就是 AMI 的一個副本,並在雲端環境上執行的一台虛擬機
這邊我們借用AWS的圖例來讓大家了解。
主機當然就會有儲存資料的需求,AWS針對不同的應用情境,提供了不同的資料儲存方式。你可以針對你的需求來單獨使用,或是結合運用。包含了:
- Amazon Elastic Block Store (Amazon EBS)
- Amazon EC2 Instance Store
- Amazon Simple Storage Service (Amazon S3)
這邊我們還是借用aws的圖來讓大家更加清楚不同資料儲存方式之間的差異。
首先是 Instance Store, 他是最直覺的資料儲存方式,就像我們平常使用電腦,將資料儲存在電腦硬碟中一樣。不一樣的地方在於,如果你停止或終止instance, 那麼你儲存在instance store中的資料都會消失。也就是說儲存在instance store中的資料是暫時的,適合用來儲存快取、緩存或一些暫時性的資料。所以instance store 又稱 ephemeral store (短暫的)。
或許你會覺得為什麼要這樣設計,把我的資料永久儲存在instance store中不行嗎?這對許多過去自架主機或是租用shared hosting、vps一台主機搞定全部的人可能一時頭腦轉不過來。 當你在使用AWS時,務必要了解他背後設計的理念,才有辦法設計出符合AWS架構特性的服務,也才有辦法在系統出錯時對症下藥。
在雲端的環境下,要建置一個高可用性的服務,有個前提你必須要認知到的就是,主機是會壞的,而壞掉的主機我們可以隨意開啟另一台主機來取代。或是在流量突然湧進時,我們可以開啟更多的instance來服務,在流量減少時,關閉instance來減少不必要的支出。因此將資料或狀態永久儲存在instance store中,將有礙系統的擴展。
前面提到,主機(instance)是會壞的,當instance因為某種原因壞掉時,我們可以開啟新的instance, 用什麼開啟呢?就是前面提到的AMI。而通常為了因應服務應用需求,instance上都會安裝特定的軟體,或是進行特殊的設定,如果不想每次都重新來一次,你可以製作自己的AMI, 之後就可以重複使用這個AMI來開啟新的instance囉(有沒有很熟悉?就跟以前製作光碟映像檔來燒光碟很像)。在開啟instance時,除了使用aws提供的ami, 你也可以選用自己的或是其他人提供的ami來建立你的虛擬機。