2012年8月31日 星期五

Cloud Storage - Enterprise Cloud Storage Provider



Cloud Storage 最近真的是百花齊放,不管是對於企業用戶和一般使用者都有非常多的選擇,之前本來就有整理相關的資料,想說趁這一次乾脆全部分享出來給大家參考,如果還有缺漏的也請大家可以跟我說一下,讓我可以把它補齊。

這一篇主要是再列出目前市面上我收集到所有針對企業用戶提供的產品清單,先不看產品功能與技術的差異性,主要先能分成三大類:
  • Public Cloud
    • 簡單來說就是放在Internet 上供大家申請使用的,適合一般中小企業使用
  • Private Cloud
    •  提供企業內部自行架設Private Cloud Storage Solution,所以比較適合較大型的企業使用
  • Hybrid Cloud (Backup)
    • 這個定位比較微妙,就像我之前所說站在巨人的肩膀上,所以他的功能是可以介接各個public cloud storage的,讓使用者可以任意決定要把資料存在哪裡,可能的應用就是用來作備份和異地備援的用途。
下表就是列出每家公司的Cloud Storage 產品名稱,以及所服務的方式,以及是否跟S3相容。


產品名稱公司 ModelS3
相容
Amazon S3AmazonPublic Cloud
Amazon GlacierAmazonPublic Cloud
AT&T Synaptic StorageAT&TPublic Cloud
Cloud StorageConnectriaPublic CloudV
Google Cloud StorageGooglePublic Cloud
Cloud StorageNinefoldPublic Cloud
CloudOne StoragePeer1Public Cloud
Cloud FilesRackspacePublic Cloud
asuswebstorageAsusPublic Cloud
Cloud StorageGoGridPublic Cloud
Cloud-FilesopsourcePublic Cloud
雲儲存上海盛大Public Cloud
CloudianGeminiPrivate CloudV
HP CloudHPPrivate Cloud
PureFlex SystemIBMPrivate Cloud
Cloud StorageWindstreamPrivate Cloud
SwiftOpenstackPrivate CloudV
AtmosEMCPrivate Cloud
Cloud StoragemezeoPrivate Cloud
DataCell友友系统Private Cloud
CloudCompleteNirvanixHybrid Cloud


至於給一般使用者使用的Cloud Storage 我就不另外整理,有名的大概就以下幾個:
  • Dropbox
  • Google Drive
  • Sky Drive
  • Box.net
  • iCloud

2012年8月29日 星期三

[筆記] Openstack - EfficientMetering

Source: cloudave

Openstack 正在努力的追趕AWS的功能,那目前openstack還缺哪一塊呢? 很顯然的就是監控的部份,也就是cloudwatch,套句前輩說的話,所謂學控制的人都會知道『先能量測,才有辦法控制』,此外如果需要把openstack 提升到可以營運的程度,不管是public cloud 可以計價收費,或是private cloud 提供企業內部資源分配,都需要這個功能。

到openstack 的論壇看了一下,的確也是有許多人對於這個功能很有興趣,[openstack-dev] [ceilometer] weekly meeting - CloudWatch functionality

目前版本代號是Openstack Metering (ceilometer),另外的名稱叫做EfficientMetering,下圖是目前找到的架構參考圖。






之前在作我們自己Datacenter 資料收集的部份也是採用同樣的架構,不過最大的問題就是資料量,採樣頻率越密集,資料量越大,所以最好的方式是要獨立出一個網段來收集這些資料包括vm狀態(是否連線,是否運作正常),監控資訊(CPU、RAM、Disk I/O、Network I/O..等),一旦這些都考量進去,將來整個openstack 的安裝與管理會更加複雜(廢話IaaS本來就不是簡單的東西...=_=)

Reference:
[1] Ceilometer, the OpenStack metering project
[2] Ceilometer java

2012年8月21日 星期二

在Openstack 如何建立Bootable volume (EBS like)

Source: network

艦長日誌:

延續上一篇"Openstack 跟AWS EC2 的API相容性測試",裡面提到EC2 API RunInstance 無法像AWS一樣直接啟動EBS-backed Instance ,為了解決這個問題我繼續去openstack 官網找尋答案,找到了下面三篇文章:

第一篇是 boot-from-volume,不過看裡面的內容,是提供這個功能了,但似乎透過API的確還是有問題,而且只有測過euca2ools ....=_= 是怎樣

Unresolved issues


  • volume snapshot related stuff.
  • EC2 API: At the moment EC2 API allows snapshot id to specify boot volume. However right now volume id is used. As a result the patches for euca2ools is necessary which includes bug fix.
 
 Source:boot from volume (Blueprints in grey have been implemented.)


第二篇 auto-create-boot-volumes 是第一篇的延伸,目的是希望Support Creating EBS boot volumes when boot-time ,也就是希望可以實作出跟Amazon EBS-backed Instance 樣的自動化流程,下圖是整個create bootable 的volume 的流程。但是很不幸的,這只是規劃,甚至都還沒排入release plan [issue]。



所以自動的方法和Call API的方法就先不用想了,最後只能試試看openstack document裡面寫的如何製作Bootable volume,以及透過command line 的方式手動產生,另外也有script 版本[1]。

[Update:2012/08/22]
那最後的實驗結果呢?失敗了!!有沒有那位高手有試成功呢?我也report 這個issue [#201690]
參考上圖的 7 和 9 的步驟,我再想可能少放了什麼到root volume?
另外先撇除無法用這個volume開機,的確關機後這個volume仍然存在,但是每次用這個volume create instance 都必須使用 "nova boot --image 的command"去執行,所以還是非常不方便。

 [Update:2012/08/23]
Bootable volume 這篇裡面的教法是mount 一個volume,然後用copy的方法是不可行的,後來解決方法如下:
1. 透過Dashboard or command line create 一個nova-volume
2. 找到那個vloume 在host實際存放的位置
3. 把要clone 的對象(bootable image)dd 到那個volume
4. 然後Create Instance 的時候選擇使用這個volume 開機  (EC2 API沒有這個功能)

Reference:
[1] how to boot from a volume script

2012年8月15日 星期三

Openstack 跟AWS EC2 的API相容性測試

Source: Star Trek - Captain's Log
『太空,人類的終極邊疆。星艦企業號的旅程就是為了探索陌生的新世界,去尋找宇宙中的新生命與新文明,勇敢航向人類足跡從未踏至的領域。』
不知道為什麼就很想用這個梗,大概我跟也迷航在Openstack的功能與設定裡面了...Orz..不知道何時雲端運算會變成銀河運算或是宇宙運算....(誤)

艦長日誌:

          測試目標:讓MeshCloud可以介接Openstack
           API 版本: aws-java-sdk 1.3.10
OpenStack版本: Openstack-essex release
           測試環境: Ubuntu 12.04.1 LTS
           測試對象:呼叫 openstack API http://x.x.x.x:8773/services/Cloud/


這幾天都在測試Openstack-essex 跟AWS EC2 的API相容性,發現很多API並不如官網所宣稱的那麼相容,或者應該說可以呼叫,但是很多行為與細節跟AWS並不一致,目前遇到的問題如下:

1. 無法RunInstance 同時使用BlockDeviceMapping去產生Volume
2. 不管透過API還是Dashboard去產生的Instance 都無法把Root Device 掛載EBS
3. 同2 所以Instance 關閉後,Instance就會自動被刪除
4. Attach Volume 必須掛載在/dev/vdx下面 (跟Amazon不一樣)

5. 無法import Key (Bug #755819)
此外目前最大的問題是Openstack dashboard 很多設定的功能都沒有,必須透過下指令(如:nove-manage),但是下指令修改後,卻又跟dashboard不同步。

之前許多網路新聞都說已經有很多廠商直接使用openstack,如果不是他們有特別的客製化,那就是還有許多設定我不知道或是設定錯誤...Orz... (不過我懷疑~:P)

官網列出來的比較表如下:

EC2 API method
實際測試
AllocateAddress
(./)
無法測試
AssociateAddress
(./)
無法測試
AttachVolume
(./)
ok
AuthorizeSecurityGroupIngress
(./)

BundleInstance
{X}

CancelBundleTask
{X}

CancelSpotInstanceRequests
{X}

ConfirmProductInstance
{X}

CreateImage
{X}

CreateKeyPair
(./)
ok
CreatePlacementGroup
{X}

CreateSecurityGroup
(./)
ok
CreateSnapshot
(./)

CreateSpotDatafeedSubscription
{X}

CreateTags
{X}

CreateVolume
(./)
ok
DeleteKeyPair
(./)
無法測試
DeletePlacementGroup
{X}

DeleteSecurityGroup
(./)

DeleteSnapshot
(./)

DeleteSpotDatafeedSubscription
{X}

DeleteTags
{X}

DeleteVolume
(./)
ok
DeregisterImage
(./)
無法測試
DescribeAddresses
(./)
空的
DescribeAvailabilityZones
(./)

DescribeBundleTasks
{X}

DescribeImageAttribute
(./)

DescribeImages
(./)
ok
DescribeInstanceAttribute
{X}

DescribeInstances
(./)
ok
DescribeKeyPairs
(./)
ok
DescribePlacementGroups
{X}

DescribeRegions
(./)

DescribeReservedInstances
{X}

DescribeReservedInstancesOfferings
{X}

DescribeSecurityGroups
(./)

DescribeSnapshotAttribute
{X}

DescribeSnapshots
(./)

DescribeSpotDatafeedSubscription
{X}

DescribeSpotInstanceRequests
{X}

DescribeSpotPriceHistory
{X}

DescribeTags
{X}

DescribeVolumes
(./)
會有warn
DetachVolume
(./)
ok
DisassociateAddress
(./)
無法測試
GetConsoleOutput
(./)
空的
GetPasswordData
{X}

ImportKeyPair
(./)
UnknownError
ModifyImageAttribute
(./)

ModifyInstanceAttribute
{X}

ModifySnapshotAttribute
{X}

MonitorInstances
{X}

PurchaseReservedInstancesOffering
{X}

RebootInstances
(./)
ok
RegisterImage
(./)

ReleaseAddress
(./)
無法測試
RequestSpotInstances
{X}

ResetImageAttribute
{X}

ResetInstanceAttribute
{X}

ResetSnapshotAttribute
{X}

RevokeSecurityGroupIngress
(./)

RunInstances
(./)
部分ok
StartInstances
(./)
ok
StopInstances
(./)
等同Terminate
TerminateInstances
(./)
ok
UnmonitorInstances
{X}