在同多個云提供商合作之前,請評估他們在計算、存儲和安全等方面的服務。
企業必須在多個云供應商中做出抉擇。亞馬遜網絡服務是行業巨頭,而微軟Azure則提供了一整套越來越有競爭力的服務。還有谷歌云平臺對于那些具有大數據和處理需求的客戶來說很有吸引力,他們正好可以利用谷歌的基礎架構。IBM和Rackspace則提供三巨頭之外的選擇。
企業們最好不要與單一的云供應商綁得太緊。在一個云里提供的專業化服務在另一個云里并不一定也存在。在其他情況下,一個組織內的各部門可能會在不同的平臺上開發服務,繼而需要集中式的云管理團隊來支持多個供應商的托管環境。
在與多個云供應商合作時有一些策略和技巧,能夠得到其優點同時限制了重復勞動和其他額外的工作。要理清這些,我們將仔細檢驗他們的核心服務:計算和工作負載管理、存儲服務、數據管理和安全性。
接下來,我們會了解基礎架構即代碼的這一概念為何是多云管理的一個關鍵前提。容器服務被描述為跨云的一個公共抽象層,它有助于進一步緩解跨多個云上管理應用的負擔。
計算和工作負載管理服務
計算和工作負載管理服務,包括業務編排,集群管理和配置工具。
首先,虛擬機(VM)是任何計算服務的基礎單位。基礎架構即服務的云供應商提供了各種的虛擬機,而了解他們之間的差別是非常重要的。一個特定的虛擬機規格會包括其OS,處理能力,內存和網絡優化的功能。微軟,谷歌和亞馬遜網絡服務(AWS)還提供了專門設計來支持大數據和分析任務負載的集群,能夠支持例如Hadoop和Apache Spark等框架。
容器服務也變得越來越重要。容器化非常適合微服務部署,并且在許多情況下,可以比為每個應用程序運行單獨的VM效率更高。容器提供在Linux基礎上的輕量級虛擬化并可以類似Docker這樣的標準工具一起使用。對于集群管理,Apache Mesos和Docker Swarm是值得考慮的工具。 Mesos適合于作業調度,同時支持Marathon和Chronos。并且Mesos還支持Docker Swarm API,這樣你就可以在Mesos里運行Swarm,如果需要的話。
同樣歸于計算和管理服務的大傘下的還有編排。編排的功能允許系統管理員以代碼的形式定義基礎架構并自動化代碼部署。
編排對于需要規模化或跨多云運行的組織尤為重要。在多云的場景下,例如Chef和Puppet之類的配置和編排工具是很重要的。特定廠商專有的工具,如AWS CloudFormation,也是可供選擇的選項。
在第一和第三方工具之間選擇時,請記住其中的權衡利弊。第三方工具提供更多的跨云的靈活性,并允許跨云遷移工作負載。另一方面,廠商自己的工具會按照在給定廠商的云里工作的目的構建。
存儲服務
跨多個云遷移工作負載是具有挑戰性的,如果你需要在云之間進行協調或者在另一個競爭的云平臺上運行一個被設計成使用某個云的API的腳本。然而,存儲,又帶來了另一種不同的問題。當所有的主流云廠商都提供對象存儲服務時,要理解這些服務之間更細微的差別很重要。要優化成本和性能,你可能要根據數據保存的時間段,耐用性要求,存儲和檢索數據的延遲以及接近計算資源來選擇對象存儲。
例如,AWS提供簡單存儲服務(S3)來存儲對象以及彈性塊存儲有關虛擬機文件系統存儲彈性塊存儲簡單存儲服務(S3)。S3對象存儲以較低的成本介入,但延遲較高并且不適合文件系統。另一方面,谷歌則以低成本提供適合文件系統存儲的Nearline存儲。要知道,Nearline存儲有較高的延遲。如果你正在尋找歸檔存儲,那么選擇一個單一的云提供商來最低限度的保持存儲管理是合理的。如果冗余很重要的話,你可能要考慮在多個云里進行歸檔。
鄰近計算是另一個重要的考慮因素。在一般情況下,數據應盡可能靠近計算資源。這將提高性能從而削減成本。此外,數據復制出云往往會產生費用,所以將計算任務放進生成數據的同一個云中也很有道理。
數據管理
數據管理包括使用關系型和非關系——也被稱為NoSQL,的數據庫產品管理結構化和半結構化的數據。管理數據有兩種選擇:使用數據庫即服務(DBaaS)或管理自己的數據庫。在做出決定時,你要考慮你將如何存儲數據,該數據的物理位置,涉及到的延遲級別,以及環境的耐用性。此外,還要考慮如果該廠商或存儲方法不奏效的情況下需要移動數據時所涉及到的成本。
使用DBaaS會將數據庫業務同一個單一的廠商緊密綁定,雖然這不一定是壞事。一種選擇是AWS的DynamoDB,它非常適合用于健值和文件的數據存儲。它提供低延遲和配置的一致性,幾乎沒有任何數據庫的管理開銷。然而,它采用其他廠商無法使用的專有數據庫。使用如DynamoDB之類的專有數據庫工具可能會增加操作人員的壓力,如果你需要多個云的專有服務的話。
當使用多個云提供商時,最好的選擇最有可能是管理自己的數據庫。雖然這聽起來像一個昂貴的苦差事,但流程編排工具可以提供幫助。如果你的數據庫配置腳本化,那這些工具可以讓你更有效的跨云管理自己的數據存儲。使用多個云提供商的一個好處是,你可以跨云存儲備份,從而擁有一個多廠商,基于云的災難恢復策略。
無論選擇哪種數據管理方法,始終要記住數據管理的初衷。數據存儲在哪里可以影響它需要如何被處理并保護。安全港協議已經失效,所以考慮使用其他規定,如HIPAA,作為指導,并規劃基于地理的數據存儲策略。
抽象和安全問題
廠商特定的工具可能使你無法獲得一些云計算的靈活性。盡管如此,也有一些方法可以解決這個問題,并從特定廠商的平臺中分離出你的資源。某些特定的策略可以將特定云廠商的實現細節隱藏掉。例如,你可以為如對象存儲等常用的功能建立一個薄抽象層。
這就需要使用跨云的API,如Apache Libcloud。Libcloud是一個開源的Python API,使用戶能夠與各種云服務供應商交互。該API由AWS彈性云計算和S3實例,以及谷歌計算引擎和Rackspace支持。支持的Python版本包括2.5,2.6,2.7,PyPy和Python 3。
盡量不要使用專門的服務,如AWS Lambda。考慮將你會在Lambda中運行的功能改為在Docker容器上實現。容器在各種云平臺之上都能使用。
如果你打算從單一供應商解綁,那么建議運行你自己的服務。這對于數據庫尤其如此。然而,始終把成本考慮在內;從長遠來講一個DBaaS可能最終會節省你的成本。
當使用多個云供應商時,安全變得越來越具挑戰性,因為你必須實現同一控制的跨云的多個版本。例如,實現一個目錄并通過聯合讓多個云可用而不是實現多個目錄。盡可能多地使用一個通用的基礎架構,如LDAP或活動目錄。至于實施跨云策略,第三方服務和工具是必不可少的。
對于復雜的身份管理任務,可以考慮第三方服務,如Ping Identity。Ping Identity提供了許多跨平臺的諸如多因素認證和用戶身份管理的工具。
對于安全日志管理,一個強大的第三方工具是Loggly,它使用開源的協議,因此與多個云提供商兼容。該工具讀取并鞏固了許多基于文本的日志類型,包括Ruby,Java,Python,PHP和MySQL,等等。Alert Logic提供了Cloud Defender產品以及一整套的安全工具。Cloud Defender收集安全數據,并可以進行安全數據分析和威脅分析。
管理基礎架構即代碼
當涉及到如何有效利用多云,管理基礎架構即代碼是一個不錯的起點。軟件開發者已經創建了各種先進的技術和工具來管理多版本的頻繁變更的代碼。這些工具和做法,可用于管理基礎架構,當使用聲明規格時。按照要求部署到云中的任何資源以腳本的方式進行實踐。如果一切正常的話,系統管理員不應手動添加和刪除資源或更改配置,而應該通過使用第三方或專有的工具部署腳本來完成。
這種觀念還可以沿用到代碼部署之外。管理員可以利用第三方服務來更好地使用多云。云服務代理公司,作為云提供商和用戶之間的媒介,就是這樣一種值得考慮的服務。另一個選擇是對云之間的整合,以促進工作負載管理和成本管理工具云聚合工具。
與多個云提供商合作沒有硬性和速效的法則,但是有一些實踐可以將重復的工作,遷移的難度以及安全漏洞限制在一定范圍內。