开源的PaaS方案:在OpenStack上部署CloudFoundry (三)部署BOSH
BOSH是CloudFoundry提供的用来安装部署和升级CloudFoundry的自动化工具,可是说是CloudFoundry的一部分。总体来说,BOSH是Client/Server结构, BOSH客户端称作BOSH CLI,BOSH服务器端由BOSH Director,NATS,HealthMonitor等组件组成, 详见http://docs.cloudfoundry.org/bosh/
完整的BOSH是一个分布式的环境,本文为了简化BOSH的安装,将BOSH所有的组件安装在一个虚拟机上,BOSH的这种部署方式称为MicroBOSH。
将描述如果在CentOS环境下部署BOSH客户端和在OpenStack环境上部署MicroBOSH工具。
3.1 安装ruby环境
3.1.1 作者使用rbenv来管理ruby,所以安装rbenv和ruby 环境 (如果rbenv已经安装完成或者使用rvm可跳过此步)
- # rm -rf $HOME/.rbenv
- # git clone https://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
- # source ~/.bash_profile
- # echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
- # source ~/.bash_profile
- # rbenv install 1.9.3-p551
- # rbenv global 1.9.3-p551
如果运行上述命令遇到 compile 问题 或者make 问题 比如 The Ruby openssl extension was not compiled. Missing the OpenSSL lib? 导致安装失败,
参看
3.1.2 安装bosh客户端
- rbenv rehash
- gem sources --remove https://rubygems.org/ # 换淘宝镜像
- gem sources -a https://ruby.taobao.org/
- gem sources -l
- gem update --system
- gem install rake
- gem pristine rake
- gem install bundler
- gem install nokogiri -- --use-system-libraries
- gem install pg -- --use-system-libraries
- gem install bosh_cli bosh_cli_plugin_micro --no-ri --no-rdoc
3.1.3 为安置MicroBosh和CloudFoundry配置SecurityGroup
(1) 创建BOSH security group,允许bosh访问
- # nova secgroup-create bosh "security group for bosh access”
- # nova secgroup-add-rule bosh udp 53 53 0.0.0.0/0
- # nova secgroup-add-rule bosh tcp 4222 4222 0.0.0.0/0
- # nova secgroup-add-rule bosh udp 68 68 0.0.0.0/0
- # nova secgroup-add-rule bosh tcp 25555 25555 0.0.0.0/0
- # nova secgroup-add-group-rule bosh bosh tcp 1 65535
- # nova secgroup-add-rule bosh tcp 6868 6868 0.0.0.0/0
- # nova secgroup-add-rule bosh tcp 53 53 0.0.0.0/0
- # nova secgroup-add-rule bosh tcp 25250 25250 0.0.0.0/0
- # nova secgroup-add-rule bosh tcp 25777 25777 0.0.0.0/0
(2) 创建security group, 允许SSH 访问
- # nova secgroup-create ssh "security group for ssh access”
- # nova secgroup-add-rule ssh icmp -1 -1 0.0.0.0/0
- # nova secgroup-add-rule ssh tcp 22 22 0.0.0.0/0
- # nova secgroup-add-rule ssh udp 68 68 0.0.0.0/0
(3) 创建Cloudfoundry内网security group
- # nova secgroup-create cf-private "cf internal security group"
- # nova secgroup-add-rule cf-private udp 68 68 0.0.0.0/0
- # nova secgroup-add-rule cf-private udp 3456 3456 0.0.0.0/0
- # nova secgroup-add-group-rule cf-private bosh tcp 1 65535
(4) 创建CloudFoundry外网访问security group
- # nova secgroup-create cf-public "security group for cloudfoundry public access"
- # nova secgroup-add-rule cf-public tcp 443 443 0.0.0.0/0
- # nova secgroup-add-rule cf-public udp 68 68 0.0.0.0/0
- # nova secgroup-add-rule cf-public tcp 80 80 0.0.0.0/0
3.2 部署MicroBosh
3.2.1 创建microbosh keypair
- # nova keypair-add microbosh > microbosh.pem
- # chmod 400 microbosh.pem
3.2.2 创建工作目录
- # mkdir -p ~/bosh-workspace/deployments/microbosh
- # cd ~/bosh-workspace/deployments/microbosh
3.2.3 为microbosh创建一个floating ip
- # nova floating-ip-create public
- +--------------+-----------+----------+--------+
- | Ip | Server Id | Fixed Ip | Pool |
- +--------------+-----------+----------+--------+
- | 172.24.4.229 | | - | public |
- +--------------+-----------+----------+--------+
3.2.4 创建并且编辑部署描述文件microbosh.yml
---
name: microbosh-openstack logging:
level: DEBUG network:
type: dynamic #内网ip的分配方式
vip: 172.24.10.132 #外网浮动ip resources:
persistent_disk: 20000
cloud_properties:
instance_type: m1.small cloud:
plugin: openstack
properties:
openstack:
auth_url: http://172.24.10.128:5000/v2.0
username: demo
api_key: openstack
tenant: demo
default_security_groups: [bosh,ssh]
default_key_name: demokey
private_key: ~/bosh-workspace/deployments/demokey.pem apply_spec:
properties:
director:
max_threads: 2
hm:
resurrector_enabled: true
ntp:
- time.asia.apple.com
下面简单介绍一下此部署文件的含义
* network 描述了Openstack中network的属性
在笔者的Openstack环境中,网络为openstack neutron network,所以在内网使用dhcp获取ip, 因此type为dynamic。cloud_properties中的net_id是可以使用dhcp获得ip的内网地址,此id可以使用neutron net-list得到
- # neutron net-list
- +--------------------------------------+---------+--------------------------------------------------+
- | id | name | subnets |
- +--------------------------------------+---------+--------------------------------------------------+
- | 0fbe7f27-e732-4954-9134-5486d7617727 | public | 110583d9-a905-428a-a494-3c95e4a6bca6 |
- | 9e5a6fd5-fa2e-48da-94ce-f85337bc2451 | private | 052030e6-626a-4a57-b8dc-b8ab239f419d 10.0.0.0/24 |
- +--------------------------------------+---------+--------------------------------------------------+
为了能够从外网访问microbosh,我们需要为bosh director指定一个floating ip, bosh会自动把这个ip关联到bosh director
* resource描述了为micro bosh director分配多少资源,instance_type定义了此虚拟机的openstack flavor,persistent_disk定义了为此虚拟机挂接多大的永久磁盘
* cloud描述了如何访问openstack,其中大部分内容可以从安装产生的keystonerc_demo中找到,
- # cat $HOME/keystonerc_demo
- export OS_USERNAME=demo
- export OS_TENANT_NAME=demo
- export OS_PASSWORD=73b3b497ca3a42d1
- export OS_AUTH_URL=http://<ip>:35357/v2.0/
- export PS1='[\u@\h \W(keystone_demo)]\$ '
* apply_spec定义了Micro bosh得属性,这里面我们只需要修改一项,那就是时间服务器的地址<ntp server ip>, 例如修改为time.asia.apple.com
3.2.5 下载microbosh的虚拟机模板(stemcell)
(1) 由于GFW的缘故,把下面这句加到/etc/hosts中
54.231.244.8 s3.amazonaws.com
(2) 创建stemcell目录
- # mkdir -p ~/bosh-workspace/stemcells
- # cd ~/bosh-workspace/stemcells
(3) 下载micro bosh的stemcell
- # bosh public stemcells | grep -i openstack
- | bosh-stemcell-2427-openstack-kvm-ubuntu.tgz |
- | bosh-stemcell-2624-openstack-kvm-centos.tgz |
- | bosh-stemcell-2624-openstack-kvm-ubuntu-lucid.tgz |
- | bosh-stemcell-2749-openstack-kvm-centos-go_agent.tgz |
- | bosh-stemcell-2749-openstack-kvm-ubuntu-trusty-go_agent.tgz |
- | bosh-stemcell-2652-openstack-kvm-ubuntu-lucid-go_agent.tgz |
- | bosh-stemcell-2719.1-openstack-kvm-centos-go_agent.tgz |
- | bosh-stemcell-2719.1-openstack-kvm-ubuntu-trusty-go_agent.tgz |
- | bosh-stemcell-2719.2-openstack-kvm-centos-go_agent.tgz |
- | bosh-stemcell-2719.2-openstack-kvm-ubuntu-trusty-go_agent.tgz |
- | bosh-stemcell-2719.3-openstack-kvm-ubuntu-trusty-go_agent.tgz |
- # bosh download public stemcell bosh-stemcell-2652-openstack-kvm-ubuntu-lucid-go_agent.tgz
这个stemcell虽然不是最新版,但是笔者验证通过,更新版本的stemcell笔者没有尝试
(4) 部署Micro Bosh
*设置部署描述文件
- # cd ~/bosh-workspace/deployments
- # bosh micro deployment microbosh
* 部署Micro Bosh
- # bosh micro deploy ~/bosh-workspace/stemcells/bosh-stemcell-2652-openstack-kvm-ubuntu-lucid-go_agent.tgz 执行这一句之后会报错错误信息如下
`/home/roger/.gem/ruby/gems/fog-aws-0.1.2/lib/fog/aws/auto_scaling.rb:4:in `<class:AutoScaling>': uninitialized constant Fog::AWS::CredentialFetcher (NameError)
from /home/roger/.gem/ruby/gems/fog-aws-0.1.2/lib/fog/aws/auto_scaling.rb:3:in `<module:AWS>'
from /home/roger/.gem/ruby/gems/fog-aws-0.1.2/lib/fog/aws/auto_scaling.rb:2:in `<module:Fog>'
from /home/roger/.gem/ruby/gems/fog-aws-0.1.2/lib/fog/aws/auto_scaling.rb:1:in `<top (required)>'
from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:73:in `require'
from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:73:in `require'
from /home/roger/.gem/ruby/gems/fog-1.27.0/lib/fog/aws.rb:2:in `<top (required)>'
from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:73:in `require'
from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:73:in `require'
from /home/roger/.gem/ruby/gems/fog-1.27.0/lib/fog.rb:23:in `<top (required)>'
from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:73:in `require'
from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:73:in `require'
from /home/roger/.gem/ruby/gems/bosh-registry-1.2922.0/lib/bosh/registry.rb:10:in `<top (required)>'
from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:73:in `require'
from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:73:in `require'
from /home/roger/.gem/ruby/gems/bosh-registry-1.2922.0/bin/bosh-registry:3:in `<top (required)>'
from /home/roger/bin/bosh-registry:23:in `load'
from /home/roger/bin/bosh-registry:23:in `<main>'
bosh-registry -c /tmp/d20150414-92091-1rc0vqs/bosh_registry_yml20150414- 92091-9n3izm` failed, exit status=1``
修改
/home/roger/.gem/ruby/gems/fog-aws-0.1.2/lib/fog/aws/auto_scaling.rb 在第一行之前加上如下语句
require_relative('.') 问题解决
(5) 验证Micro Bosh
- # bosh target <microbosh ip address>
其中的microbosh ip address是预先申请的floating ip
(6) 使用ssh访问micro bosh
- # ssh -i <path to microbosh private key> vcap@<microbosh ip>
参考文章 http://blog.csdn.net/mainGalaxy/article/details/41286445
开源的PaaS方案:在OpenStack上部署CloudFoundry (三)部署BOSH的更多相关文章
- 开源的PaaS方案:在OpenStack上部署CloudFoundry (一)简介
目录(?)[-] OpenStack简介 OpenStack是一个美国国家航空航天局和Rackspace合作研发的以Apache许可证授权并且是一个自由软件和开放源代码项目 OpenStack是一个云 ...
- 开源的PaaS方案:在OpenStack上部署CloudFoundry (二)部署OpenStack
硬件要求 安装OpenStack 1 安装CentOS 65系统并清空iptables防火墙规则 2 安装系统需要的工具包包括Openstack依赖的和CloudFoundry依赖的 3 安装EPEL ...
- 开源的PaaS方案:在OpenStack上部署CloudFoundry (四)使用Micro Bosh部署CloudFoundry
使用bosh部署应用是需要两部分,一个是创建虚拟机使用的模板stemcell,另外一个是应该的Release.所以,部署CloudFoundry之前需要上传stencil和release 4.1.1 ...
- 开源的PaaS方案:在OpenStack上部署CloudFoundry (五)常见问题
部署CloudFoundry可能遇到的问题 1. Bosh 报告 OpenStack API Request Entity Too Large error 解决办法,修改/etc/nova/api-p ...
- linux部署MantisBT(三)部署MantisBT
三.部署MantisBT 1.下载MantisBT https://www.mantisbt.org/download.php 2.将MantisBT安装包放在/apache/htdocs下并重命名为 ...
- 快速安装Rainbond——开源企业级Paas平台
快速安装Rainbond--开源企业级Paas平台 参考:https://www.rainbond.com/docs/user-operations/install/online_install/ R ...
- OpenStack实践系列①openstack简介及基础环境部署
OpenStack实践系列①openstack简介及基础环境部署 一.OpenStack初探1.1 OpenStack简介 OpenStack是一整套开源软件项目的综合,它允许企业或服务提供者建立.运 ...
- 你必须知道的容器日志 (2) 开源日志管理方案 ELK
本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章.上一篇<你必须知道的容器日志(1)>中介绍了Docker自带的log ...
- Github 29K Star的开源对象存储方案——Minio入门宝典
对象存储不是什么新技术了,但是从来都没有被替代掉.为什么?在这个大数据发展迅速地时代,数据已经不单单是简单的文本数据了,每天有大量的图片,视频数据产生,在短视频火爆的今天,这个数量还在增加.有数据表明 ...
随机推荐
- C/C++捕获段错误,打印出错的具体位置(精确到哪一行)_转
转自:C/C++捕获段错误,打印出错的具体位置(精确到哪一行) 修订:2013-02-16 其实还可以使用 glibc 的 backtrace_symbols 函数,把栈帧各返回地址里面的数字地址翻译 ...
- Axel 快速下载
Axel 是一个轻量级下载程序,它和其他加速器一样,对同一个文件建立多个连接,每个连接下载单独的文件片段以更快地完成下载. Axel 支持 HTTP.HTTPS.FTP 和 FTPS 协议.它也可以使 ...
- 2012关闭ECN
Windows Server 2012 关闭TCP ECN (2014-03-20 18:22:42) 转载▼ 标签: it 分类: windows
- DataTables 固定列时实现 hover
之前说过 DataTables 表格固定栏使用方法 .分析下它的代码,如下图 它实现固定左侧的原理就是把需要固定的数据复制一份,覆盖在全部数据的上面,用绝对定位固定在左边. 这样子有个问题就是,表格的 ...
- php 三级连动及 php+ajax的调试方法
js获得select的value值 把这个值以ajax的方法传给外页php处理 php得到这个value值,把它作为查询条件进行处理 ajax很神奇,会把这个结果显现出来 总之,ajax负责传值和显示 ...
- 【甘道夫】通过Mahout构建贝叶斯文本分类器案例具体解释
背景&目标: 1.sport.tar 是体育类的文章,一共同拥有10个类别. 用这些原始材料构造一个体育类的文本分类器,并測试对照bayes和cbayes的效果: 记录分类器的构造 ...
- 安装 oracle [转]
先下载3个东西:链接忘记了,大家自己找一下 1 ORA+11+G+R2+server+64bit+for+windows.iso (Oracle 安装文件) 2 PLSql 3 oracle6 ...
- VMWare虚拟机提示:打不开磁盘…或它所依赖的某个快照磁盘,开启模块DiskEarly的操作失败,未能启动虚拟机
将电脑上存在的虚拟机复制一份后打开运行,弹出错误提示: 打不开磁盘…或它所依赖的某个快照磁盘,开启模块DiskEarly的操作失败,未能启动虚拟机. 解决方法如下: 打开存放虚拟机系统硬盘的所在文件夹 ...
- VC++:Debug出错,提示错误在findfile.cpp (Line 369)
调试程序的Debug版本,出现断言框,定位于库文件findfile.cpp 第369行: void CFileFind::AssertValid() const { // if you trip th ...
- NFS挂在文件系统启动参数
1.tiny6410(增强版)bootargs启动参数(周学伟)noinitrd console=ttySAC0,115200 lcd=S70 init=/init root=/dev/nfs rw ...