天天看点

阿里云上部署开源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在阿里云上部署成功。