2015 年 9 月

第 30 卷,第 9 期

本文章是由機器翻譯。

Azure 內行人 - 建立各種雲端平台均可使用的一貫化 Heroku 樣式工作流程

Bruno Terkaly | 2015 年 9 月

幾年前,Microsoft Azure 剛開始但有一些媒體報導。過去幾年來已大幅變更。在 Microsoft 和社群的工程小組有顯著貢獻。使用 Azure 內行人 》 的這一期,數列將移至世界各地的客戶更中心、 案例研究檢視。

這個第一個 Azure 案例研究為我所說出 Gabriel Monroy。他所看到的機會和快速開發技術並呼叫啟動公司 Deis。快速取得自己的公司,和 Monroy 成為新的公司的 CTO。當我第一次符合 Monroy 並開始在 hackathon 使用他的技術時,我告訴他 「 它要不了多久之前所取得。 」 這是在 2015 年 1 月。不會超過幾個月後,EngineYard 購他新興的公司。

發明之母

那里仍然是暴增的分散式跨越內部部署與公用雲端的運算平台。這些平台由容器啟用作業系統 Linux 和 Windows,例如 Docker 容器和 Linux 例如 CoreOS 啟用叢集的版本。

最成功的開放原始碼專案是需要需求而誕生。想像您是架構設計人員協助設定大型叢集的虛擬機器的財務社群嘗試支援開發、 測試和產品的開發。之前長時間,就可以實現您保留一再解決相同的問題。

這只是發生了什麼事 Monroy 手腳財務社群年代 2005年和 2006 Linux 開發人員。他利用一些周圍 containerization,可能同時索羅門 Hykes 啟動建立 Docker 駭客攻擊的最早技術。有很多 Monroy 的工作其實最後 Docker 中。

許多公司現在不必猶豫具有相同那個時候需要簡化開發/測試/實際執行管線。理想就是要取得的連續整合階段 — 給使用者以自動化且即時的方式取得您的軟體的提高權限的狀態。

公司可重複的程序中,但是有或沒有節流的工具。公司也希望開發人員自我服務。它們也不想開發人員所持有的上一步硬體不足或低頭的 IT 作業。開發人員不想要納入 ops 就來逐一查看新概念或專案。

所以反而開發人員開始運作邪惡的陰影 IT 世界 — 偷偷地佈建基礎結構和釋放本身從其他相依性。開發人員也希望能在任何公用雲端、 是否 Amazon Web Services、 數位 Icean、 Google 或 Azure 上運作。他們也想要在裸機在他們自己的資料中心上執行如有必要。

機會 Knocks

年代晚期 2007年,2008 年初 Heroku 提供分散式運算環境的新方法將焦點放在 Ruby 開發人員想要在單一環境來開發、 測試和部署應用程式。開發人員想要專注於他們的應用程式,不是在基礎的基礎結構上。他們希望單一命令列介面與基礎平台,讓他們專注於應用程式和其資料。他們不想要擔心可用性、 停機時間、 嚴重損壞修復、 部署、 生產、 向上和向下視需要調整、 版本控制和這些常見的問題。在此同時,他們不想外的 IT 系統管理員以支援其工作負載而定。這是當 Monroy 第一次看到的機會。

許多相關的技術仍陸續一起觸發 entrepreneurial 火花 Monroy 的注意。他可以啟用多個雲端平台上的 Heroku 樣式開發人員工作流程。在探究之前啟用 Monroy 的想法的所有技術,以下就來看看開發人員可以盡情享受 Heroku 樣式使用幾乎任何公用雲端上的工作流程這個 idyllic 世界 Deis。

下列程式碼會安裝 Deis 平台。這會假設有一群 CoreOS Linux 機器來進行工作 (裝載在內部部署或雲端):

# Install Deis tooling
$ deisctl install platform
# Deis platform is running on a cluster
$ deisctl start platform
$ deis register http://deis.example.com

除了與登入和 SSH 憑證相關的幾個命令,開發小組就可以開始運用 Deis 並開始部署應用程式。一次 Deis 是安裝,開發人員可以部署應用程式開發,則測試並將它們移至實際執行的命令輕鬆的環境。

啟用技術

其他技術仍陸續威力在於一次中所示的幫助 Deis 重砍, [圖 1

支援 Deis 的交集技術
[圖 1 支援 Deis 的交集技術

Containerization 是出現在現代的用戶端作業系統的重要技術。它已經在 Linux 中一些時間。雖然不是 Windows Server 中目前存在,它應該很快就是。Containerization 的概念是採用主機作業系統和分割多個維度中 — 記憶體、 CPU 和磁碟。您可以中斷執行到多個容器的一個實體的作業系統的一部實體電腦。每個容器可以讓應用程式執行外掛式彼此同時共用基本的主機作業系統。

這會增加硬體使用率,因為容器可以平行執行而不會影響另一個。Linux 容器 (LXC) 隔離 CPU、 記憶體、 檔案 I/O 和網路資源。LXC 包含命名空間,而隔離應用程式與 OS 和不同的處理序樹狀結構、 網路存取、 使用者識別碼以及檔案系統。

必須已在早期,甚至是之前便 Docker 基本的部份 LXC 運用 Monroy。Docker 以往然後大眾化 containerization 由標準化 Linux 散發套件。真正的突破來自於當索羅門建立 Docker 映像的中央儲存機制。如此可公開可用的容器其他開發人員可以重複使用在整個生態系統便會。有超過 14000 個可用的映像位於 registry.hub.docker.com

您可以找到幾乎每一種能想到的應用程式的模式來加速您的下一個專案。您甚至可以製作自己的映像可透過此登錄。所以如果您想要在您的應用程式中使用 Nginx 或 Kafka,您不需要擔心下載和安裝應用程式、 設定系統設定及通常需要知道個別的軟體應用程式的特性。Deis curates 當做 Docker 的映像的應用程式並再做為 Docker 容器將分散到您的叢集。很容易撰寫自己的容器內的應用程式利用 Docker 檔案:

FROM centos:latest
COPY . /app
WORKDIR /app
CMD python -m SimpleHTTPServer 5000
EXPOSE 5000

一旦您定義 Docker 檔案並佈建 Deis 您在叢集上,您的應用程式部署和管理變得更簡單且功能強大。當您結合使用 Git 原始檔的程式碼儲存機制時,很后這兩個。您可以使用版本控制應用程式的原始程式碼,以及基礎結構 (Docker 容器) 本身。

應用程式開發及部署這種方式可重複且可預測。它可大幅加速開發、 測試和生產環境之間移動的能力。Docker 檔案部署到伺服器以開發人員、 測試或實際執行簡單的代理程式:

# Assume the current folder contains Docker files
$ git add .
$ git commit -m "notes by a developer"
$ git push deis master

回到 Heroku

因為可大幅簡化應用程式部署、 執行和管理、 Heroku 讓開發人員社群中的大 inroads Monroy 注意到大部分 Ruby 和 Node.js 應用程式。

開發人員通常會放在裝載的命令提示字元可讓它們執行的應用程式開發、 基礎結構佈建和擴充工作幾乎所有層面上。Monroy 發現太聰明了 — 單一放置取得所有完成他的工作,開發人員和開發工具的最小化。

自動化大量執行叢集管理的麻煩了 — 備份與還原、 設定 DNS、 定義負載平衡器監視磁碟使用量、 管理使用者、 平台的記錄和監視等等。新增節點是簡單的情況下修改命令列介面透過雲端組態檔中的 URL。或許最重要的執行叢集進行自我修復性是容錯移轉和災害復原會自動加入。

CoreOS

雖然 Heroku 有資金和建置此自訂的平台的時間,Monroy 管理所需現成的方案包含片段等負載平衡、 監視和光源、 容錯移轉叢集。在大約相同的時間稱為 CoreOS Linux 散發套件的其中一個已也獲得開發人員 mindshare。

CoreOS 帶來的技術人員協助推動 Monroy 想像的世界完美的混合。CoreOS 是針對叢集部署的 Linux 作業系統所設計的開放原始碼。它著重在自動化、 部署、 安全性、 可靠性和延展性。這兩個精確與 Heroku 吸引到開發人員的特性。

CoreOS 確實並未提供當時正在尋找與 Monroy 萬靈丹。CoreOS 不是一般的 linux 作業系統。有趣的,它會嘗試先驅 grace 自己的 Docker 容器呼叫火箭容器執行階段版本。

CoreOS 所帶來的創新十分重要。Monroy 和他的小組是最感興趣 etcd、 群組和 flannel。Etcd 是提供可靠的方式來儲存資料跨機器叢集的正常處理期間將會容許機器失敗,包括主機的網路磁碟分割的 [主要選舉分散式索引鍵值存放區。會儲存叢集組態資訊的 etcd 索引鍵值存放區也有智慧地散佈叢集。

容易使用的 API 可讓您變更在此組態檔中,然後自動複寫到叢集中的其他節點的值。Flannel 提供虛擬網路可讓每篇文章以用於每個容器執行階段的子網路。這會提供每個容器在叢集內的唯一、 路由 IP。這可大幅減少連接埠對應複雜度。

群組可協助您將叢集視為單一 init 系統,讓您不需要擔心個別的電腦執行您的容器的位置。艦隊自動可確保您的容器將某處執行叢集上。所以如果電腦失敗或需要更新、 船隊軟體會自動移動您的工作負載到叢集中的合格機器。

請注意在 [圖 2 您可以傳送 put 的要求到叢集告訴艦隊的特定服務所需的狀態。這就是基礎工作留給組成群組的服務。代替您此 put 的要求讓您不必擔心叢集的詳細資料。

CoreOS 的概念圖
[圖 2 CoreOS 概念圖

Monroy 現在有他建置所需的一切 Deis — 從 Docker 和叢集感知的 Linux 版本/實作標準化的 containerization 模型稱為 CoreOS。他現在無法提供 masses,不僅可以放心可觀的費用所需的人 Heroku 樣式開發 Salesforce.com, ,這家公司現在提供 Heroku 做為服務。

三個基本元件為控制項平面、 Docker 暫存器和資料計劃。這些所有在一起。它會從開始使用 Git push 在新版本中,其中可能包含這兩個應用程式和 Docker 建置檔案的原始碼的開發人員。

這個新的組建與現有的組態會產生新的版本。這是然後推至 Docker 登錄。然後在資料計劃中執行的排程器提取到開發人員、 測試或實際執行已發行的映像。

在這個階段,容器是管理這兩個 CoreOS 和由 Deis、 提供容錯、 延展性及其他平台做為-服務功能。也在資料中計劃是路由器、 它拒絕提交的應用程式使用並"可前往 「 使用者適當的容器來滿足要求。[圖 3 說明這些技術能共同運作。

Deis 架構
[圖 3 Deis 架構

總結

某些最成功的開放原始碼專案有何必多此一舉。它們需要預先存在的元件、 加以結合在單一傘和套用技術的唯一方式。Monroy 和小組 Deis 的。它們統馭 Docker 容器的威力 CoreOS 和 Heroku 樣式工作流程。小組可以實作 Deis 不只在 Azure 上,也會在其他公用雲端、 在內部也更是不在話下。

在 Azure 內行人個案研究下一期,我將探討 Docker。什麼是 Docker? 如何沒有它變成億美金公司在短短幾年內中而且如何為它變更應用程式開發、 測試和回復到實際執行環境的方式嗎?


Bruno Terkaly 是主體 Microsoft 軟體工程師與啟用跨裝置開發領先業界的應用程式和服務的目標。他負責推動前定域機組和行動裝置的機會在美國及技術啟用觀點的進階功能。他負責協助市場他們的應用程式將藉由提供架構指導方針和 ISV 的評估、 開發和部署期間的深入技術參與的夥伴。Terkaly 也會密切定域機組與行動工程群組提供意見反應和影響的藍圖。

感謝以下技術專家對本文的審閱: Gabriel Monroy (EngineYard)