bosh学习笔记

简介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 ...

相关文章
相关标签/搜索