再看雲端計算是否安全

發表於2012-07-08

來源:Bill Liu

Amazon的AWS雲端計算服務又當機了,這是6月份的第二次。和其它的當機事件一樣,又引發了大家對雲端計算安全性的質疑。其它的雲端計算服務比如windows azure 或google的gmail服務的當機也時有發生。 老是出問題好像不太符合雲端計算的吹捧的高安全性呀。那麼雲端計算的安全性到底如何,做為那些正在準備引入雲端計算的公司,是否需要需要再考慮考慮呢?下面談談我的看法。

首先要訂正的是該事件實際上不屬於安全性的範疇而是高可用性的問題。安全性通常是指是否可以訪問未授權的資源或資料(當然DoS攻擊也是安全性問題),這裡所指的是使用者部署在雲裡的服務是否可以一直可用。 所以真正的問題是雲端計算是否高可用?

在回答該問題前我們需要分清楚雲端計算裡的兩個基本概念:計算服務和儲存服務。

計算服務是指雲端計算提供商提供給使用者的用以進行運算的服務。它通常是以例項單元來衡量的,比如一個虛擬機器可以是一個例項單元。使用者在購買或使用計算服務時可以是一個或多個例項單元。比如使用者的線上購物應用程式,一個例項單元可以扛得住1000使用者的訪問量的話,如果你通常會有10000個使用者同時訪問的話,你至少需要10個運算例項。如果在高峰值時有50000個使用者同時訪問,你需要購買50個運算例項。而在低峰期是如果只有2000個使用者訪問的話,你可以只購買2個運算例項就可以了。所以你可以方便靈活地更具使用者訪問量來調整購買例項的資料量,這樣既不會浪費,也不會不足。這就是我們所說的雲端計算的最大優點之一:彈性伸縮,按需使用和按使用付費。但是,要做到這一點,每個運算例項必須是”無狀態”的,也就是每個運算例項完全相同,不可以在運算例項的本地機器上儲存任何狀態資料。原因很簡單:如果你在本地儲存資料的話,只有你自己例項能夠使用。在前面10000個使用者訪問量的例子中,在增加再多的運算例項也沒有幫助,因為只有你有資料,別的再多機器也幫不上忙。

但是在實際的應用程式中我們又必須處理和儲存資料。所以為了運算例項”無狀態”而又可用儲存資料,雲端計算提供商必須提供第二個服務:儲存服務。

儲存服務很簡單就是給使用者儲存資料用的。但是資料是使用者業務的核心中的核心,絕不可以出現任何差錯。所以儲存服務必須使用足夠的措施來保證資料的萬無一失。絕大多數的公司都採用兩中方式:一是:把使用者資料劃分成塊,每一塊是一個儲存單元。每個儲存單元分多次儲存在多個伺服器上。這有兩個好處:一是如果一個伺服器當機了,其它伺服器上的資料還可用;另一個是負載均衡以提高讀資料的效率。這些伺服器都在同一個資料中心,所以使用同步複製,即使把同一個資料塊寫多次也不會影響寫資料的效率。但是把同一個資料的多個拷貝存放在同一個資料中心無法應付大的災難,比如資料中心失火,地震或城市斷電等。所以大部分公司把資料再一次複製儲存到另外一個城市的資料中心裡(兩個資料中心最少相距150公里)。如果一個資料中心癱瘓,可以把使用者請求切換到另外一個資料中心。因為兩個資料中心的資料複製較慢,所以通常採用非同步複製的方式,每隔10分鐘複製一次。另外一點是第一種同步複製是預設的,使用者不用做任何配置,也是免費的;但是第二個非同步複製需要使用者提出,而且可能有額外的費用。

所以有了儲存服務後,使用者就可以把資料或狀態儲存到儲存服務理,而實現運算例項的無狀態了。可以隨時增加或減少例項數量,一個例項當機也沒有問題,還有其它例項在處理。實際上在資料中心裡機器當機,網路斷掉,硬碟壞掉每天都在發生,但是使用者感覺不到。如果使用者把自己的應用服務同時部署到多個資料中心的話,即使一個整個資料中心宕掉的話,使用者的訪問請求可以快速切換到另外一個資料中心,使用者也不會感覺到任何問題。這就是運算服務的高可用性:伺服器宕掉了沒有問題,整個資料中心宕掉了,同樣沒有問題。但是我們可以看的要做到這一點,使用者必須做兩件事情:1.你必須有最少兩個運算例項,道理很簡單:如果只有一個,它宕掉的話沒有其它例項,當然做不到高可用性。2.你的應用程式必須在多個資料中心部署,一樣的道理。最少兩個才可以做到雙保險。

我們再來看看亞馬遜的本次當機事件。因為當地暴風雨導致資料中心斷電,在切換到備用電源後,備用電源出現故障。所以導致整個資料中心宕掉了。在切換到其它資料中心的時候有發現切換程式出現故障,導致無法切換,所以最終導致使用者應用服務不可用。另外它都只是計算服務宕掉了,並沒有影響資料服務,或則資料沒有丟失。等到計算服務回覆後,系統恢復正常。所以計算服務當機很正常,如果資料丟失麻煩就大了。其實這一次惡劣天氣照成資料中心斷電本來可以體現亞馬遜雲端計算高可用性的一個經典案例,但是很可惜的是它的切換程式出了問題,反而成了失敗案例。

所以我們可以看出在保證應用程式的高可用性和資料的安全性上,沒有一家單個公司可以做到像亞馬遜,微軟或其它雲端計算提供商那樣的完備,根本不是一個級別上的比較。我們對亞馬遜當機反應強烈只不過是我們對雲端計算有著不切實際的期望(100%高可用性)。殊不知我們對自己公司辦公室的伺服器經常當機習以為常了。 當然雲端計算提供商在保證高可用上還要繼續努力,但是它也不應該是質疑或反對雲端計算的理由。另外一點就是要高可用性不是與生俱來的,而是要求使用者必須做很好的設計,充分利用雲端計算提供的機制,而不是把應用程式扔到雲裡面就萬事大吉了。一個最簡單的道理:不要把所有雞蛋放在一個籃子裡。

 

相關文章