bosh学习笔记

简介

BOSH是一个分布式云软件的工程发布、部署和生命周期管理的项目。BOSH可以在数百个虚拟机上配置和部署软件。它也可以从零到最小的宕机时间内执行监控、故障恢复和软件更新。

虽然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。

组件:

CLI:bosh命令行管理工具,用于和director互动

Director:bosh的核心组件,负责VM的创建、部署和其他软件、服务的生命周期管理

NATS:轻量级消息处理系统,包括两类消息:vm的配置和进程健康状况的监控信息

Agent:运行在每个已创建的VM上,和director通信获取配置信息并执行tasks

health monitor:从agent接收状态和生命周期信息,并发送警告消息

registry:director创建或更新vms时,将vms的配置信息存储于registry,以便于vms启动时调用

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

 

转载于:https://my.oschina.net/u/2404183/blog/3047288

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值