BOSH部署手册
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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进行源码管理。