CloudFoundry in One Box简介:Bosh-lite
Pivotal Web Service主管工程师 产品经理 吴疆
一提起云计算服务,大家头脑中一般都会想到在一个机器轰鸣的数据中心,一个个机架排列在一起,一台台服务器在紧张的工作着,似乎搭建云计算环境都需要许多台强大的服务器。但是事实上,无论是提供IaaS服务的OpenStack,还是提供PaaS服务的CloudFoundry,都可以安装在一台计算机上,甚至可以只安装在一台虚拟机上。
0. 为什么需要单机版的云平台
无论是IaaS还是PaaS,云平台的主要设计目标都是抽象化和虚拟化系统资源,以达到为多个客户提供按需分配的计算资源。因此,我们的印象中,云平台应该是一个强大的包含许多系统资源的平台。那么,我们为什么需要单机片的云平台?
第一,单机版的云平台安装部署简单,方便爱好者学习和研究。在学习和评估云平台的过程中,我们一般不需要一个集群版的Openstack或者Cloud Foundry。 我们都希望能够用最快的速度和最少的资源搭建一个云平台,然后马上开始测试盒验证功能。
第二,单机版云平台可以用来云应用的开发和测试。在开发云应用的过程中,如果每次修改都要把应用部署到远程的云平台,一是速度较慢,二是不方便调试。因此一个部署在本地的包含最小功能机的云平台非常适合在开发阶段开发调试云应用。
因此,作为开源的PaaS平台,Cloud Foundry提供了多个单机版部署方案,包括bosh-lite, lattice, micropcf.
本文描述的就是使用Bosh-lite项目搭建单机版的CloudFoundry学习环境
1. Bosh-lite简介
Bosh是由Cloud Foundry基金会开发的一款用来部署和升级Cloud Foundry和Cloud Foundry的云平台配置管理工具,详见 http://bosh.io. 顾名思义,Bosh-lite是精简版的bosh,由CloudFoundry团队开发的一个可以在一个虚拟机上部署bosh+CloudFoundry的开源项目,主要目的是帮助开发人员搭建CloudFoundry的本地开发环境,也可以帮助CloudFoundry爱好者来学习CloudFundry。
Bosh-lite目前支持仅MAC OS X和Linux系统。Bosh-lite使用Vagrant管理虚拟机,所以目前只支持VirtualBox和VMWare Fusion (MAC OS X)虚拟机平台。
如下图所示,Bosh客户端CLI运行在宿主机(HOST OS)上,通过Bosh CLI,我们可以把Bosh和Cloud Foundry的各个component部署在VirtualBox的虚拟机上,Bosh和CloudFoundry的各个Component,例如UAA,Router等,都是运行在Garden容器(Garden Container)中。
2. 环境准备
笔者采用的事Cent OS 7.2作为宿主机的操作系统,VirtualBox为虚拟机平台
2.1 安装以来的软件包
# rpm -Uvh http://mirror.pnl.gov/epel/7/x86_64/e/epel-release-7-5.noarch.rpm # yum install -y vim git screen kernel* libX11 qt SDL SDL-devel libxml2-devel \libvpx libpng libXt libXmu libxslt libxslt-devel openssl \ openssl-devel libXcursor libXinerama qt qt-devel wget gcc unzip ntpdate net-tools
2.2 安装Ruby环境
笔者使用rbenv来安装和管理ruby
# git clone git://github.com/sstephenson/rbenv.git $HOME/.rbenv
# git clone https://github.com/sstephenson/ruby-build.git $HOME/.rbenv/plugins/ruby-build
# echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
# echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
# source ~/.bash_profile
# rbenv install 2.3.0
# rbenv global 2.1.3
# gem install bundle
# gem install nokogiri — --use-system-libraries
2.3安装Vagrant
# wget https://releases.hashicorp.com/vagrant/1.8.1/vagrant_1.8.1_x86_64.rpm
# rpm -Uvh vagrant_1.8.1_x86_64.rpm
验证vagrant
# vagrant --version
Vagrant 1.8.1
2.4 安装VirtualBox
# wget http://download.virtualbox.org/virtualbox/5.0.16/VirtualBox-5.0-5.0.16_105871_el7-1.x86_64.rpm
# #安装virtualbox时需要linux kernel的源代码,设置KERN_DIR环境变量指示kernel源代码路径
# export KERN_DIR=/usr/src/kernels/<your kernel dir>
# rpm -Uvh VirtualBox-5.0-5.0.16_105871_el7-1.x86_64.rpm
验证virtualbox是否安装成功
# VBoxManage --version
5.0.16r105871
3. 准备bosh-lite环境
3.1 安装Bosh CLI
# gem install bosh_cli
3.2 安装manifest merge工具
Spiff是Cloud Foundry基金会开发的一款涌来合并bosh部署文件的工具,详见 https://github.com/cloudfoundry-incubator/spiff
# wget https://github.com/cloudfoundry-incubator/spiff/releases/download/v1.0.7/spiff_linux_amd64.zip # unzip spiff_linux_amd64.zip -d /usr/bin
3.3 Checkout bosh-lite和cf-release
# #bosh-lite和cf-release这两个代码库必须放在同一级目录下
# mkdir ~/workspace
# git clone https://github.com/cloudfoundry/bosh-lite
# git clone https://github.com/cloudfoundry/cf-release
3.4 启动VirtualBox虚拟机
# cd ~/workspace/bosh-lite # vagrant up --provider=virtualbox # #启动成功后可以运行下面的命令去查看虚拟机的状态 # vagrant global-status id name provider state directory ------------------------------------------------------------------------ 0e3f85a default virtualbox running /root/workspace/bosh-liteThe above shows information about all known Vagrant environments on this machine. This data is cached and may not be completely up-to-date. To interact with any of the machines, you can go to that directory and run Vagrant, or you can use the ID directly with Vagrant commands from any directory. For example: "vagrant destroy 1a2b3c4d"
启动后的bosh-lite虚拟机配置了两块网卡,一块用来连接CloudFoundry网络,使用10.244.0.0/19;一块用来和宿主机通信,使用IP 192.168.50.4, 因此在宿主机需要添加访问CloudFoundry网络的路由
# route add -net 10.244.0.0/19 gw 192.168.50.4
# #如果配置了HTTP或者HTTPS的代理,请先运行下面这条命令
# export no_proxy=192.168.50.4,xip.io,bosh-lite.com
# #验证bosh状态
# bosh target 192.168.50.4 lite
# bosh status
Config/root/.bosh_configDirectorName Bosh Lite DirectorURL https://192.168.50.4:25555Version 1.2811.0 (00000000)User adminUUID c6f166bd-ddac-4f7d-9c57-d11c6ad5133bCPI vspheredns disabledcompiled_package_cache enabled (provider: local)snapshots enabledDeploymentnot set
至此,一个超微型的bosh环境-bosh-lite环境准备完毕。
4. 部署CloudFoundry
4.1 生成CloudFoundry部署描述文件
部署cloud Foundry首先需要选择一个域名,例如 xyz.com, 而且需要把*.xyz.com都解析为同一个IP地址, 为了方便大家使用bosh-lite, Cloud Foundry提供了一个默认的域名,bosh-lite.com, 并且统一解析为10.244.0.34
# ping bosh-lite.com PING bosh-lite.com (10.244.0.34): 56 data bytes Request timeout for icmp_seq 0 Request timeout for icmp_seq 1 ^C --- bosh-lite.com ping statistics --- 3 packets transmitted, 0 packets received, 100.0% packet loss# ping xyz.bosh-lite.com PING xyz.bosh-lite.com (10.244.0.34): 56 data bytes Request timeout for icmp_seq 0 Request timeout for icmp_seq 1 ^C --- xyz.bosh-lite.com ping statistics --- 3 packets transmitted, 0 packets received, 100.0% packet loss
生成部署描述文件 (deployment manifest)
# cd ~/workspace/cf-release # # 下载所有的子模块(submodule) # ./scripts/update # # 生成部署描述文件 # ./scripts/generate-bosh-lite-dev-manifest
4.2 上传Stemcell
Stemcell是bosh中的一个独特的概念,类似于虚拟机镜像,部署Cloud Foundry之前需要使用bosh上传相应平台的stemcell。所有的stemcell都可以在 http://bosh.io/stemcells找到
# wget https://s3.amazonaws.com/bosh-warden-stemcells/bosh-stemcell-3147-warden-boshlite-ubuntu-trusty-go_agent.tgz #bosh target 192.168.50.4 lite # bosh upload stemcell bosh-stemcell-3147-warden-boshlite-ubuntu-trusty-go_agent.tgz
4.3 上传Cloud foundry Release
Release也是bosh中的一个重要概念,是所有的需要部署的文件(包括二进制和配置文件)的集合。Cloud Foundry的release 文件也可以从 http://bosh.io/releases/github.com/cloudfoundry/cf-release?all=1下载
# wget http://bosh.io/d/github.com/cloudfoundry/cf-release?v=234 # bosh upload release cf-release-234.tgz
4.4 部署Cloud Foundry
# bosh deploy
5. 验证Cloud Foundry部署
# bosh vms Deployment `cf-warden' Director task 9 Task 9 done +------------------------------------+---------+---------------+--------------+ | Job/index | State | Resource Pool | IPs | +------------------------------------+---------+---------------+--------------+ | api_z1/0 | running | large_z1 | 10.244.0.134 | | etcd_z1/0 | running | medium_z1 | 10.244.0.42 | | ha_proxy_z1/0 | running | router_z1 | 10.244.0.34 | | hm9000_z1/0 | running | medium_z1 | 10.244.0.138 | | loggregator_trafficcontroller_z1/0 | running | small_z1 | 10.244.0.146 | | loggregator_z1/0 | running | medium_z1 | 10.244.0.142 | | nats_z1/0 | running | medium_z1 | 10.244.0.6 | | postgres_z1/0 | running | medium_z1 | 10.244.0.30 | | router_z1/0 | running | router_z1 | 10.244.0.22 | | runner_z1/0 | running | runner_z1 | 10.244.0.26 | | uaa_z1/0 | running | medium_z1 | 10.244.0.130 | +------------------------------------+---------+---------------+--------------+ VMs total: 11
CloudFoundry in One Box简介:Bosh-lite相关推荐
- windows下用BOSH lite方式在单个VM中安装Cloud Foundry2.x
windows下用BOSH lite方式在单个VM中安装Cloud Foundry2.x 前言 Cloud Foundry组织的官方文档提供了一种方式,BOSH Lite,可以在单个VM上部署Clou ...
- 计算机视觉 滑动窗方法,图像分割相关技术之滑动窗口、RPN以及anchor box简介
图像分割相关技术之滑动窗口.RPN以及anchor box简介 标签:## 时间:2019/11/17 11:07:25 作者:小木 对象识别(object recognition)是计算机视觉(co ...
- openstack用bosh部署cloudfoundry(五)---用bosh部署cloudfoundry
利用bosh部署cloudfoundry的过程和部署bosh的过程基本一样,准备三样东西,stemcell-用来生成镜像并创建虚拟机以及编译release,release里面包含所有要部署的组件的包, ...
- TensorFlow Lite Micro简介与使用
目录 简介 为何不直接使用TensorFlow模型 Challenges(挑战) 模型转换 模型导出为MCU能识别的文件 TF Lite怎么在MCU上运行 简介 TensorFlow Lite是Ten ...
- 开源PaaS工具CloudFoundry落地阿里云
云计算技术的不断成熟和完善,尤其是IaaS平台的不断发展,使得越来越多的企业和用户青睐于将自己的业务和应用不断的从传统IT设施迁移到云上,在灵活.高效管理应用,快速扩展业务的同时不断地降低基础设施的运 ...
- 音视频解封装:MP4核心Box详解及H264AAC打包方案
问题背景: 上一篇文章<音视频封装:MP4结构概述和分析工具>让大家看了下MP4的主要结构和推荐了一些分析工具,如果你对MP4没有任何了解,还是先看上文,了解MP4的基本结构,其中还有许 ...
- [教程]使用Lite MP4 Tool专业制作MP4(AVC)视频格式 - 指导教程
简介: Lite MP4 Tool可以自动生成avs,并编码成MP4AVC格式.对想制作出专业水准的MP4AVC的压制新手来说是一件非常方便的工具.本文指在带大家认识下如何使用Lite MP4 Too ...
- Admin Lite v3.1 - PHP 管理面板 + 用户管理
源码简介 ADMIN LITE 是强大的 Codeigniter 管理面板,用于使用 Codeigniter 框架启动新项目. 它是为自定义 CodeIgniter 项目开发的. 它涵盖了当今项目所需 ...
- Scanners Box
本文转自网络文章,内容均为非盈利,版权归原作者所有. 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除. 原文作者:Wester 项目地址:Scanners Box 简介 Scanners Box ...
最新文章
- 焦李成教授谈深度神经网络发展历程
- python多元线性回归模型_python – 使用Tensorflow的多元线性回归模型
- Linux基础之网络配置
- bzoj2720 [Violet 5]列队春游
- CAFFE学习笔记(一)Caffe_Example之训练mnist
- linux运维技巧,Linux运维需要掌握的17个实用技巧
- VTK:可视化之NamedColors
- Dojo-API介绍
- 计算机科学与技术考研课程安排,计算机科学与技术(0812)硕士研究生培养方案(一)...
- devops定义_在层中定义DevOps
- 距离矢量算法matlab实现,一种基于最小费用距离模型的城市生态网络构建方法与流程...
- 注意了!人社部宣布:未来5年,这 10 个新职业有千万缺口
- python把list的所有元素生成排列和组合
- Pazera Free MP4 To MP3 Converter 1.6 中文64位+32位便携版,免费的视频转换器
- 计算机格式化命令符号,格式化c盘命令是什么 格式化c盘会怎么样【图文】
- 这届年轻人正在背着你偷偷攒钱
- Android应用 开机自启动
- 压力传感器故障检测方法
- 解决了群友的js的问题 (! + [] + [] + ![]).length = 9 的验证 - Kaiqisan
- 飞腾2000/4C调试问题记录
热门文章
- SpringBoot入门学习(一)
- rust 蓝卡_rust蓝卡在哪里弄 | 手游网游页游攻略大全
- 低代码/零代码的敏捷开发框架
- 泛物云计算机,「博纳云」博纳云(BonusCloud):全球泛载雾计算平台
- 语音短时能量计算——Python实现
- 【ThinkPHP】Fatal error: Uncaught think\exception\ErrorException: include(): Filename cannot be empty.
- iOS攻防 - (六)iOS应用使用Clutch脱壳
- 完全使用Linux工作(二)
- 网店管理细节流程问题
- 自动驾驶虚拟仿真测试介绍(7):MIL、SIL、PIL和HIL是个啥