Cloud Foundry BOSH 简介

Cloud Foundry BOSH 简介

编译自http://www.think-foundry.com/tag/cloud-foundry-bosh-stemcell/。编译时,去掉了一些扩展知识。需进一步了解的可访问另一篇转载博文。

Cloud Foundry 是业界第一个开源PaaS,它支持多种开发框架、多种服务和多种IaaS。BOSH起先是在Cloud Foundry项目中开发的,不过,它是一个通用的工具,协助大规模分布式服务的部署和生命周期管理。

我们使用BOSH将Cloud Foundry的各组件部署到分布的节点上(在虚拟化环境中,节点即虚拟机)。以下简要介绍一下BOSH在部署系统时是如何工作的。

BOSH是Bosh Outter SHell的缩写。与“Outter Shell”相对,被BOSH部署和管理的系统称为“Inner Shell”。下图简要说明了BOSH的模块:


Cloud Foundry BOSH 简介_第1张图片

BOSH是将分布式系统的部署步骤进行定义和编排的服务器,通过BOSH CLI(指令界面,一个ruby工具)可以与BOSH服务器交互。BOSH开始部署系统之前,需要准备好三项内容:stemcell,release(要安装的软件),和一个部署清单(manifest)。让我们仔细看一下这三项内容:

Stemcells:  在云平台上,VM经常会用从模板clone的方法创建。stemcell是包含了标准操作系统(例如ubuntu)和BOSH agent的VM模板。“stemcell”这个词来源于生物学的“干细胞”,指的是可以生长成为不同类型细胞的原始细胞。同样的由BOSH stemcell创建的VM在开始时是相同的,启动后,VM被配置成不同的CPU/memory/storage/network,并且安装不同的软件包。这样由同样stemcell模板创建的VM变得不一样了。

Releases: release包含一系列软件和配置,用于安装到目标系统中。配置通常包含例如IP地址、商品号、用户名、口令、域名等。这些参数根据部署清单文件(Deployment mManifest)中的属性来确定。

 contains collections of software bits and configurations which will be installed onto the target system. Each VM is deployed with a collection of software, which is called a job. Configurations are usually templates which contain parameters such as IP address, port number, user name, password, domain name. These parameters will be replaced at deploy time by the properties defined in a deployment manifest file.

Deployment Manifest: Deployment Manifest(部署清单)定义了部署时所需的实际参数值,在部署过程中,BOSH用这些值替换release中的参数,使得软件按计划好的配置来运行。


当以上三个内容准备好之后,它们将被用BOSH CLI工具上传到BOSH。然后,用BOSH安装分布式系统一般包括以下主机步骤:

1) 如果在release中的一些package需要编译,BOSH首先创建几个临时VM来编译它们。编译完成后,BOSH将编译好的二进制代码放在内部的blobstore,将临时VM销毁。

2) BOSH创建一个VM池,包含多个VM,release将被部署到这些VM上。这些VM从stemcell克隆过来,它们已经包含了BOSH agent.

3) 部署一个release的任务时,BOSH从VM池里取出一个VM,根据Deployment Manifest更改配置。配置可能包括IP address、永久磁盘大小,等等。

4) 当重新配置VM完成后,BOSH向每个VM中的agent发送指令。这些指令告诉agent来安装软件包。安装过程中,agent可能从BOSH下载软件包并安装。当安装完成后,agent运行启动脚本来启动VM中的任务。

5) BOSH重复步骤3-4,直到所有任务都已部署和启动。这些任务可以并行或顺序部署,由manifest(清单)文件中的“max_in_flight”值控制。当设为1时,任务一个一个部署。对于性能差的系统,这个值很有用,可避免资源拥挤造成超时。当这个值大于1时,意味着任务可以并行部署。

你可能感兴趣的:(PaaS,CloudFoundry,BOSH)