简介:mysql
BOSH是一个分布式云软件的工程发布、部署和生命周期管理的项目。BOSH能够在数百个虚拟机上配置和部署软件。它也能够从零到最小的宕机时间内执行监控、故障恢复和软件更新。linux
虽然BOSH是为部署Cloud Foundry PaaS而开发的,但它也可用于部署几乎任何其余软件(例如Hadoop)。BOSH特别适用于大型分布式系统。此外,BOSH支持多种基础架构即服务(IaaS)提供商,如VMware vSphere,Google Cloud Platform,Amazon Web Services EC2,Microsoft Azure和OpenStack。云提供商接口(CPI)使用户可以扩展BOSH以支持其余IaaS提供商,如Apache CloudStack和VirtualBox。c++
组件:git
CLI:bosh命令行管理工具,用于和director互动github
Director:bosh的核心组件,负责VM的建立、部署和其余软件、服务的生命周期管理sql
NATS:轻量级消息处理系统,包括两类消息:vm的配置和进程健康情况的监控信息json
Agent:运行在每一个已建立的VM上,和director通讯获取配置信息并执行tasksubuntu
health monitor:从agent接收状态和生命周期信息,并发送警告消息centos
registry:director建立或更新vms时,将vms的配置信息存储于registry,以便于vms启动时调用api
blobstore:用来存储用户上传的release,stemcells,logs及部署结果等
Database:存储director关于stemcells、releases和deployments的需求状态信息,默认是postgresql
CPI:cloud provider interface,封装了IaaS的api,用于在iaas上建立和管理stemcells、vms和disks,因此会因运营商不一样而不一样。
经过BOSH CLI(指令界面,用ruby编写)能够与BOSH Director交互。BOSH开始部署系统以前,须要准备好三项内容:stemcell,release(要安装的软件),和一个部署清单(manifest)。
bosh部署过程以下:
1,更新cloud config这个yaml文件
2,构建deployment manifest文件
3,上传deployment manifest涉及的stemcell到Director
4,上传release到Director,若未上传,则会自动按release的url下载并上传
5,开始bosh deploy
基本元素
cloud file:是一个yaml文件,定义了IaaS的特殊配置参数,例如vm类型、磁盘、网络等参数,会被director和全部的deployments使用。每一个IaaS提供商都有各自的标准
stemcell:一个集成了OS image和bosh agent的VM版本化镜像,由bosh cli上传,经bosh director经过CPI建立虚拟机时使用。stemcell有bosh官方维护,可在不一样IaaS间通用
deployment:即包含特定release、disks的vms的集合
release:即job包含的源码、二进制文件、配置模板和启动脚本等一块的package打包,是stemcell之上包含应用的一层
manifest:stemcell和release都静态组件,deployment manifest将它们捆绑到一块部署,可涉及多个stemcell和release。manifest定义了部署时资源的参数值,包括虚拟机池及其网络,须要激活release中的job,job的生命周期、实例数、网络及存储要求等
快速上手
centos上依赖包
yum install gcc gcc-c++ ruby ruby-devel mysql-devel postgresql-devel postgresql-libs sqlite-devel libxslt-devel libxml2-devel patch openssl
gem install yajl-ruby
Ubuntu上依赖包
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
linux上安装bosh cli(推荐ubuntu16.04)
wget https://github.com/cloudfoundry/bosh-cli/releases/download/v5.4.0/bosh-cli-5.4.0-linux-amd64
mv bosh-cli-5.4.0-linux-amd64 bosh
mv bosh /usr/local/bin
chmod 0755 /usr/local/bin/bosh
bosh -v 出现如下信息,CLI即安装成功
version 5.4.0-891ff634-2018-11-14T00:22:02Z
Succeeded
Director本地安装
bosh lite是一个可运行在virtualbox上的Director VM(本地系统Ubuntu16.04,其上安装virtualbox、vagrant(可选))
1,安装CLI,同上
2,安装virtualbox,5.1版本以上
3,安装director VM
mkdir -p ~/workspace
git clone https://github.com/cloudfoundry/bosh-deployment ~/workspace/bosh-deployment
安装
bosh create-env ~/workspace/bosh-deployment/bosh.yml \
--state ./state.json \
-o ~/workspace/bosh-deployment/virtualbox/cpi.yml \
-o ~/workspace/bosh-deployment/virtualbox/outbound-network.yml \
-o ~/workspace/bosh-deployment/bosh-lite.yml \
-o ~/workspace/bosh-deployment/bosh-lite-runc.yml \
-o ~/workspace/bosh-deployment/uaa.yml \
-o ~/workspace/bosh-deployment/credhub.yml \
-o ~/workspace/bosh-deployment/jumpbox-user.yml \
--vars-store ./creds.yml \
-v director_name=bosh-lite \
-v internal_ip=192.168.50.6 \
-v internal_gw=192.168.50.1 \
-v internal_cidr=192.168.50.0/24 \
-v outbound_network_name=NatNetwork
安装时间按网速来定,大约20分钟安装好
4,设bosh环境变量便于登陆director
export BOSH_ENVIRONMENT=192.168.50.6
export BOSH_CA_CERT="$(bosh int creds.yml --path /director_ssl/ca)"
export BOSH_CLIENT=admin
export BOSH_CLIENT_SECRET="$(bosh int creds.yml --path /admin_password)"
export BOSH_GW_HOST=$BOSH_ENVIRONMENT
$ bosh env 安装成功显示如下信息
Using environment '192.168.50.6' as client 'admin'
Name bosh-e
UUID 7a4c28c1-5c96-4576-ab64-e5e3334ba33c
Version 268.7.0 (00000000)
Director Stemcell ubuntu-xenial/250.29
CPI warden_cpi
Features compiled_package_cache: disabled
config_server: disabled
local_dns: enabled
power_dns: disabled
snapshots: disabled
User admin
Succeeded
详细信息可参考官网
https://bosh.io/docs/bosh-lite/
经常使用bosh命令:
bosh stemcells 查看stemcell列表
bosh vms 查看vm运行状态
bosh releases 查看releases列表
bosh delete releasename 删除release
bosh upload release ~/xx.tgz 上传release
bosh deployments 查看应用
bosh tasks 显示运行的任务
bosh logs deploymentname 查看代理日志
bosh官方文档
https://bosh.io/docs/update-cloud-config/
利用崭新的director部署一个简单的http server应用:
1,获取release并上传
cd ~/workspaces
git clone https://github.com/mariash/learn-bosh-release
cd learn-bosh-release
bosh create-release 建立release,至关于打包
bosh upload-release 上床release到director
bosh releases 查看上传成功的release
2,上传stemcell
bosh upload-stemcell https://bosh.io/d/stemcells/bosh-warden-boshlite-ubuntu-trusty-go_agent
bosh stemcells 查看上传成功的stemcell
3,由于manifest文件已作好,可直接按照其部署
bosh -d learn-bosh deploy manifest.yml
bosh vms 可看到运行vm IP为10.244.0.2
bosh instances --ps 查看运行的实例
4,验证效果
当前咱们在director上,director的IP是192.168.50.6,vm的网段查看manifest可知是10.244.0.2
本地添加一条访问路由
route add -net 10.244.0.0/16 gw 192.168.50.6
curl 10.244.0.2:8080 显示信息
Hello, Maria form 。。。
curl 10.244.0.2:8080/kill
bosh logs 查看
bosh instances 可看到实例自动重启了,这个是Health Monitor自动修复,可用bosh update-resurrection off关掉
bosh -d learn-bosh cloud-check手动修复,bosh cck
5,删除应用
bosh delete-deployment -d learn-bosh --force -n
6,修改应用
vi src/simple_server/app.rb
name = “you”
properties: {port: 8090}
bosh create-release --force 从新建立release
bosh upload-release 上传
bosh -d learn-bosh deploy mainifest.yml 从新部署
curl 10.244.0.2:8090 测试
Hello, you form 。。。
7,扩展部署
vi manifest.yml
将instances数量1改成2,添加静态IP 10.244.0.6
部署
bosh -d learn-bosh deploy manifest.yml
bosh instances 查看实例状态
验证
curl 10.244.0.2:8090
hello, you from ...
curl 10.244.0.6:8090
hello, you from ...