AWS EC2 RI(預留實例) 付費優(yōu)化

AWS EC2 預留實例(Reserved Instance, 下文統(tǒng)一簡稱 RI) 簡單來說就是虛擬機包年, 一次性繳納一年的費用折扣非常誘人, 比按需啟動(也就是按小時計費) 便宜非常多, 但如何知道該買多少個 RI 呢? 尤其公司開始增長, 數(shù)據(jù)開發(fā)人員經(jīng)常會按需啟動一些計算集群的情況下, 如何優(yōu)化購買策略達到節(jié)省開支的目的?
找了一圈也沒有成熟的方案(有知道的可以隨時告訴我, 感激不盡), 利用一些時間自己寫了一個 '基于使用歷史優(yōu)化 RI 購買' 的方案, 簡單來說就是

讓開發(fā)可勁兒造, 根據(jù)一段時間的使用歷史, 后續(xù)去購買 RI

先說說 AWS 現(xiàn)狀

  1. 每個實例按小時計費, 不足一小時按照一小時計費 (注意是每個實例, 比如 t2.micro 類型實例在一個小時內(nèi)啟動兩個(啟動一個, terminate 后再啟動一個, 再 terminate 要算兩個小時)
  1. 每個啟動的 EC2 實例都有唯一的一個ID: instance id
  2. 虛擬機啟動'慢', 基本上啟動一個節(jié)點要1分鐘+
  3. 所有的 EC2 信息可以通過 API 很容易拿到
  4. RI 針對的是對應的 AvailabilityZone 的相應類型, 比如在 cn-north-1a 購買的t2.micro RI 對 cn-north-1b 的 t2.micro 實例沒有用

第一種思路: 官方賬單

可以在賬戶中設置導出賬單, 指定一個 S3 bucket , 每個月會以 csv 文件的方式導出詳細賬單. 推薦大家都開啟這個功能. 但這個賬單沒有官方規(guī)范, 貌似一個月才出一次, 不能等到 on demand 付費了一個月才想起買RI 很不劃算.

第二種思路: 自行記錄是否買過 RI

單獨寫 Excel 也好, 或者在 EC2 上使用 tag 方式標記也好, 但這個終究是靠人力, 忘記標記/標記錯誤都是事兒. 如果使用tag 的方式, 如果這個 EC2 實例被 terminate 替換了(云計算的優(yōu)勢不就是玩兒壞了重來快么 >;<) 導致 tag 丟失等問題也是麻煩. 靠人力辦事, 不推薦

第三種思路: 根據(jù)使用歷史日志, 優(yōu)化購買 RI

實現(xiàn)很簡單, 跟 把大象放進冰箱 一樣, 僅需3步:

  1. 每隔2分鐘 dump 正在運行的 EC2 實例的日志, 扔進數(shù)據(jù)倉庫.
  1. 每隔幾天運行分析腳本, 生成帶圖的 Excel
  2. 瞅一眼 Excel, 看哪種類型的 EC2 實例需要買 RI 趕緊買

1. dump 日志

使用 aws ec2 describe-instances 很方便獲取所有在運行的 EC2 實例信息, JSON 格式非常容易解析. 重要的字段有如下幾個:

  • InstanceId, 全局唯一ID
  • State, 實例狀態(tài), 只有 running 的才會被計費, 需要過濾一下
  • AvailabilityZone, az 信息, 包含 aws region 信息.
  • LaunchTime, 啟動時間
  • Tags, 實例上的標簽, 后續(xù)可以根據(jù) Tag 按部門/系統(tǒng)分析使用狀況
  • dump_time, 本次 dump 日志的時間. 這個字段 JSON 中沒有, 相當于給本次 dump 記錄一個時間

解析后直接扔數(shù)據(jù)倉庫. 剛剛不是說過 AWS EC2 啟動慢, 所以每隔2分鐘dump一次所有運行時的 EC2 日志, 一定不會錯過任何啟動的 EC2 節(jié)點. 其實推薦將整個 JSON 都存儲下來, 后續(xù)可以有其他用處.
為何采用 dump 日志的方式, 比如 cloudtrail 也可以獲取相關數(shù)據(jù)?

因為簡單! 幾行代碼就搞定, 數(shù)據(jù)倉庫是現(xiàn)成兒的. 扔進去就可以用 SQL 分析.

2. 分析報告

寫一個腳本, 根據(jù)時間范圍分析日志, 獲取每小時每個類型的 EC2 實例運行個數(shù), 以及 已經(jīng)購買的 AWS RI 現(xiàn)狀, 計算差值并畫圖.


help_info.png

比如這個 Query:

SELECT concat(substr(dump_time, 1, 13), ':00:00') AS instance_hour,
       az,
       instance_type,
       count(DISTINCT instance_id) AS cnt
FROM testdb.aws_instance_log
WHERE data_date BETWEEN '2016-02-11' AND '2016-02-15'
  AND json_extract_scalar(raw_json, '$.State.Name') = 'running'
GROUP BY concat(substr(dump_time, 1, 13), ':00:00'),
         instance_type,
         az
ORDER BY az,
         instance_type,
         instance_hour

是計算 2016-02-11 至 2016-02-15 日之間的實例使用狀況. 然后根據(jù)結(jié)果生成 Excel 并畫一個三條線的線圖: 一條是運行的實例數(shù)量, 一條是已經(jīng)購買的該類型的實例數(shù)量, 還有一條就是需要買的 RI

3. 購買 RI

別搞錯 AvailabilityZone 就好了.

一點想法

由于 RI 是針對某個 AvailabilityZone 的某個類型的節(jié)點, 因此, 盡量使用少類型的 EC2 節(jié)點有時可以節(jié)省成本. 比如A系統(tǒng)需要 c3.4xlarge 類型節(jié)點10臺, B 系統(tǒng)需要20臺 c3.2xlarge, 如果有可能, 是不是可以都用一個類型的節(jié)點, 購買同樣的 RI, 等到系統(tǒng) resize了還可以空余 RI 給其他系統(tǒng). 針對 AvailabilityZone, 如果不需要高可用, 盡量在同一個 AvailabilityZone, 比如計算密集型的系統(tǒng).

總結(jié)

云計算這種形式的確帶來了很大效率的提升, 但至于如何節(jié)省成本, 還是要看如何做容量規(guī)劃, 省錢還是要靠小算盤.

容易擴容也意味著容易浪費

比如, 之前物理機/租機房時代, 公司上架服務器慢, 做數(shù)據(jù)開發(fā)臨時跑大計算想擴容有錢都花不出去, 只能在現(xiàn)有集群上慢慢等, 慢慢優(yōu)化; 現(xiàn)在用了 AWS, 隨隨便便加計算資源只要計算集群做得好, 非常容易, 如果不做限制, 大家都想快出結(jié)果因此 on demand 啟動大量節(jié)點計算, 雖說節(jié)省了時間, 但由于隨機性太大無法購買 RI 節(jié)省成本. 總體來說還是有可能浪費.

ROI 啊.

-- EOF --

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末录择,一起剝皮案震驚了整個濱河市巩那,隨后出現(xiàn)的幾起案子鸟顺,更是在濱河造成了極大的恐慌,老刑警劉巖懦砂,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異贵白,居然都是意外死亡抚芦,警方通過查閱死者的電腦和手機倍谜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叉抡,“玉大人尔崔,你說我怎么就攤上這事∪烀瘢” “怎么了季春?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長消返。 經(jīng)常有香客問我载弄,道長,這世上最難降的妖魔是什么撵颊? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任宇攻,我火速辦了婚禮,結(jié)果婚禮上倡勇,老公的妹妹穿的比我還像新娘逞刷。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布夸浅。 她就那樣靜靜地躺著仑最,像睡著了一般。 火紅的嫁衣襯著肌膚如雪题篷。 梳的紋絲不亂的頭發(fā)上词身,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天,我揣著相機與錄音番枚,去河邊找鬼。 笑死损敷,一個胖子當著我的面吹牛葫笼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拗馒,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼路星,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了诱桂?” 一聲冷哼從身側(cè)響起洋丐,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎挥等,沒想到半個月后友绝,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡肝劲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年迁客,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辞槐。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡掷漱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出榄檬,到底是詐尸還是另有隱情卜范,我是刑警寧澤,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布鹿榜,位于F島的核電站海雪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏犬缨。R本人自食惡果不足惜喳魏,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望怀薛。 院中可真熱鬧刺彩,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至畦攘,卻和暖如春霸妹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背知押。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工叹螟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人台盯。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓罢绽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親静盅。 傳聞我的和親對象是個殘疾皇子良价,可洞房花燭夜當晚...
    茶點故事閱讀 43,492評論 2 348

推薦閱讀更多精彩內(nèi)容