天天看點

開源PaaS平台Cloud Foundry在阿裡雲上部署實戰Cloud Foundry介紹阿裡雲上部署Cloud Foundry實戰

cloud foundry是業界第一個開源的paas,号稱工業界唯一的雲應用平台。

本文重點講述cloud foundry在阿裡雲上的部署方案,對于cloud foundry介紹的部分簡單略過。

關鍵詞:paas、開源

cloud foundry是一種平台即服務(paas),相容多種基礎設施雲,提供多種開發架構和應用服務。目前開源支援部署cloud foundry的基礎設施雲包括aws、azure、openstack等等,cf在開發架構上支援java、.net、ruby等等,有很強的靈活性。

iaas幫助開發者和客戶解決了基礎設施的問題,cloud foundry作為paas,在雲上讓開發者的視角更高,開發者隻需要關注應用和資料。

開源PaaS平台Cloud Foundry在阿裡雲上部署實戰Cloud Foundry介紹阿裡雲上部署Cloud Foundry實戰

cloud foundry是由相對獨立的多個子產品構成的分布式系統,每個子產品單獨存在和運作,各子產品之間通過消息機制進行通信。

開源PaaS平台Cloud Foundry在阿裡雲上部署實戰Cloud Foundry介紹阿裡雲上部署Cloud Foundry實戰

cloud foundry目前最新的架構為v3版本,各個元件的功能,官網有詳細的介紹,這邊不再贅述。

(本文使用軟體版本和環境的說明,涉及到的概念下文會詳細解釋)

阿裡雲region:華東1

ruby 版本:2.3.0

bosh-init 版本:0.0.96

bosh cli 版本:1.3262.4.0

cf cli 版本:6.21.0

在阿裡雲上部署cloud foundry,部署流程分為三大部分,分别為:

開通阿裡雲環境資源:包括準備阿裡雲賬号,開通相關雲産品資源等等

部署bosh:安裝bosh-init,使用bosh-init部署bosh

部署cloud foundry:使用bosh部署cloud foundry

本文後續内容會根據三步部署流程詳細講述。

cloud foundry需要部署在vpc環境下,需要開通vpc資源,并建立虛拟交換機,規劃好部署cloud foundry的内網網段。

同時,也需要建立一對access key id和access key secret,也可以使用現有的access key id和access key secret對。

網段沒有限制,筆者選擇了10.0.0./8網段

開源PaaS平台Cloud Foundry在阿裡雲上部署實戰Cloud Foundry介紹阿裡雲上部署Cloud Foundry實戰

可用區和網段沒有限制,友善起見,筆者選擇了華東1可用區e,網段為10.0.0.0/25

開源PaaS平台Cloud Foundry在阿裡雲上部署實戰Cloud Foundry介紹阿裡雲上部署Cloud Foundry實戰
開源PaaS平台Cloud Foundry在阿裡雲上部署實戰Cloud Foundry介紹阿裡雲上部署Cloud Foundry實戰

bosh是一個統一了平台即服務軟體(如cloud foundry)的釋出、部署和生命周期管理的自動化配置部署工具。簡單的說,bosh的作用之一就是部署cloud foundry,部署cloud foundry之前,首先要部署bosh。

在講怎麼在阿裡雲上部署bosh之前,首先需要了解bosh中的幾個基本概念。

cpi全稱cloud platform interface,是bosh對外開放的一組标準化接口,在iaas上部署bosh,需要實作這組接口,bosh用cpi對iaas的資源進行管理,包括建立虛拟機,釋放虛拟機,等等......

在阿裡雲上部署bosh,需要用阿裡雲openapi實作cpi。

cpi api v1完整接口清單:

開源PaaS平台Cloud Foundry在阿裡雲上部署實戰Cloud Foundry介紹阿裡雲上部署Cloud Foundry實戰

bosh-init是bosh官網提供的一個開源工具,它的作用就是用來部署bosh。

stemcell是虛拟機鏡像,預裝了部署過程中需要的元件(其中最重要的元件是bosh agent),官方的描述是:a stemcell is a versioned operating system image wrapped with iaas specific packaging. bosh用cpi建立的虛拟機,用stemcell鏡像啟動。

release是bosh中一個安裝部署包的概念,包含了所有安裝分布式系統需要的源代碼、配置檔案、腳本檔案等等,官網描述為:a release is a versioned collection of configuration properties, configuration templates, start up scripts, source code, binary artifacts, and anything else required to build and deploy software in a reproducible way.

例如,安裝bosh,我需要一個bosh-release;用bosh安裝cloud foundry,我需要一個cf-release。

所有release都有版本疊代,都可以在bosh官網找到。

一個deployment是一組vm的集合,由指定的stemcell鏡像啟動,用于部署對應release的系統。官方描述為:a deployment is a collection of vms, built from a stemcell, that has been populated with specific releases and disks that keep persistent data. these resources are created based on a manifest file in the iaas and managed by the bosh director, a centralized management server.

在bosh的概念裡,一個deployment對應一個release,deployment的具體配置,寫在deployment manifest裡,在部署過程中提供。

通過阿裡雲控制台建立一個ecs(包年包月、按量均可),用于安裝bosh-init。友善起見,下文以bosh-init指代這台ecs。

推薦配置:

規格:2核4g及以上

鏡像:ubuntu 14.04 64位

系統盤:40gb以上,高效雲盤

網絡類型:vpc執行個體,選擇在上一步建立好的vpc和虛拟交換機,公網ip可以選擇不配置設定。

開源PaaS平台Cloud Foundry在阿裡雲上部署實戰Cloud Foundry介紹阿裡雲上部署Cloud Foundry實戰

因為bosh-init是vpc執行個體,需要給bosh-init綁定彈性公網ip,讓bosh-init可以通過公網通路。

按需購買彈性公網ip,并給bosh-init綁定彈性公網ip

開源PaaS平台Cloud Foundry在阿裡雲上部署實戰Cloud Foundry介紹阿裡雲上部署Cloud Foundry實戰

ssh登陸到bosh-init這台ecs

執行權限

<code>chmod +x ~/downloads/bosh-init-*</code>

移動到/usr/local/bin

<code>sudo mv ~/downloads/bosh-init-* /usr/local/bin/bosh-init</code>

驗證安裝成功

<code>bosh-init -v</code>

安裝對應環境,筆者使用的是ubuntu的機器

<code>sudo apt-get install -y build-essential zlibc zlib1g-dev ruby ruby-dev openssl libxslt-dev libxml2-dev libssl-dev libreadline6 libreadline6-dev libyaml-dev libsqlite3-dev sqlite3</code>

確定已經安裝ruby 2+環境

開源PaaS平台Cloud Foundry在阿裡雲上部署實戰Cloud Foundry介紹阿裡雲上部署Cloud Foundry實戰

bosh-release是開源的,可以從bosh官網下載下傳:

<a href="https://bosh.io/releases/github.com/cloudfoundry/bosh?all=1">https://bosh.io/releases/github.com/cloudfoundry/bosh?all=1</a>

筆者使用的是255.3版本的bosh-release

開源PaaS平台Cloud Foundry在阿裡雲上部署實戰Cloud Foundry介紹阿裡雲上部署Cloud Foundry實戰

cpi近期會開源,請關注:

<a href="https://github.com/alibaba/opstools">https://github.com/alibaba/opstools</a>

根據以下模闆,建立一個manifest檔案bosh.yml,在模闆中填充阿裡雲資源相關的内容。

執行部署指令:

<code>bosh-init deploy bosh.yml</code>

一個部署過程的示例:

開源PaaS平台Cloud Foundry在阿裡雲上部署實戰Cloud Foundry介紹阿裡雲上部署Cloud Foundry實戰

我們用bosh cli驗證bosh是否部署成功。

bosh cli是bosh官方提供的,用于和bosh互動的指令行工具。在部署完成bosh之後,用bosh cli和bosh互動,執行相關指令,進行下一步cloud foundry的部署。

bosh cli可以安裝在任意一台ecs上,或者本地主機上。

執行bosh cli指令:

<code>bosh target 10.0.0.2</code>

筆者的bosh cli安裝在同一個安全組的ecs上,是以可以和部署bosh的ecs進行内網通訊,直接通過内網ip,target到bosh。如果需要通過公網通訊,需要給部署bosh的ecs綁定彈性公網ip,或者使用nat網關産品,保證網絡能通。

如圖顯示,成功連接配接到目标bosh,驗證bosh成功。

<code>bosh releases</code>、<code>bosh stemcells</code>這兩條指令,使用bosh部署cloud foundry的時候會用到,我們下節細講。

開源PaaS平台Cloud Foundry在阿裡雲上部署實戰Cloud Foundry介紹阿裡雲上部署Cloud Foundry實戰

首先我們也需要了解用bosh部署cloud foundry過程中的幾個基本概念。

上一節講到,我們需要使用已經部署成功的bosh來部署cloud foundry,通過bosh cli和bosh進行互動,執行相關部署指令。是以,使用bosh部署cloud foundry之前,首先需要了解bosh cli指令的使用。

bosh cli幾個基本指令:

1.連接配接到指定bosh

<code>bosh target [director_url]</code>

2.列出目前release倉庫中所有的release

<code>bosh releases</code>

3.上傳release到bosh的release倉庫,隻有倉庫裡的release可以用于部署

<code>bosh upload release [release_file]</code>

4.列出目前stemcell倉庫裡的所有stemcell

<code>bosh stemcells</code>

5.上傳stemcell到bosh的stemcell倉庫,隻有倉庫裡的stemcell可以用于部署

<code>bosh upload stemcell stemcell_path</code>

<code>bosh upload stemcell stemcell_url</code>

6.列出目前所有的deployment

<code>bosh deployments</code>

7.列出目前deployment的資訊

<code>bosh deployment</code>

8.切換到指定manifest對應的deployment

<code>bosh deployment [manifest_path]</code>

9.執行部署目前deployment

<code>bosh deploy</code>

在上一步部署bosh中,已經部署好的bosh中已經包含了cpi元件,是以在部署cloud foundry中不再需要cpi-release

和上一步部署bosh中類似。

cloud foundry官網提供的壓縮包,包含cloud foundry所有元件的源碼。

deployment的配置檔案,主要描述了用哪個stemcell,用哪個cf-release,需要部署哪些cf元件,需要多少vm,vm規格資訊,vm的ip資訊,具體哪個vm部署哪個cf元件,等等......

cf-release是開源的,可以從bosh官網下載下傳:

<a href="http://bosh.io/releases/github.com/cloudfoundry/cf-release?all=1">http://bosh.io/releases/github.com/cloudfoundry/cf-release?all=1</a>

筆者部署用的是215版本的cf-release

開源PaaS平台Cloud Foundry在阿裡雲上部署實戰Cloud Foundry介紹阿裡雲上部署Cloud Foundry實戰

我們需要用bosh cli和bosh進行互動,執行部署cloud foundry指令

上傳下載下傳完成的cf-release,執行以下bosh cli指令:

<code>bosh upload release &lt;release_file&gt;</code>

開源PaaS平台Cloud Foundry在阿裡雲上部署實戰Cloud Foundry介紹阿裡雲上部署Cloud Foundry實戰

根據以下模闆,建立一個manifest檔案cf.yml,在模闆中填充阿裡雲資源相關的内容。

<code>bosh deployment cf.yml</code>

部署完成之後,執行以下指令,檢視cloud foundry部署詳情:

<code>bosh vms</code>

開源PaaS平台Cloud Foundry在阿裡雲上部署實戰Cloud Foundry介紹阿裡雲上部署Cloud Foundry實戰

至此,cloud foundry在阿裡雲上部署成功。