Amazon AWS——免費的午餐

先說結論,雲計算提供的服務種類繁多,甚至超過普通人電腦裡的軟件數目,想上雲的企業要有心理準備,對技術人員要求不是更低了而是更高,費用如果沒算好,不是更低而是更高

Amazon AWS——免費的午餐

眾技術所周知,Amazon AWS 提供了“新用戶憑有效信用卡免費試用一年”的活動,至今沒有給出截止日期。雖說免費的午餐很誘人,而且由於信用卡的門檻,也避免了一部分的濫用,但是要安心吃好這頓飯,沒有第一個吃螃蟹的人提供一點經驗,多多少少心裡還是會沒底的。那麼,打算和大家分享一下這段時間使用 AWS 的一些經驗,希望有所幫助。

預警:本文不適合純小白(比如不知道啥是 AWS 的人)

AWS 和傳統的 VPS 不太一樣(這不是廢話麼(╯‵□′)╯︵┻━┻),因為把它當普通 VPS 一樣直接在 EC2 上安裝 WDCP 之類的管理後臺,然後建站什麼的就很容易超出免費套餐額度,從而被扣費。So, 請允許我先祭出免費使用 AWS 的終極奧義:官方優惠信息介紹 。所有的免費額度請務必以該頁面的說明為準,其他地方的信息很可能已經過時。

於是我要做的就是稍稍給大家解讀一下了。接下來進入正題:

免費資源那麼多,為何只用 EC2?

很多人可能只是把 AWS 當做免費一年的 VPS 使用,但是這往往只利用到了 AWS 中的 EC2。要知道 AWS 可是包含了 EC2, S3, RDS, CloudFront 等32種服務(現在不只,每隔一段時間就會有新服務上線)在內的豪華套餐啊,只用到其中的 EC2 豈不是太不符合社會主義節約型社會的建設了?

有人可能會說,我的網站沒什麼訪問量,有一個 VPS 夠用。少年你圖樣圖森破了好麼!當初我也是這樣想的,可是頭一個月就收了我0.45刀,摺合人民幣2.754元啊,說好的免費一年呢?!來來來,看看官方怎麼說的:

AWS 免費套餐包括為期一年每月 750 小時 Linux 和 Windows 微型實例的試用時間。

注意,是“和”,也就是說你可以同時運行一個 Linux 微型實例和一個 Windows 微型實例,各免費750小時。而且一個月最多也就24×31=744h,時間是肯定不用擔心了。但是別高興得太早。要用免費的你必須用微型實例,而微型實例只能使用以 EBS 作為存儲的系統鏡像;再看一下 EBS 的免費額度,區區30GB——鑑於所有 Windows 鏡像要求最小存儲容量為30GB,要同時再運行一個 Linux 實例就得為 EBS 埋單了。所以歸根到底,Amazon只允許你同時運行一個微型實例。如果你想先用一會 Linux,再換 Windows 玩玩,這樣也是可以的,只要保證運行新的實例之前已經徹底關閉(Terminate)舊的實例。所以別誤會亞馬遜是XX這一類小氣貨色,更何況 EC2 只是 AWS 免費套餐的(三十六分之)一部分,其他免費資源用起來啊!

EBS 好東西,天價 I/O 是問題

其實我那0.45刀的費用就出自 EBS 的 I/O 上。根據官方信息,AWS 免費套餐包括

30 GB 的 Amazon Elastic Block Storage (EBS),加上 2 百萬個 I/O 和 1 GB 的快照存儲

快照存儲我還沒研究,反正像我這種小站是夠用的。30GB的 EBS 其實也夠用,關鍵就在於 I/O 上。 I/O 簡單說就是“磁盤讀寫操作”,不論讀還是寫都算數,而且讀寫的東西太大的話,還會分作幾個小的區塊來讀寫。像我之前只用 EC2,把它當 VPS, 靜態文件、數據庫什麼的都在上面讀寫,I/O 一下就上去了。要知道,超過 200萬 以後就按 0.12刀/ 100萬I/O (不同數據中心的價格不一樣)的價格給你算賬了!我一個月居然超了約 375萬 I/O ,最後收取 0.45刀的費用 (┬_┬) 加上免費的200萬,我一個月就 575萬 I/O 啊,這數據你能忍?

路人甲:廢話怎麼這麼多,到底怎麼降低 I/O 你大爺的倒是說啊!

這位客官莫急!據說方法之一就是使用緩存技術,不過我昨天鼓搗了一天還是不知道怎麼弄… 呃,前面這句話你們就當沒看到吧= = 提示:AWS 支持 Memcached 和 Redis 緩存引擎,而 AWS 免費套餐包括:

750 小時的 Amazon ElastiCache 服務時間,足夠整月持續運行微緩存節點。

所以還沒用上這個服務的趕緊去開啟吧,不要錢~~ 不過記得要和 EC2 一樣使用“微型”實例,不然扣費!

S3真高端,靜態資源往裡搬

降低 I/O 方法二,減少靜態資源的讀寫。方法很簡單啦,儘可能多地把靜態資源放別處去。比如你有 BAE 開發者帳號,那就存點東西在 BCS 裡;你有七牛帳號,就把 (WordPress 的)圖片、附件什麼的同步到那邊去;你買了又拍雲,閒置在那做擺設不成?你要是啥都沒有,也可以想辦法把 (WordPress) 要用到的一些 js 文件(比如 jQuery)、css 文件(比如 Bootstrap)替換成 CDN 公共庫的,比如度孃的,數字的,以及谷歌的,能省一點是一點,對吧?當然別忘了,AWS 免費套餐包括

5 GB 的 Amazon S3 標準存儲,20 000 個獲取請求以及 2 000 放入請求。

所以有什麼較大的附件就可以放在 S3 裡面,因為容量大,卻又限制獲取次數,而對流量則沒有限制。只放幾張圖片豈不虧大了?但是這又涉及到另一個問題了,注意防盜鏈,不然就可能像某位老外一樣,一個月10000刀的賬單寄到家了。

其實 S3 對存儲內容的控制功能十分強大,比國內一些同類產品(比如 BCS)強大得多,你甚至可以把一個靜態網站直接託管到 S3 上面。建議自己去體驗一下,我就不多說了~

RDS也幫忙,I/O 不再飛快漲

降低 I/O 方法三,“取消”數據庫讀寫。既然是動態站,沒有數據庫讀寫是不可能的。只是,你的數據庫完全不該像我一樣放在 EC2 上,而應該放在 RDS 上。看看AWS免費套餐包括什麼:

  • 750 小時的 Amazon RDS 單一可用區域微型數據庫實例使用時間,此類型數據庫上運行 MySQL、Oracle BYOL 或 SQL Server(運行 SQL Server Express Edition),這足夠整月持續運行數據庫實例
  • 20 GB 數據庫存儲
  • 1 000 萬 I/O
  • 20 GB 備份存儲,用於數據庫自動備份和用戶發起的數據庫快照

懂了吧?或許一開始我用 WDCP 直接生成站點就是個錯誤,因為數據庫是放在 EC2 上的,而這將消耗不少的 I/O 。可是 RDS 有1000萬 I/O 啊,這還不夠用?唯一需要你注意的就是加了顏色的字了,請務必遵守這些限制,不然就會和我一樣杯具,運行一個實例,僅僅一天就被收1.4 刀,真是欲哭無淚了QAQ

Amazon AWS——免費的午餐

看到高亮區域了麼?看不清就點一下圖片看原圖,一定要記住這些雷區啊!這是我用繩命實踐出來的寶貴經驗,請各位同志務必珍惜。不過也大可不必被我嚇到,畢竟我是摸著石頭過河,辛酸史是必須有的。如果你看了上圖還是不知道該怎麼辦,請看下圖,關於啟用數據庫實例(Step 3)時的注意事項:

Amazon AWS——免費的午餐

  1. 一定要選擇 db.t1.micro ,默認給你選的是 large ,那個賊費錢!
  2. 一定要選擇 No,默認給你選的是 Yes,於是就有了我賬單上的 Multi-AZ 字樣... 選 No 以後可以無視右邊的黃色感嘆號。要高可用性還是要免費,自己掂量→_→
  3. 數據庫容量。建議填一個不超過 AWS免費套餐中 “20 GB 數據庫存儲” 的數字,其實5GB就夠用了吧...
  4. 識別名。只要能讓你自己搞清楚這是個什麼數據庫就行,隨便填。不是數據庫名!
  5. 數據庫用戶名。2-16個字符
  6. 數據庫用戶密碼,至少8個字符

填好進入第四步然後填一下數據庫名,其他默認就差不多了,一路點“下一步”吧。最後等個5分鐘左右,等 Status 那一欄變成綠色的Available以後,就可以點擊一下看到你的 Endpoint 了。那個就是你的數據庫主機地址。如果是新安裝 WordPress 什麼的,主機地址不是填 localhost,而是填這裡的這個地址哦~ 可以不加:3306端口號。

至於怎麼管理,由於沒有提供 phpmyadmin 這樣的圖形界面,不妨使用 Navicat 這款軟件,應該很簡單,多多探索吧~ 使用這個軟件的時候,主機地址就要填一開始的 Endpoint 了,而不是 Private DNS。

Amazon AWS——免費的午餐

免費服務很多,其他不再多說

至此,我只希望從今天起,我的 I/O 可以降下來→_→

而你,勇敢的少年,如果對於 AWS 的其他免費服務還有興趣,不妨自己實踐探索。畢竟是按小時計費,隨便玩玩也不會扣很多錢的,只要你記得徹底關閉(Terminate)不再使用的實例。

更新:

貼一下我現在使用的實例的參數吧,其實我自己也只用到 AWS 中的 EC2 和 RDS 而已,連 S3 都沒用上...

EC2 控制面板條目數據EC2 Region(地區)Asia Pacific (Singapore)EC2 Instance Type(實例類型)t1.microEC2 Availability Zone(數據中心)ap-southeast-1bEBS Capacity(容量)10GiBEBS Zone(數據中心)ap-southeast-1b

RDS 控制面板條目數據Multi-AZ(多數據中心容災)NoClass(實例類型)db.t1.microStorage(容量)20GBEngine(數據庫類型)MySQLZone(數據中心)ap-southeast-1b

要切換不同的控制面板,請點擊左上角的Services,然後在一大堆列表裡找你要的服務。

鑑於留言中有朋友詢問最低月費用,感覺我用的已經是最低配置了,如果全部收費的話,Linux 實例按每個月(按31天不間斷使用算)2000訪客,每個訪客平均查看3個頁面,每個頁面30個請求,數據庫、EC2 均不作備份來計算,費用大概要:

  • EC2實例:0.02x24x31=14.88
  • EBS存儲:0.08x10=0.8
  • EBS I/O:0.08x2000x3x30/1000000=0.0144
  • RDS實例:0.035x24x31=26.04
  • RDS存儲:0.11x10=1.1
  • RDS I/O:0.11x2000x3x30/1000000=0.0198
  • 總費用:14.88+0.8+0.0144+26.04+1.1+0.0198=42.8542,單位:美刀
  • 結論:略貴

或者你可以試試不用 RDS,全靠 EBS 進行 I/O 操作,然後算算費用是多少,應該可以便宜不少。另外,EBS 和 RDS 存儲可以相應降低一些,畢竟像我這樣的小網站用不了那麼多空間。當然,也可以到官方計算工具自行計算~


分享到:


相關文章: