BOSH部署手册

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

BOSH部署手册

1系统需求

操作系统: ubuntu14.04.5 Server LTS X64

处理器: 8核

内存: 16G

磁盘: 80G

(bosh-cli-v2主机配置是openstack虚拟机配置,由于需要编译和打包上传服务器环境所以需要分配足够大)

2环境准备

bosh-v2需要ruby2.0+环境。

2.1Ruby环境安装

•Ubuntu系统更新

sudo apt update && sudo apt dist-upgrade

•安装curl工具

sudo apt-get install curl

•下载rvm包

curl -L get.rvm.io | bash -s stable

(失败多重试几次)

•安装RVM的环境依赖

source ~/.rvm/scripts/rvm | source /etc/profile.d/rvm.sh

rvm requirements

•安装Ruby

rvm install ruby

(不指定版本默认安装最新版本,目前最新版本是2.4,rvm可以管理多版本切换,具体信息在这里不在详细讲解,请自行补习)

3BOSH整体介绍

3.1BOSH简介

官方文档给BOSH的定义是:BOSH是一个针对大规模分布式系统的部署和生命周期管理的开源工具,其基础是“a tool of release engineering"。由其定义可以看出,虽然BOSH的

诞生出自cloudfoundry的部署难题,但BOSH能做的不只是部署cloudfoundry这一个产品。别的分布式系统只要提供给bosh一个release,BOSH一样可以做到系统的部署和生命周期的管理。所以,这里不要陷入一个误区。

3.2BOSH架构及各组件介绍

总体架构图如下所示:

•CLI

CLI类似于CF的vmc,是用户客户端的一个命令终端,它提供了BOSH的命令界面。命令的格式是:

$ bosh –e Directorname ...有关CLI的完整命令介绍可以参见BOSH

官方文档的BOSHCommand Line Interface部分。

•Director

Director组件是BOSH的核心,其作用是负责虚拟机的创建、部署和其他软件和服务生命期的管理。如果和CF类比的话,Director扮演的角色有点类似于CF cloud_controller。

•Agent

Agent运行在已经创建出的VM上,每个BOSH创建的虚拟机都一个Agent。它是BOSH 在VM上的代理,通过从Director获取配置信息,使虚拟机分配不同的角色。比如,在部署cloudfoundry集群的时候,我需要添加一个DEA节点。这时BOSH先会创建并启动一个VM,其中也运行着BOSH的Agent。然后Director就会发送一个命令到VM的Agent,明确告知这个VM需要安装有关DEA的组件和软件包,以及详细的配置信息。Agent就会根据这些信息创建一个配置好的DEA节点,这样VM就分配好了角色。

•Health Monitor

HealthMonitor从Agent接收状态和生命周期信息,并且可以发送警告报警。这里的Health Monitor是一个简单的事件机制,当一个组件更新时,不会产生报警。

•Blobstore

Blobstore是用来存储用户上传的Release。用户通过CLI的上传Release指令,通过Director将Release存储到Blobstore中。当你对上传的Release进行部署时,BOSH将在Blobstore中排列这些编译包和存储结果。当BOSH部署一个job到VM上时,Agent将从Blobstore中拿出指定的BOSH Jobs和相关的资源包。

BOSH也使用Blobstore作为大型有效载荷的中间存储,比如日志文件,Agent处超过消息总线最大尺寸的输出。

现在有三种Blobstore支持BOSH:Atmos、S3、simple blobstore server。

•db

BOSH用来存储有关VM的元数据的数据库。

•IaaS interface

这里就是BOSH CPI(Cloud Provide Interface)的部分。CPI封装了一套IaaS的API,它使得BOSH能够通过对CPI的调用从而实际调用IaaS的API。CPI包括了下面的方法:create_stemcell / delete_stemcell

create_vm / delete_vm / reboot_vm

configure_networks

create_disk / delete_disk / attach_disk / detach_disk

3.3BOSH关键名词概念

•stemcell

一个集成了Agent的VM模板,BOSH创建的VM就是以这个模板来进行创建的。Director通过CPI创建VM之前需要上传stemcell,也就是说stemcell处于部署过程的开始阶段,它初始化了BOSH的运行环境。stemcell在创建VM时会传递网络和存储的配置,以及NATS和Blobstore的位置

•Releases

BOSH是一个release engineering的工具,其面向的对象自然是Releases。BOSH 的一

•jobs

jobs是packages的具体实现,其中包括了运行资源包的二进制文件的配置和启动脚本,官方的翻译是“作业”。job和VM的关系是一对多的关系,也就是说每一个VM上只能对应一个job。拿Cloudfoundry的release举例来说,总共有包括Cloud_controller,DEA,health_manager,router,NATS等jobs。每当一个VM启动后,Agent就根据Director分配的job,让VM担当不同的任务。BOSH使用了monit监视job的进程。pakages:packages是一个源代码和编译安装脚本的集合。

src:包含了package里的源代码。

blobs:最终的release会放置于releases文件下面,但是可能会出现文件目录下出现过多的肿胀二进制文件。所以,这里会把这些较大的文件放在blobs里,然后在上传到blobstore时一起上传过去。

这里可能会有一个理解误区。看到Release这个单词,可能会有一种感觉是BOSH是将整个release上传到blobstore然后进行部署。实际上并不是这样。BOSH的一个release也是一个工程,对于这个工程,还需要使用命令bosh create release之后BOSH才能使用。所以,BOSH的Release也需要生成最终的一个release,然后在上传到Blobstore中。

此外,在一个BOSH的release里,通常都使用git进行源码管理。

相关文档
最新文档