點將台:2015 年最佳開來源資料中心和雲端運算軟體

來源:互聯網
上載者:User

標籤:

 點將台:2015 年最佳開來源資料中心和雲端運算軟體 2015-09-18 開源中國

 

知名 IT 雜誌《InfoWorld》評選出了年度最佳開源平台、基礎設施、管理和編排軟體。

 

最佳開來源資料中心和雲端運算軟體

 

你可能已經聽說過 Docker 容器這項新技術。開發人員很喜歡它,因為可以用指令碼來構建容器,添加一層層服務,並直接從 MacBook Pro 將它們推送到伺服器進行測試。容器之所以切實可行,是因為它們超輕量級,不像那些現在已經過時的虛擬機器。容器以及交付服務的其他輕量級方法正在改變作業系統、應用程式及管理工具的格局。這份榜單上的最佳資料中心和雲端運算軟體更是其中的佼佼者。

 

Docker Machine 、Compose 和 Swarm

Docker 的開源容器技術已經得到了各大公用雲端的採用,正內建到 Windows Server 的下一個版本中。Docker 是一款功能強大的資料中心自動化工具,讓廣大開發人員和運營團隊得以將應用程式與基礎設施分開來。

 

然而,容器只是 Docker 生態系統的一部分。Docker 還提供了一系列工具,讓你可以使用 Docker API,讓容器的整個生命週期實現自動化,另外可自動處理應用程式的設計和編排。

 

Machine 讓你可以實現 Docker 容器配置自動化。從命令列開始入手,你可以使用一行代碼,鎖定一個或多個主機,部署Docker 引擎,甚至將它加入到 Swarm 叢集。支援大多數虛擬機器管理程式和雲平台,你只需要自己的訪問憑據。

 

Swarm 處理叢集和調度,還可以與 Mesos 整合起來,提供更進階的調度功能。你可以使用 Swarm 建立容器主機池,那樣需求增加時,應用程式可以相應擴充。應用程式及所有依賴項都可以用 Compose 來定義,它讓你可以把諸容器串連起來,連入到一個分布式應用程式,作為一個組來啟動。Compose 描述可適用於諸平台,那樣拿來開發人員的配置後,可迅速部署到生產環境中。

 

CoreOS 和 RKT

CoreOS 是一種瘦薄的輕量級伺服器作業系統,基於Google的 Chromium OS。它旨在與 Linux 容器結合使用,而不是使用封裝管理員來安裝功能。通過使用容器來擴充瘦薄的核心,CoreOS讓你可以快速部署應用程式,在雲基礎設施上順暢運行。

 

CoreOS 的容器管理工具fleet旨在把CoreOS伺服器叢集當作單個組件來對待,相應工具可用來管理高可用性,並根據資源可用性,將容器部 署到叢集。跨叢集鍵/值儲存系統 etcd 負責處理裝置管理,並支援服務發現。如果某個節點出現故障,etcd就能在新的副本上迅速恢複狀態,提供一個串連到 CoreOS 自動化更新服務的分布式組態管理平台。

 

雖然 CoreOS 也許因支援 Docker 而家喻戶曉,但 CoreOS 的團隊正在開發自己的容器運行時環境 rkt,有自己的容器格式:應用程式容器映像 (App Container Image)。rkt 還與 Docker 容器相容,採用了模組化架構,允許不同的容器化系統(甚至硬體虛擬化系統)可以插入。然而,rkt 仍處於發展的早期階段,所以還沒有完全準備好用於生產環境。

 

RancherOS

由於我們使用容器從底層作業系統抽取越來越多的服務,開始隨之考慮未來的作業系統會是什麼樣子。類似我們的應用程式,未來的作業系統將會是在瘦薄核心上啟動並執行一組模組化服務,可以自我配置,只提供應用程式所需的服務。

 

我們可以從 RancherOS 領略未來作業系統的模樣。RancherOS 結合了 Linux 核心和 Docker,是一種極簡作業系統,適合將基於容 器的應用程式託管在雲基礎設施中。RancherOS 利用 Docker,將 Linux 使用者空間服務和應用程式託管在不同的容器層中,而不是使用標準的 Linux 封裝技術。低層級的 Docker 執行個體先啟動,將系統服務託管在各自的容器中。使用者的應用程式在較進階別的 Docker 執行個體中運行,獨立於系統容器。即使其中一個容器崩潰了,主機照樣正常運行。

 

RancherOS 只有 20MB 大小,所以很容易在整個資料中心中進行複製。它還旨在使用自動化工具加以管理,而不是人工管理,API 級訪問既適用於 Docker 的管理工具,又適用於 Rancher Labs 自己的雲基礎設施和管理工具。

 

Kubernetes

Google的 Kubernetes 容器編排系統旨在管理和運行用 Docker 和 Rocket 容器構建的應用程式。Kubernetes 專註於管理微服務應用程式,讓你可以跨主機群集分發容器,同時處理擴充問題,確保託管的服務可靠地運行。

 

由於容器提供了應用程式抽象層,Kubernetes 是一種以應用程式為中心的管理服務,支援許多現代開發模式,側重於使用者意圖。這意味著你啟動應 用程式後,Kubernetes 會管理容器,以便容器在你設定的參數範圍內運行,並使用 Kubernetes 調度器,確保它獲得所需的資源。容器被分成了 一個個 pod,由複製引擎加以管理。該引擎可以恢複出現故障的容器,或者應用程式增加時,添加更多的 pod。

 

Kubernetes支援Google自己的容器引擎(Container Engine),它可以在一系列其他的雲和資料中心服務上運行,包括AWS 和 Azure,以及 vSphere 和Mesos。容器可以鬆散耦合或緊密耦合,那樣不是為雲平台即服務(PaaS)運營環境設計的應用程式可以作為一組緊密耦合的容器,遷移到雲端。Kubernetes 還支援將應用程式快速部署到群集,為你提供了實現持續傳遞過程的端點。

 

Mesos

將資料中心變成私人雲端或公用雲端不僅僅需要虛擬機器管理程式,還需要一種新的操作層,可以管理資料中心資源,就好像它們是單一電腦,處理資源和調度。Apache Mesos 被稱為是一種“分布式系統核心”,讓你可以管理成千上萬台伺服器,使用容器來託管應用程式和 API,支援應用程式並行開發。

 

Mesos 的核心是一組守護進程,將資源暴露在中央發送器面前。任務跨節點分發,充分利用可用的處理器和記憶體資源。一個關鍵方法是,要是提供的資源滿足不了要求,應用程式可以拒絕這些資源。這種方法很適用於大資料應用,你可以使用 Mesos 運行 Hadoop 和 Cassandra 分散式資料庫,還有Apache 自己的 Spark 資料處理引擎。還支援 Jenkins 持續整合伺服器,讓你可以在伺服器叢集上並行運行構建 worker 和測試worker,並根據工作負載的大小,動態調整任務。

 

Mesos 設計成可在 Linux 和 Mac OS X 上運行,最近還被移植到 Windows 上,以支援在 Azure 平台上開發可擴充的並行應用程式。

 

SmartOS SmartDataCenter

Joyent 的 SmartDataCenter 是一款運行其公用雲端的軟體,在 SmartOS 瘦伺服器作業系統上面添加了一個管理平台軟體。SmartOS 是 OpenSolaris 的後續版本,結合了 Zones 容器和 KVM 虛擬機器管理程式,這是一種記憶體中的作業系統,可從隨身碟快速啟動,可以在裸機伺服器上運行。

 

使用 SmartOS,你可以快速部署一組輕量級伺服器,這些伺服器可通過一組JSON API,以編程的方式加以管理,而功能通過虛擬機器來交付,由內建的映像管理工具來下載。通過使用虛擬機器,所有使用者空間(userland)操作與底層作業系統隔離開來,減小了主機和訪客的安全隱患。

 

SmartDataCenter 在 SmartOS伺服器上運行,一台伺服器作為專用管理節點來運行,叢集的其餘伺服器作為計算節點來運行。可以從膝上型電腦上的雲版本(這是一種 VMware 虛擬設備)開始入手,因而可以試用管理伺服器。在實際資料中心,你將把 SmartOS 部署到伺服器上,使用ZFS 來處理儲存這包括本地映像庫。服務作為映像來部署,而各組件儲存在物件程式庫中。

 

SmartDataCenter 和 SmartOS這個組合改善了 Joyent公用雲端的體驗,提供了一套屢試不爽的工具,可以協助你啟動自己的雲資料中心。這個基礎架構專註於如今的虛擬機器,但也為明天的虛擬機器奠定了基礎。一個相關的Joyent 項目 sdc-docker 將整個SmartDataCenter 叢集暴露為單單一個 Docker 主機,受原生 Docker 命令的控制。

 

Sensu

管理大規模資料中心的關鍵不是使用伺服器的圖形化使用者介面(GUI),而是根據來自監控工具和服務的資訊,自動編製指令碼,轉寄來自感應器和日誌的資訊,然後將操作/行動告知應用程式。Sensu 就是開始提供這種功能的一個工具,它常常被稱為“監控路由器”。

 

在資料中心中啟動並執行指令碼將資訊發送給 Sensu,然後 Sensu 再將資訊發送給相應的處理常式,使用一種基於 RabbitMQ 的發布/訂閱架構。伺服器可以呈分布式,將發布的檢查結果發送給負責處理的代碼。你可以在電子郵件、Slack 房間或 Sensu 自己的儀表板中查看結果。訊息格式由 JSON 檔案來定義,變異器(mutator)被用來實現資料即時格式化,訊息經過濾後交給一個或多個事件處理常式。

 

Sensu 仍是一種比較新興的工具,但是大有希望。如果你想實現資料中心自動化,就需要這樣一款工具,不僅用來表明資料中心出現的情況,還可用來在最需要的時候提供這方面資訊。一款商業版本增加了支援與第三方應用程式整合的功能,但是開源版本含有管理資料中心所需的大部分功能。

 

Prometheus

管理現代資料中心是項複雜的任務。一排排伺服器需要小心對待,你還需要旨在處理成千上萬個節點的監控系統。監控應用軟體帶來了特殊的挑戰,這時候Prometheus可以發揮用場。作為一種旨在向操作人員提供警報的服務監控系統,Prometheus可以在各系統上運行,無論是一台膝上型電腦,還是多台監控伺服器組成的高可用性設定組群。

 

時間序列資料擷取後儲存起來,然後與模式進行比對,識別故障和問題。你需要暴露HTTP端點上的資料,使用YAML檔案來設定管理員。基於瀏覽器的報告工具可處理資料顯示,還有一個運算式控制台,你可以試用查詢。儀表板可以用GUI構建器來構建,或使用一系列模板來編寫,那樣你可以提供應用程式控制台,這些控制台可使用Git等版本控制系統來加以管理。

 

比如說,捕獲的資料可使用運算式加以管理,因而很容易彙總來自幾個資料來源的資料,比如說可以將來自一系列 Web 端點的資料集中到一個儲存區。一個實驗性的警示管理模組將警報發送給常見的協作和開發運營工具,包括 Slack 和 PagerDuty。提供了面向 Go 和 Java 等常見語言的官方客戶軟體庫,這意味著很容易為應用程式和服務添加支援Prometheus的功能,而第三方選件可以將 Prometheus 擴充到 Node.js 和 .Net。

 

Elasticsearch Logstash 和 Kibana

運行現代資料中心會產生大量資料,還需要從這些資料中擷取資訊的工具。這時候,Elasticsearch、Logstash和Kibana這對組合(常常被稱為ELK架構)可以發揮作用。

 

Elasticsearch旨在處理可擴充的搜尋任務,對多種類型的內容執行搜尋,包括結構化和非結構化文檔。它基於Apache的Lucene信 息檢索工具,還有一組充分利用REST的JSON API。它用來為維基百科和GitHub等網站提供搜尋服務,使用分布式索引,具有自動化Server Load Balancer和路由功能。

 

現代雲架構的基礎是物理伺服器陣列,作為虛擬機器主機來運行。監控成千上萬台伺服器需要集中式日誌。Logstash負責採集和過濾那些伺服器(以及在伺服器上啟動並執行應用程式)產生的日誌,並使用每一台物理機和虛擬機器上的轉寄站。然後,Logstash格式的資料發送給Elasticsearch,為你提供了搜尋索引:添加更多的伺服器後,搜尋引擎可以迅速擴充。

 

在更高層面上,Kibana為Elasticsearch添加了可視化層,提供Web儀表板,用於探究和分析資料。儀表板可以圍繞定製搜尋來構建,並與團隊共用,提供了一種快速、易於理解的開發運營資訊源。

 

Ansible

管理伺服器配置是管理現代資料中心或雲基礎設施的任何開發運營方法的一個關鍵區段。組態管理工具採用了期望狀態的方法,簡化雲層級系統管理,使用伺服器和應用程式的描述來處理伺服器和應用程式的部署。

 

Ansible提供了極簡的管理服務,使用SSH來管理Unix節點,使用PowerShell與Windows伺服器協同運行,無需部署代理程式。Ansible Playbook用YAML描述伺服器或服務的狀態,將Ansible模組部署到處理配置的伺服器,一旦服務運行起來,就刪除模組。你可 以使用Playbook來編排任務,比如說使用一個指令碼來部署多個Web端點。

 

可以讓模組建立和Playbook交付成為持續傳遞過程的一部分,並使用構建工具來提供配置、實現部署自動化。Ansible可以彙集來自雲端服務供應商的資訊,簡化虛擬機器和網路的管理。Ansible中的監控工具能夠自動觸發額外的部署,協助管理和控制雲端服務,還竭力管理Hadoop等大規模資料平台所使用的資源。

 

Jenkins

做好持續傳遞不僅僅需要一種井然有序的方法來處理開發,還需要管理測試和構建的工具。這時候,Jenkins持續整合伺服器應運而生。 Jenkins與你選擇的原始碼控制、測試載入器以及構建伺服器協同運行。它是個靈活的工具,最初用來與Java協同運行,現在已擴大到可支援Web開發和移動開發,甚至可以構建Windows應用程式。

 

把Jenkins比作交換網路可能最恰當,讓檔案通過測試和構建過程,並回應來自所使用的各個工具的訊號――這歸功於1000多個外掛程式組成的龐大庫。這些包括將Jenkins與本地Git執行個體和GitHub整合起來的工具,那樣可以將持續開發模式擴充到你的構建和交付過程。

 

使用Jenkins之類的自動化工具不僅要奉行一種理念,還要實施構建過程。一旦你致力於持續整合作為持續傳遞模式的一部分,只要代碼分發給原始碼控製版本分支,你就要運行測試和構建周期,一旦代碼進入到主分支,就要分發給使用者。

 

Node.js 和 io.js

現代雲應用程式使用不同於我們熟悉的n層企業和Web應用程式的設計模式構建而成。它們是分布式、事件驅動的服務組合,這些服務可迅速擴充,並支援成千上萬個並發使用者。Node.js就是採用這種新模式的一項關鍵技術,它被許多主要的雲平台所使用,易於安裝,成為雲基礎設施上瘦伺服器或容器的一部分。

 

Node.js 大獲成功,關鍵是 Npm 程式包格式,它讓你可以迅速安裝核心 Node.js 服務的擴充件。這包括 Express 和 Seneca 等架構,這些架構有助於構建可擴充的應用程式。中央註冊中心處理常式包分發,依賴項自動安裝。

 

雖然 io.js 分支暴露了專案管理方面的問題,但是它也讓一組開發人員得以積極地將ECMAScript 6支援功能添加到與Npm相容的引擎中。兩支團隊協調後,Node.js 的和 io.js 程式碼程式庫已合并,現在新版本來自 io.js 程式碼程式庫。

 

明年,其他分支可能會重新併入到主分支,比如微軟的 io.js 分支增加了對 64 位元 Chakra JavaScript 引擎以及Google V8 的支援,從而讓 Node.js 的平台不斷髮展,鞏固其作為雲層級微服務首選主機的地位。

Seneca

Seneca 微服務架構的開發人員有句座右銘:“現在構建,以後擴充”。對任何想開發微服務的人來說,這句格言再恰當不過了,因為它讓你可以從小處做起,然後隨著服務增多,逐步添加功能。

 

從本質上講,Seneca 實施了對象/訊息(actor/message)設計模式,專註於使用 Node.js 作為交換引擎:擷取訊息後,處理其內容,然後發送適當的響應,無論是發給訊息始發者還是另一個服務。由於專註於與業務用例相對應的訊息模式,拿來Seneca 後,比較容易為你的應用程式迅速 構建極簡的可行產品。外掛程式架構讓你很容易將 Seneca 與其他工具整合起來,迅速為服務添加功能。

 

應用程式的要求提高或有變時,可以迅速為程式碼程式庫添加新的模式,或者把現有模式分解成不同的服務。一個模式還可以調用另一模式,以便迅速重複使用代碼。還很容易將 Seneca 添加到訊息匯流排,那樣可以把它用作一個架構,處理來自物聯網裝置的資料,因為你只需要定義監聽連接埠,監視 JSON 資料在哪裡提供。

 

服務可能不具有持久性,Seneca 為你提供了這個選擇:使用內建的對象關係映射層來處理資料抽象,並提供了常用資料庫的外掛程式。

.Net Core ASP.Net vNext

微軟開放了 .Net 的原始碼,此舉無異於公開了該公司的這個 Web 平台的大部分代碼。新的 .Net Core 版本可以在Windows、OS X 和 Linux 上運行。.NetCore 目前從微軟的 Codeplex 程式碼程式庫遷移到了 GitHub,為 .Net 提供了一種更模組化的方法,讓你可以在需要時,安裝所需的功能。

 

ASP.Net 5 目前處於開發之中,這個 Web 平台的開源版本可在 .Net Core 上運行。你可以使用微軟的 MVC 6 架構,將它作為 Web 應用程式的基礎。還支援新的 SignalR 庫,這些庫增添了對 WebSockets 及其他即時通訊協定的支援。

 

如果你計劃使用微軟的新款 Nano 伺服器,就要使用 .Net Core 編寫代碼,因為它是為瘦環境設計的。新的 DNX 是 .Net 執行環境,簡化了將 ASP.Net 應用程式部署到眾多平台上的任務,還有用於封裝代碼、在主機上啟動運行時環境的工具。特性可使用 NuGet 封裝管理員來添加,讓你可以只要使用所需的庫。

 

微軟的開源 .Net 還很年輕,但是微軟已承諾確保它取得成功。微軟自己的下一代伺服器作業系統支援開源 .Net,這意味著它在資料中心和雲都有一席之地。

 

GlusterFS

GlusterFS是一個Distributed File System。Gluster 把各種儲存伺服器彙總到一個龐大的並行網路檔案系統。你甚至可以用它來代替Hadoop 叢集中的 HDFS,或者代替成本高昂的儲存地區網(SAN)系統,或者同時代替兩者。雖然 HDFS 很適合 Hadoop,但有一個不需要將資料轉送到另一處來分析的通用Distributed File System是一大優勢。

 

在當下商品化硬體、商品化計算以及對效能和延遲要求更高的時代,購買又大又貴的 EMC SAN,希望它能滿足所有要求(自然滿足不了)不再是你唯一切實可行的選擇。GlusterFS 在 2011 年被紅帽收購。

點將台:2015 年最佳開來源資料中心和雲端運算軟體

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.