淺談 AWS EC2 Instance store 資料儲存

EC2 Instance 應該是每個接觸AWS服務的人都會碰到的。所謂的instance其實就是一台虛擬機。要開啟一個instance, 你必須先挑選一個AMI(Amazon Machine Image),  AMI 包含了一些預先設定好的軟體,像是作業系統,伺服器軟體和執行服務所需的相關應用程式。

instance 就是 AMI 的一個副本,並在雲端環境上執行的一台虛擬機

這邊我們借用AWS的圖例來讓大家了解。

architecture_ami_instance
architecture of ami and instance

主機當然就會有儲存資料的需求,AWS針對不同的應用情境,提供了不同的資料儲存方式。你可以針對你的需求來單獨使用,或是結合運用。包含了:

這邊我們還是借用aws的圖來讓大家更加清楚不同資料儲存方式之間的差異。

storage architecture

首先是 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來建立你的虛擬機。

 

 

 

什麼是 EC2

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html

以下是從官網文件翻譯過來的。EC2 提供下列功能

  • Instance, 虛擬的運行環境(就是個虛擬機,像你在自己電腦中用virtualbox開啟一個機器一樣)
  • AMI, 預先設定好的 instance 樣板, 包含了運行主機所需要的作業系統和相關的軟體。
  • Instance Type, 多種 CPU, 記憶體,儲存空間和網路能力可供你選擇。
  • 使用Key Pair來安全地登入你的主機(AWS儲存公開金鑰,而你安全地儲存私密金鑰)
  • Instance store volumes, 暫時的資料儲存空間,當你stop或terminate你的instance時,這些資料都會被移除。
  • Regions 和 Availability Zone, 提供多個實體的地點來運行你的資源,像是instance和EBS Volumes
  • Security Group, 防火牆,讓你可以指定什麼樣的協定, ip和port可以連到你的主機
  • Elastice IP, 指定實體ip來給動態的雲端運算
  • Tags, 你可以用來建立並指定給你的EC2資源
  •  Virtual private cloud, 可以建立內網環境,來和其他的網路隔離。

以上這些功能和名詞都是很常見的,現在不了解沒關係,之後你一定會常常看到他們的。其中我覺得最重要的是 Instance Store Volume的特性,必須要牢記在心,避免出現像這樣的慘況。