search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

混合雲的那些事

雲計算在2016年有了極大的增長。一方面,AWS、阿里雲等大型公有雲廠商的雲計算收入呈爆髮式增長且絕對值數據可觀;另一方面,通過持續市場培育,雲計算的價值逐步被各國政府所認可。很多大型企業也紛紛發力雲計算,傳統IDC採購出現增長拐點。各種聲音不斷提醒人們,雲計算不再是雷聲大雨點小的噱頭,而是成為大中小企業不可或缺的基礎設施。2017年,雲計算真正落地的話題逐漸成為業界討論的熱門話題。

當前,私有雲和公有雲相爭的熱潮漸弱,融合兩者優勢的混合雲開始逐漸釋放巨大的市場潛力。混合雲的背後不再是廠商,而是一種混合IT架構,是公有雲與私有雲的集成。因此,如何構建基於雲計算的混合IT架構,成為CIO和CTO避不過的問題。

本文我們首先回顧公有雲與私有雲的優缺點,之後聊聊到底什麼是混合雲、使用場景與產品有哪些,緊接著重點分享架構核心思路與技術實現原則,最後來說說用戶到底能在混合雲平台上做些什麼事。

筆者曾經在公有雲廠商和私有雲廠商都有過研發經歷,對公有雲和私有雲各自能帶來的優勢和局限都有比較深入的體會。對於市場來說,公有雲和私有雲都有它們無法被取代的優勢,最好的選擇就是根據自身業務結合二者,這一點也已經得到了市場的普遍認同。

混合雲的定義

對於混合雲的定義,信息通信研究院曾經提出過觀點,是必須要同時有公有雲和私有雲,這也是大多數廠商和用戶的認知。筆者認為,這樣的定義只是物理上的堆徹,兩者之間如果不能發生化學反應,並不是真正的混合雲,也無法催生出創新型應用,無法真正幫助用戶提高業務價值。混合雲不是簡單的對公有雲和私有雲進行1+1=2的運算,而一定要讓它們產生大於2的價值。

虛擬化與雲計算的區別

為了更好的理解這點,讓我們來回顧一下虛擬化與雲計算的區別。虛擬化是一種技術,而雲計算則是基於虛擬化技術之上的升華,它讓用戶能夠管理一個數據中心及其增值服務,將IT資源以服務的形式交付給用戶,從而讓用戶能夠專註於業務而不是IT資源。虛擬化幫助用戶提高硬體的資源利用率,而雲計算則幫助用戶提高整個數據中心的整體資源利用率,這中間也包括軟體、網路、存儲甚至於人力的資源利用率。

那麼,混合雲作為雲計算的一種形態,它要給用戶帶來的價值,並不是簡單的把公有雲和私有雲堆徹在一起,而是讓兩者產生碰撞,從而提高用戶跨雲的資源利用率,催生出新的業務。

混合雲應該是幫助用戶接管跨雲、跨地域的IT基礎設施,把用戶花在底層實現上的精力解放出來,甚至可以反覆嘗試業務在公有雲與私有雲之間的組合模式而不用關心底層實現細節,從而極大提高用戶的生產力和降低業務的試錯成本。

故我們可以看到,混合雲不是簡單的一張皮,也不是完成連通的其中一個細節,它是包含了公有雲各資源和產品以及私有雲各資源和產品的一個有機整體系統。因此,同時存在公有雲與私有雲只是混合雲的必要條件,而非充要條件。那麼還需要有什麼呢?

混合雲在數據中心的價值

我們先來看看用戶想要什麼。在同時存在私有雲和公有雲的情況下,用戶自然會想到如下場景:

事實上由於現在真正實施混合雲的用戶非常之少,還有大量未知的創新等待著聰明的用戶去發掘。

那麼如何來實現這些場景呢?在單一的私有雲或者公有雲場景下,用戶不需要關心底層是如何實現的,他們使用鏡像創建虛擬機,使用快照備份磁碟,搭建多個二層或三層網路並在平台上自定義路由和安全組來進行通信,使用Autoscaling或其他編排系統來進行資源自動編排,並在一個多租戶場景下工作。

那麼在混合雲的場景下,我們則抽象出如下實現手段:

市場對混合雲的聲音日益龐大,但目前混合雲並沒有真正的標準,也沒有準確的定義。目前的混合雲產品主要基於以下三類:

基於災備產品

廠商通過用戶自定義的策略將用戶的數據備份到公有雲,並可以恢復到本地。這主要是一些存儲廠商提供的產品,如英方雲、數騰雲、XSKY等。

基於網路互連產品

廠商主要做網路服務,幫助用戶快速完成本地數據中心與公有雲的對接服務,達到互聯互通的目的。這主要是一些網路廠商提供的產品,如網銀互聯、游馳、犀思雲等。

多雲管理產品

廠商主要做多雲管理產品,致力於幫助用戶在一套管理平台上對多個公有雲或私有雲產品進行管理層面服務,增強用戶的一致性體驗,幫助用戶更好管理自己的雲計算資源,並提供部分運維及PaaS服務。這主要是一些CMP廠商提供的產品,如Fit2Cloud、RightCloud、行雲管家等。

我們可以看到,以上幾類產品分別能夠幫助用戶實現基於私有雲和公有雲的一種或多種場景。

了解混合雲的定義、使用場景和產品之後,我們來看看具體實現過程。作為雲計算廠商或開發者,應該對功能矩陣非常熟悉。雲計算廠商之間的比拼一個重要的層面就是功能矩陣的較量。

正是IaaS層提供了成百上千的功能點,才讓用戶得以輕鬆地進行各項業務開發。

在今天私有雲和公有雲都各自有了相似的巨大功能矩陣,我們仔細思考可以得出結論,大量的功能都是不需要跨雲的,例如GPU直通,只需要分別在私有雲端和公有雲端實現,作為混合雲服務商,只要把這個功能展現出來即可。但仍然有許多跨資源的關鍵業務,是需要混合雲廠商提供幫助的。

例如公有雲上的路由,這條路由可以指向公有雲VPC,也應該可以指向本地數據中心的VPC。類似這樣的業務,是混合雲功能的重點。

ZStack作為開源的國產自研IaaS軟體,進行混合雲的研發己經有一段時間。根據經驗來看,最重要的核心思路就是保證混合雲產品擁有連接一切的能力和無縫結合的能力。

連接一切IT

連接一切IT的本質是實現數據層面的打通,這是實現混合雲一切場景的前提條件。數據層面打通在今天主要是三個打通:帳戶打通、網路打通、存儲打通。

帳戶打通:使用一套帳戶管理公有雲和私有雲,即以私有雲自身的帳戶體系和多租戶許可權管理為主體,公有雲的AK許可權只是輔助。將公有雲AK綁定到私有雲的相應帳戶上,巧妙結合私有雲和公有雲各自的許可權體系,可以實現無比靈活的多租戶場景,建立起滿足企業要求的帳號管理體系。

網路打通:網路打通即指能夠將本地私有雲的網路和公有雲的網路在二層或者三層上連通起來,實現各種自定義的網路結構,如跨數據中心連通用戶的兩個子業務部門等。由於網路配置非常複雜,中間涉及到多種設備,因此網路能力往往是雲計算廠商綜合能力的體現。

存儲打通:私有雲和公有雲之間通常很難直接將存儲系統連接或擴展。所以我們指的存儲打通,是在快照和鏡像層面的打通。即虛擬機或容器的快照和鏡像,能夠在私有雲和公有雲之間自由遷移,這種應該是代價極小的,如完全的增量遷移,或實時遷移等。從而可以使本地製作鏡像模板直接在公有雲上創建雲主機,或反之。

在實現以上三個打通后,用戶就可以基於混合雲實現很多自定義網路,比如連接多個本地數據中心和多個公有雲VPC,自由組合成星形、環形、網形等業務所需要的網路,並讓鏡像快照在各地之間共享。這一切的配置都可以在分鐘級完成,大大加速了業務創新,徹底取締了信息孤島,實現全國一張網,一個系統。

無縫混合體驗

無縫結合更多是從控制面的設計來講,達到用戶所有的雲資源,不論是在公有雲還是私有雲,能得到一視同仁的處理。事實上由於公有雲和私有雲平台天生模型的不一致(Azure stack這樣的平台例外),很難強行把它們用相同的界面和邏輯來進行操作,而類似region,availability zone這樣的概念,更是無法對用戶屏蔽但私有雲很難存在的概念。

所以在實現上,好的無縫體驗,應該是讓公有雲和私有雲的資源在同一個平台上操作,它們的操作內在邏輯是完全一致,而非相互割裂。此處以創建雲主機和創建專線連接為例。

創建雲主機

當我們創建私有雲主機時,需要選擇網路、主存儲、鏡像、資源規格、可能還有物理機、集群等。而創建公有雲主機時,需要選擇鏡像、安全組、網路、計算規格、可能還有可用區等。相比之下,公有雲不可能看到物理機,而私有雲不可能看到可用區,兩者的計算規格和網路的模型也可能完全不同。

我們可以將它們放在同一個頁面,但一個頁面還是兩個頁面,對用戶的操作路徑來說都是一步,所以意義不大。真正有意義的是讓用戶在操作過程中感受到完全的無縫。即創建的過程是完全相同的,所有資源都不需要到公有雲控制台去進行額外的查找,本地就能閉環地完成所有操作。

創建專線連接

這是典型的跨雲資源操作。連接時需要選擇本地網路與公有雲網路,這些選擇都應該是在平台上直接進行選擇或創建(例如創建一個邊界路由器等),然後點擊連接,混合雲平台自動完成剩下的連接工作。不需要用戶登錄到各個雲平台查看類似id、網關、cidr等屬性。從體驗上來說,用戶的直觀感受就是選擇了兩個網路,就創建了連接。而這背後,則是混合雲平台進行了大量的建模和數據同步工作。

通過以上兩個示例可以看到,因為公有雲和私有雲之間的模型天生是有部分差異,因此無感知的混合雲並不是要強制用戶使用相同的模型去套用不同的雲平台,而是在建立好對應的模型后,在後台使用完全相同的邏輯去處理它們。而從API設計上來講,私有雲和公有雲資源的操作分屬不同的API,但它們的語義、參數都是非常相近的。

在定義了連接一切、無縫體驗之後,技術層面在實現它們時有哪些需要注意呢?在此提供以下一些設計原則以供大家參考:

建立完整數據模型

我們在設計私有雲平台時,會建立完整的私有雲數據模型,如快照、磁碟、雲主機、VPC、路由器等,它們之間存在千絲萬縷的關係。同樣,在設計公有雲平台時,也要建立相應的數據模型。那麼在設計混合雲時,就必須同時建立這二者的模型,並且必須是完整的,因為存在許多關聯關係,導致缺少任意一個資源的模型,都不能算完整。

布設虛擬ID

公有雲資源映射到本地,成為一個虛擬資源。我們需要給每一個公有雲資源分配一個本地的虛擬ID,而不能直接使用公有雲的ID。因為在多租戶的場景下,公有雲的ID在本地並非是唯一的,只有本地的ID才能保證它的唯一性。

觸發同步

由於存在映射關係,所以需要進行同步,同步可以是主動觸發,也可以是被動觸發的。同步的目的:一是讓用戶在公有雲控制台上做的操作也能及時反映到本地,二是保證所有的讀寫操作都在本地進行,讓操作的流暢程度達到毫秒級。正是有了同步,混合雲資源的操作速度,可以比直接在公有雲控制台上操作快了兩個數量級,這讓用戶可以放心地做更多的事。

遍歷資源模型

雲計算的資源模型是樹狀的結構,因此任何操作都需要遍歷這棵樹,以便讓它的所有父子資源和相關資源都能得到及時的變更。例如刪除或同步一個VPC,需要遍歷它下面所有的交換機、安全組、雲主機、EIP、NAT網關、路由表、安全規則等等,進行相應的變更,出現失敗時要能按順序進行回滾,保證操作的原子性。又比如刪除一個本地網路,需要遍歷所有指向它的資源,如路由設備,監控指標等等,進行路由的變更,和網路拓撲關係的自動適配,而不是簡單刪除就可以,下圖為VPN連接的混合雲數據模型。

如何做到讓公有雲和私有雲實現

混合雲VPN連接的數據模型

區分邏輯和真實操作

對公有雲資源的操作都必須區分邏輯操作和真實操作,方便管理員的管理。比如有的用戶只能邏輯上刪除一個公有雲網路,而不允許真實刪除公有雲網路。又比如對可用區這種概念,用戶只能邏輯性地清除它以及它的子資源,而不能真實刪除一個可用區,因為這是公有雲的固有屬性。

升級原則

對於混合雲產品來說,私有雲的部分是可以隨產品升級而升級的,但公有雲部分的升級,則可能影響到產品的穩定性。因此要注意兩個原則:

一是對公有雲的操作失敗範圍要盡量控制在可以控制的範圍內,比如錯誤或數據結構控制在有限的package內,避免公有雲API的調用失敗影響到產品整體流程。

二是對公有雲上有可能變更的行為和資源保持彈性和可降級處理,比如公有雲上的可用區是有可能新增和關閉的,而每個可用區內能看到的資源類型也是不對稱並且會發生變化的(例如庫存變化),因此需要有機制能動態地識別這種變化並進行相應處理。對於第二點來說,還需要開發人員對每個公有雲本身的實現機制有深入的理解。

以上幾個設計原則雖然並不輕鬆,但一旦建立完成,一方面可以在UI上做出許許多多令人讚歎的智能化設計。另一方面,公有雲資源的操作可以達到毫秒級響應,在全非同步的框架下,一個管理節點可以幫助用戶管理成千上萬個雲資源,從而用戶可以摒棄掉公有雲控制台。

對於用戶來說,混合雲幫助他屏蔽了許多實現細節,那麼用戶只需要按照場景去使用即可。在這裡我們列舉用戶可以在混合雲平台上做的事情。

災備場景

用戶指定本地數據中心的磁碟、鏡像或雲主機,可通過備份策略、備份組或直接手動的方式,備份到遠端公有雲。混合雲平台幫助解決連通以及去重的問題。

互連場景

用戶指定本地數據中心通過VPN或專線的方式連接公有雲VPC,或直接連接幾個公有雲VPC,或把自己幾個數據中心與公有雲組成星形網路,互相通過內網訪問。在此基礎之上,用戶可以讓自己的業務跨雲部署,或跨雲使用負載均衡。至於連通的細節由混合雲平台處理,用戶只需要指定連通目標即可。

彈性場景

用戶將本地數據中心的雲主機彈到公有雲,或者反過來從公有雲彈到本地數據中心,從而解決業務遷移和彈性擴展問題。這個場景可以極大節省用戶的資源成本,從而通過混合雲平台解決數據遷移的問題。

多雲管理

用戶不需要再登錄公有雲控制台,在本地完成所有操作。本地平台還可以幫助用戶解決跨帳戶、跨地域管理的問題,從而可以將用戶的資源管理速度提高几個數量級。

本文從系統概念層面闡述了我們在研究和實踐中對混合雲的認知,即混合雲應該是讓私有雲和公有雲之間能進行帳號打通、網路打通、存儲打通,並以流暢的用戶體驗極大降低用戶在不同雲之間的分裂體驗,從而使用戶能夠專心於業務架構,而不用關心基礎資源如何打通的問題。

針對這一全新的混合雲認知,本文提出了混合雲的設計目標以及圍繞該目標應有的實現手段、設計原則。



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦