2012年5月17日 星期四

ZCB for Google 價格

ZCB for Google 除了雲端位置不同,價格計算方式不同,其它功能皆和 ZCB for Amazon 一樣。

Google Cloud Storage 的費用計算是以固定空間每年繳交費用,讓您更容易預估預算。價格如下:
50 GB $75(約 TWD$2235)/年
100 GB $100(約 TWD$2979)/年
1000 GB $1,000(約 TWD$29799)/年
10000 GB $10,000(約 TWD$297990)/年 


想要試用ZCB for Google 請至 http://network.zmanda.com/index_zcbg.php?purchase=ZCBGTrial 註冊下載。

OpenStack Swift 雲端存儲架構說明(一)

Swift 為類似 Amazon S3 的雲端存儲,有別與以往傳統儲存空間,它擁有"低成本"、"極高擴展性"等特性。OpenStack 為 Open Source 軟體,目標是在一般硬體上實作雲端,因此人人都可以自行建立雲端環境。希望藉由這篇文章,讓對雲端存儲或 Swift 不熟悉的讀者更瞭解它的優勢架構。

Swift 簡介

swift 是一個多租戶技術(multi-tenant)、擴展性高、耐久的物件儲存系統。 他的高度擴展性可以從數個節點擴展到數千個機器。水平擴展的特性預防單點故障的情況發生。swift 已被全球 Fortune 500企業、網路公司及服務提供者應用。swift 一般用於存放非結構性資料,如文件、網路內容、備份、影像和 VM 快照。swift 並非傳統 file system或 raw block 裝置。反之,它透過 REST API 操作(儲存、刪除、取得) 物件(object) 。

程式開發者可以使用 swift API 或是使用現有程式語言如 Java、 Python、Ruby、C# 所提供的library。

Swift 特色

 

Swift 可擴展性高

為了同時支援千萬個用戶,儲存系統必須可隨著應用程式的需求擴展。可用空間並不是唯一的考量,主要的關鍵在於儲存系統的並行能力,其是否能夠在資料中心內處理龐大的連線數目,以滿足應用程式的需求。Swift 可線性擴展,當系統的使用量和連線需求數目成長時,效能仍能夠維持一定的水準。需要擴展時,只需要新增儲存點(storage node) 因應儲存空間的需求; 新增伺服系點(proxy node) 因應連線需求的增加。


Swift 非常耐久

Amazon S3 號稱他們的雲端中心的耐久度為 99.999999999%。欲達到此程度的耐久度,所有儲存在Swift的物件(Object) 都以一式三份的複製,分散於叢集(cluster)中。所以每一次的資料寫入,都會確認是否也同時寫入其他兩個位置才會視為成功。

另一個特性是能夠定義"容錯區域"(failure zone)。容錯區域能讓一個叢集建立在多個實體界線上,而每個實體界線都能夠容許有個別出錯的可能。例如:一個雲端叢集建立在多個鄰近的資料中心上,如此一來可以容許一個或多可資料中心停擺/錯誤。

 Swift 為開放原始碼軟體

與其他自由軟體不同的是,早在第一次公開發佈前,Swift 早已在 Rackspace 受過大規模的嚴謹測試。身為開放原始碼軟體,Swift有幾項好處:沒有廠商壟斷問題、社群支援以及大量開發快速的 swift  工具和服務。

 

Swift 類似於 AWS S3

存取 Swift 存儲完全需要透過 REST API。他與 Amazon S3 API 和 Rackspace Cloud Files API 相類似。這代表目前使用 S3 的應用程式,也可以使用 Swift 且程式碼不需作大幅更改。

Swift 建立在業界標準的元件上

 Swift 使用成熟、標準的元件像是rsync、MD5、xfs 和 python。Swift執行在現有的 Linux 版本上,與其他使用專利、高客制化的儲存系統不同。從硬體的角度來說,由於Swift 被設計成能夠容許錯誤的特性,對於硬體的要求相較來說沒這麼高。因此,一般電腦的硬碟可使用在Swift 叢集中,而不是高價位的“企業級”硬碟。更因為可以使用一般的硬體,不會發生只能向某個存儲廠商購買硬體的情形。

 

Swift 可以部署在組織內部或是一項服務

對於某些不放心將資料除存在公有雲的公司,在內部部署 swift 可以達到降低成本、相似效能並可以完全掌控網路存取和安全性。Swift 也可以以公有存儲的形式部署為一項服務。對於想要提供類似 S3 的服務提供者可以考慮使用 swift。

 

Swift 廣受支援

swift 受到廣大的社群,包括100+個公司和1000+ 位開發者支援。




2012年5月10日 星期四

Zmanda & OpenStack

Zmanda 為 OpenStack Community 的主要成員之一。OpenStack 為美國 NASA 和 Rackspace 公司發起的免費開源專案。目標是能夠開發在一般硬體上容易建置、擴展性高的雲端系統。藉此每個人都能夠達成建立公有雲和私有雲的環境,也不需要害怕被特定廠商壟斷。目前已有超過 170 家公司投入開發此專案,而 Zmanda 所有的雲端備份產品:Amanda Enterprise 以及 Zmanda Cloud Backup 都能夠與 OpenStack Swift (雲端儲存空間) 整合。

OpenStack Swift 為建立 Object Cloud Storage 的開源軟體。適合用來儲存長期的靜態資料,例如:VM image、相片、電子郵件及備份資料。利用軟體邏輯實現資料重復性,無需實作高成本的 RAID 架構。透過水平擴展儲存裝置,無上限地增加容量。內建帳戶、操作、監控管理工具。

 我們已著手於相關研究,例如:如何以最大效能建置 OpenStack,幫助客戶建立 OpenStack Swift。將來會於OpenStack Swift 標籤公佈相關研究數據。若有 OpenStack Swift 的相關問題,歡迎來信至: swift@zmanda.com



若有興趣成為合作夥伴,請至 http://zmanda-taiwan.blogspot.com/2012/02/blog-post_9376.html 填寫資料。

2012年5月1日 星期二

Open Stack Swift Advisor: 以最佳的容量、成本和效能建立雲端儲存空間


OpenStack Swift是個開源的雲端儲存空間平台,它能夠被用來建立擴展性大以及高度穩固的雲端儲存空間。有兩個主要使用 Swift 的情形:
  • 服務供應商提供有著明確定義 RESTful HTTP API 的雲端儲存空間 - 例如公有雲。服務供應商利用 API 結和許多應用程式提供給他們的用戶。服務供應商也可以只提供一個特定的服務(例如雲端備份)而不直接提供API。
  • 一個大型公司為內部應用程式建立一個雲端儲存空間平台 - 例如私有雲。通常會這麼做的組織是因為不喜歡將自己的資料傳送給第三方的公有雲供應商,或是想要建立靠近應用程式使用者的雲端儲存空間平台。
若您計劃建立上述兩種雲端儲存空間架構,都將會面臨到以下三個問題之一:
  1. 成本最佳化:您知道將需要使用多少空間容量,也知道需要多少總輸送量讓應用程式使用雲端儲存空間。但您想要知道至少需要多少預算才能達到您預計的容量及輸送量目標。
  2. 容量最佳化:您知道將需要多少總輸送量讓應用程式使用雲端儲存空間,也知道預算。但您想要知道在符合輸送量需求及預算範圍內的最大容量。
  3. 效能最佳化:您知道將需要使用多少空間容量,也知道預算。但您想要知道如何設定以得到符合容量需求及預算範圍內最佳的輸送量。
由於雲端儲存空間建立者有數種選擇需要決定,因此解決以上任何問題是很複雜的。例如大小及多種形態的伺服器、網路連線、SLA等。
我們實驗室與數個雲端供應商做了廣泛的研究,並瞭解以上問題及進行嚴謹的分析。在此部落格系列中,我們將會提供我們的發現結果、工具描述和服務,這將會幫助您有信心建立、部署和維護您的雲端儲存空間。
定義
由於文中所使用的術語視情況有不同的解釋,下面為此部落格系列中所使用的3個主要參數的特別定義:
容量(Capacity):這指的是可使用的儲存空間容量。例如:最多可儲存在雲端的應用程式資料。一般來說,為了更好的可用性及持久性,資料會被重復在多個雲端儲存空間系統尚。所以,雲端儲存空間的原始容量應該要將資料的重複性列入考量。例如,OpenStack Swift,預設上每個 object 會重復三次。因此,總共的原始容量至少要為可用的儲存容量 3 倍以上。
效能(Performance):最大的總輸送量(MB/s 或 GB/s)要決定於雲端空間的應用程式。在此部落格中,我們將會使用術語 throughput 來代表總輸送量。
成本(Cost):這次探討中,我們將只會考量到初始的硬體購買成本以建立雲端儲存空間。我們期望所建立的雲端儲存空間能夠延續使用好幾年,但我們並不會持續攤銷花費。我們將會指出最佳的實踐來減少持續支出維護和縮放成本。
此系列部落格中,我們將交替使用術語 "node" 和 "server"。所以,"storage node" 等同於 "storage server"。

Swift Advisor 摘要介紹
Swift Advisor 是一個技術,其使用 3 個限制條件 (Capacity、Performance、Cost)之中的 2 個為輸入值,然後由輸出提供硬體推薦。特別是為 Swift Cloud 中每種類型的 node(storage和proxy) 做系統計數和設定。此推薦是根據 3 種限制條件來做最佳化: 如最小化您的預算、最大化您的輸送量或最大化您可以使用儲存容量。
在討論到 Swift Advisor 的技術細節之前,我們先來看看實際使用 Swift Advisor的方法:
為了建立最佳化的 Swift 雲端儲存空間 (Swift Cloud),使用公有運算雲端來測試出最佳化的私有雲端儲存空間看起來可能會很諷刺。我們之所以會選擇 EC2 作為 Swift Advisor 的測試環境有許多原因:
(1) EC2 提供許多種不同容量的 CPU、記憶體和 I/O 組合的 EC2 執行個體,以符合多樣的需求。所以,Swift Advisor 可以基於隨用隨付機制嘗試利用許多種 EC2 執行個體,而不是實際取得大量多樣的硬體。(2) EC2 有一個完整定義的價位系統。這也為雲端儲存空間建立者提供很好的比較點 - 他們可以透過瀏覽價位資訊並合理化長期擁有他們自己的雲端儲存空間費用。(3) 每種 EC2 執行個體規格,包含 CPU、記憶體、磁碟和網路,都定義完善。一旦以輸入限制條件建立最佳化的 Swift Cloud在 EC2 執行個體上,EC2 執行個體規格就可以有效地指引購買實體伺服器以建立一個執行在實體硬體上的 Swift Cloud。總結來說,您可以使用具有彈性的運算雲端以及 Swift Advisor 來得到您基於雲端儲存空間的實體硬體,並保留您偏好的限制條件。
Swift Advisor 的高階工作流程如下圖:
有 4 個重要階段,說明如下:
採樣階段(Sampling Phase):
我們最終的目標是建立一個的最佳化的 Swift Cloud,其包含 quantity A 的 proxy 伺服器和 quantity B 的儲存空間伺服器 - 一開始 A 和 B 為未知數,並以A:B Swift Cloud 標記。在第一階段中,我們著重在1:N 的 Performance 和 Cost 特性。我們要尋找 N 的值,使得1:N Swift Cloud 雲端的單一 throughput 成本為最低( $ 每 MB/s)。我們想要尋找每 MB/s 最低成本的 1:N Swift Cloud的原因,是為了移除 2 個建立 Swift Cloud的潛在陷阱:(1)佈建不足:proxcy 伺服器未被充分利用,且仍能夠附加更多的儲存空間伺服器來增進輸送量。(2)超過佈建 - proxcy 伺服器不堪太多儲存空間伺服器的沈重負擔。
由於選擇 storage 和 proxy node 可能的組合非常多,在多種 Swift Advisor 的階段中我們使用許多啟發式的方法來找候選組合。例如,我們不考慮效率非常低的 proxy node 設定(例如:Micro Instance)。
採樣階段後,對於每個執行在 EC2 執行個體上的 proxy 數目和 storage server的組合,數值 N 可以獲得執行 1:N Swift Cloud 的最低 $ 每 MB/s。您可以在任何可用的虛擬或實體硬體上執行採樣階段,不過採樣數目越多越好。
分析階段(Profiling Phase):
從採樣階段給予數值 N,我們的現階段目標,是分析許多 Swift Cloud的 throughput 曲線(throughput 與 Swift Cloud的大小)。而Swift Cloud 是由c 個proxy server 和 cN 個 storage server(c:cN Swift Cloud) 以及多種 c 值組合而成。請注意,每個 throughput 曲線對應到一種 proxy 和 storage server 的硬體設定組合(在這裡是指EC2 執行個體大小)。
在我們的實驗中,對於每個執行在 EC2 執行個體上的 proxy 數目和 storage server 的組合,分析是從 2:2N Swift Cloud 開始,且我們每次加倍 proxy 和 storage server 的數目(例如:4:4N, 8:8N, …)。 cN 個 storage node 中,每個 EC2 執行個體都完全相同。當c:cN Swift Cloud 的 throughput 比 throughput 的限制條件還大,就會停止分析階段。在那之後,我們會套用一個非線性或線性回歸線到一個以分析的throughput 上以操作一個有著X 值為c 和 Y 值為 throughput 的 throughput 曲線。

分析階段的輸出則是一群c:cN Swift Cloud 的 throughput 曲線,裡面每個曲線都對應到一種執行在 EC2 執行個體上的 proxy 數目和 storage server的組合。

最佳化階段(Optimizing Phase):
利用分析階段獲得的 throughput 曲線以及兩個輸入限制條件,最佳化階段是我們找出最佳的 Swift Cloud 的第三個參數。為此,我們操作 throughput 曲線的限制條件和跨多個曲線之間尋找最佳值。例如,我們試著以最大 cost 來最佳化 capacity 並最小化 throughput 需求: 我們將輸入最小需要的 throughput 到每個 throughput 曲線,然後找到對應的 c 值,再去除超過硬體 cost 的 throughput 曲線區段。在剩下的曲線中,我們將會選擇一條基於 cN * 儲存空間容量的最大者。
驗證和修正階段(Validation & Refinement Phase):
驗證階段透過工作負荷測試確認是否最佳的 Swift Cloud 真的符合throughput 限制條件。若是有一限制條件測試失敗,那麼 Swift Advisor 會進入修正階段。修正階段會從測試中得到平均的 throughtput,然後送到分析階段。分析階段新增此資訊到分析資料中以修正 throughput 曲線。之後,我們使用已修正的throuput 曲線作為輸入來重復執行最佳化階段。 
以上四個階段為 Swift Advisor 的核心。然而,有一些其他重要問題需要討論:(1)負載平衡器(load balacer)的選擇 (2)當雲端操作員終於要搬移最佳的 Swift cloud 到實體伺服器時,EC2 執行個體和實體硬體的對應 (3) SLA 限制條件。我們將在未來部落格中發表這些和其它關於建立最佳的雲端儲存空間問題。
些採樣觀察
此部落格中,我們會展示一些採樣階段所選用的系統設定結果。在未來的部落格,我們將會發佈分析階段和最佳化階段的結果。
對於我們的採樣階段,我們假設以下的伺服器可用作 proxy node: EC2 Large(Large)、EC2 Extra Large(XL)、EC2 Extra Large CPU-high(CPU XL)和EC2 Quadruple Extra Large(Quad)。而候選的 storage node 為:EC2 Micro(Micro)、EC2 Small(Small) 和 EC2 Medium(Medium)。因此,總共有 4*3=12個 proxy 和 storage node的組合。我們需要找到數值 N,其可以獲得執行 1:N Swift Cloud 的最低 $ 每 MB/s。
我們起始以 N=5為每個組合採樣,然後增加此數值直到 1:
我們使用 Amanda Enterprise 作為我們的應用程式來備份一個 10G 的資料檔案到 1:N Swift Cloud。Amanda Enterprise 執行在EC2 Quad 執行個體以確保 Amanda Enterprise 伺服器能夠在任何情況下完全載入 1:N Swift Cloud。在此分析之中,我們假設雲端建立者想要基於備份操作建立最佳化的雲端儲存空間。當建立一個生產用的雲端儲存空間,Swift Advisor 的使用者應該根據期望的多種應用程式變更其工作負載。
首先我們來分析不同的 N 值在每個 EC2 執行個體大小的 proxy 和 storage node 組合的所產生的 throughput。
(1)EC2 Large 執行個體上的 proxy node 與 3 種大小 storage node 的三條曲線:
基於 EC2 Large 執行個體上的 Proxy Node 觀察:
  1. 基於 Micro 執行個體上的 Storage node: Throughput 在當 # storage node=30 時停止增加
  2. 基於 Small 執行個體上的 Storage node: Throughput 在當 # storage node=10 時停止增加 
  3. 基於 Medium 執行個體上的 Storage node: Throughput 在當 # storage node=5 時停止增加
(2)執行在 EC2 XL 執行個體上的 proxy node:
基於 EC2 XL 執行個體上的 Proxy Node 觀察:
  1. 基於 Micro 執行個體上的 Storage node: 當 # storage node=30 時,throughput 停止增加
  2. 基於 Small 執行個體上的 Storage node: 當 # storage node=10 時,throughput 停止增加 
  3. 基於 Medium 執行個體上的 Storage node: 當 # storage node=5 時,throughput 停止增加
(3)執行在 EC2 CPU XL 執行個體上的 proxy node:
基於 EC2 CPU XL 執行個體上的 Proxy Node 觀察:
  1. 基於 Micro 執行個體上的 Storage node: 當 # storage node=30 時,throughput 停止增加
  2. 基於 Small 執行個體上的 Storage node: 當 # storage node=10 時,throughput 停止增加 
  3. 基於 Medium 執行個體上的 Storage node: 當 # storage node=5 時,throughput 停止增加
(4)執行在 EC2 Quad 執行個體上的 proxy node:
基於 EC2 Quad 執行個體上的 Proxy Node 觀察:
  1. 基於 Micro 執行個體上的 Storage node: 當 # storage node=60 時,throughput 停止增加
  2. 基於 Small 執行個體上的 Storage node: 當 # storage node=20 時,throughput 停止增加 
  3. 基於 Medium 執行個體上的 Storage node: 當 # storage node=10 時,throughput 停止增加
從上面圖表中,我們已經可以得出一些結論:例如,如果您只有與 EC2 Micro 執行個體相等的 storage node,且您希望 storage node的數量能夠超過 30 個(每個 proxy node),您應該選擇至少與 EC2 Quad 執行個體相等的 proxy node。
我們以不同的視角分析圖表 (1)-(4):修正 storage node 的 EC2 執行個體大小以及改變 proxy node 的 EC2 執行個體大小。
(5)EC2 Micro執行個體上的 storage node 與 4 種 EC2 執行個體大小上的 proxy node 的4 條曲線:
基於 EC2 Micro 執行個體上的 Storage Node 觀察:
  1. 基於 Large 執行個體上的 Proxy node: 當 # storage node=30 時,throughput 停止增加
  2. 基於 XL 執行個體上的 Proxy node: 當 # storage node=30 時,throughput 停止增加
  3. 基於 CPU XL 執行個體上的 Proxy node: 當 # storage node=30 時,throughput 停止增加
  4. 基於 Quad 執行個體上的 Proxy node: 當 # storage node=60 時,throughput 停止增加
從以上圖表中,我們總結以下結論 (a) 當在 Quad 執行個體上執行 proxy node 時,他的容量,尤其是網路頻寬能夠比其它執行個體容納更多的 storage node 和得到更高的 throughput (MB/s)。(b)不同 EC2 執行個體大小的以不同的速度載入相同的 proxy node:例如,當proxy node 執行在 Quad 執行個體上時,我們需要使用 60 個 Micro 執行個體的 storage node 才能完全載入 proxy node。然而,若我們使用 Small 或 Medium 執行個體的 storage node,我們只需要 10 個 storage node 完全載入此 proxy node。
基於以上 throughput 結果,我們現在來看不同的 N 值在各個 EC2 執行個體大小的 proxy 和 storage node 組合。這裡,$ 被定義為執行 1:N Swift Cloud 30 天的 EC2 使用成本。在此部落格中,我們只展示關於 EC2 Quad 執行個體的 proxy node 的數字資料。我們將會在其他詳細報告中發表其他組合的數字資料。 
(6)執行在 EC2 CPU Quad 執行個體上的 proxy node:
基於 EC2 Quad 執行個體上的 Storage Node 觀察:
  1. 基於 Micro 執行個體上的 Storage node: 當 # storage node=60 時,達到最低 $ 每MB/s
  2. 基於 Small 執行個體上的 storage node: 當 # storage node=15 時,達到最低 $ 每MB/s
  3. 基於 Medium 執行個體上的 Storage node: 當 # storage node=5 時,達到最低 $ 每MB/s
綜合以上結果,使用 5 個基於 Medium 執行個體上的 Storage nod 可達到最低 $ 每MB/s。
這些特定結果將會分別為組合 EC2 Quad/Medium、EC2 Quad/Small 和 EC2 Quad/Micro (proxy/storage node) 分別提供輸入參數 N=5、15 和 60 到分析階段。
所以可以下結論當使用 1 個基於 Quad 執行個體上的 Proxy node,最好是使用 5 個基於 Medium 執行個體上的 Storage node以達到最低 $ 每MB/s,而非使用基於 Micro 執行個體上的 Storage node。
以上的圖表,只是在採樣階段內整理效能表現的子集合。這裡是提供您我們推薦建立最佳 Swift 雲的整體客觀概述。如同上面所述,我們將會在其他報告中發佈詳細結果,未來的部落格系列將會有更多結論以及最佳實踐。
如果您考慮拼裝一個雲端儲存空間,我們很樂意與您討論挑戰以及分享我們的觀點。請寄信至 swift@zmanda.com。