开源的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可跳过此步)

[python] view plaincopy

  1. # rm -rf $HOME/.rbenv
  2. # git clone git://github.com/sstephenson/rbenv.git $HOME/.rbenv
  3. # git clone https://github.com/sstephenson/ruby-build.git $HOME/.rbenv/plugins/ruby-build
  4. # echo ‘export PATH="$HOME/.rbenv/bin:$PATH"‘ >> ~/.bash_profile
  5. # source ~/.bash_profile
  6. # echo ‘eval "$(rbenv init -)"‘ >> ~/.bash_profile
  7. # source ~/.bash_profile
  8. # rbenv install 1.9.3-p547
  9. # rbenv global 1.9.3-p547

3.1.2 安装bosh客户端

[python] view plaincopy

  1. # rbenv rehash
  2. # gem update --system
  3. # gem pristine rake
  4. # gem install bundler OpenSSL
  5. # gem install nokogiri -- --use-system-libraries
  6. # gem install pg -- --use-system-libraries
  7. # gem install bosh_cli
  8. # gem install bosh_cli_plugin_micro

3.1.3 为安置MicroBosh和CloudFoundry配置SecurityGroup

(1) 创建BOSH security group,允许bosh访问

[python] view plaincopy

  1. # nova secgroup-create bosh "security group for bosh access”
  2. # nova secgroup-add-rule bosh udp 53 53 0.0.0.0/0
  3. # nova secgroup-add-rule bosh tcp 4222 4222 0.0.0.0/0
  4. # nova secgroup-add-rule bosh udp 68 68 0.0.0.0/0
  5. # nova secgroup-add-rule bosh tcp 25555 25555 0.0.0.0/0
  6. # nova secgroup-add-group-rule bosh bosh tcp 1 65535
  7. # nova secgroup-add-rule bosh tcp 6868 6868 0.0.0.0/0
  8. # nova secgroup-add-rule bosh tcp 53 53 0.0.0.0/0
  9. # nova secgroup-add-rule bosh tcp 25250 25250 0.0.0.0/0
  10. # nova secgroup-add-rule bosh tcp 25777 25777 0.0.0.0/0

(2) 创建security group, 允许SSH 访问

[python] view plaincopy

  1. # nova secgroup-create ssh "security group for ssh access”
  2. # nova secgroup-add-rule ssh icmp -1  -1  0.0.0.0/0
  3. # nova secgroup-add-rule ssh tcp 22 22 0.0.0.0/0
  4. # nova secgroup-add-rule ssh udp 68 68  0.0.0.0/0

(3) 创建Cloudfoundry内网security group

[python] view plaincopy

  1. # nova secgroup-create cf-private "cf internal security group"
  2. # nova secgroup-add-rule cf-private udp 68 68 0.0.0.0/0
  3. # nova secgroup-add-rule cf-private udp 3456 3456 0.0.0.0/0
  4. # nova secgroup-add-group-rule cf-private bosh tcp 1 65535

(4) 创建CloudFoundry外网访问security group

[python] view plaincopy

  1. # nova secgroup-create cf-public "security group for cloudfoundry public access"
  2. # nova secgroup-add-rule cf-public tcp 443 443 0.0.0.0/0
  3. # nova secgroup-add-rule cf-public udp 68 68 0.0.0.0/0
  4. # nova secgroup-add-rule cf-public tcp 80 80 0.0.0.0/0

3.2 部署MicroBosh

3.2.1 创建microbosh keypair

[python] view plaincopy

  1. # nova keypair-add microbosh > microbosh.cer
  2. # chmod 400 microbosh.cer

3.2.2 创建工作目录

[python] view plaincopy

  1. # mkdir -p ~/bosh-workspace/deployments/microbosh-openstack
  2. # cd ~/bosh-workspace/deployments/microbosh-openstack

3.2.3 为microbosh创建一个floating ip

[python] view plaincopy

  1. #  nova floating-ip-create public
  2. +--------------+-----------+----------+--------+
  3. | Ip           | Server Id | Fixed Ip | Pool   |
  4. +--------------+-----------+----------+--------+
  5. | 172.24.4.229 |           | -        | public |
  6. +--------------+-----------+----------+--------+

3.2.4 创建并且编辑部署描述文件microbosh.yml

[ruby] view plaincopy

  1. ---
  2. name: microbosh-openstack
  3. logging:
  4. level: DEBUG
  5. network:
  6. type: dynamic
  7. vip: 172.24.4.229
  8. cloud_properties:
  9. net_id: bfc9b30b-8b44-4f97-a762-c39b2f774d78
  10. resources:
  11. persistent_disk: 16384
  12. cloud_properties:
  13. instance_type: m1.medium
  14. cloud:
  15. plugin: openstack
  16. properties:
  17. openstack:
  18. auth_url: http://<ip>:5000/v2.0
  19. username: demo
  20. api_key: 73b3b497ca3a42d1
  21. tenant: demo
  22. default_security_groups: ["ssh", "bosh"]
  23. default_key_name: microbosh
  24. private_key: $HOME/microbosh.cer
  25. apply_spec:
  26. properties:
  27. director:
  28. max_threads: 3
  29. hm:
  30. resurrector_enabled: true
  31. ntp: # This example uses the North American NTP servers. Edit for your region.
  32. - <ntp server ip>

下面简单介绍一下此部署文件的含义
* network 描述了Openstack中network的属性
在笔者的Openstack环境中,网络为openstack neutron network,所以在内网使用dhcp获取ip, 因此type为dynamic。cloud_properties中的net_id是可以使用dhcp获得ip的内网地址,此id可以使用neutron net-list得到

[python] view plaincopy

  1. # neutron net-list
  2. +--------------------------------------+---------+--------------------------------------------------+
  3. | id                                   | name    | subnets                                          |
  4. +--------------------------------------+---------+--------------------------------------------------+
  5. | 0fbe7f27-e732-4954-9134-5486d7617727 | public  | 110583d9-a905-428a-a494-3c95e4a6bca6             |
  6. | bfc9b30b-8b44-4f97-a762-c39b2f774d78 | private | 052030e6-626a-4a57-b8dc-b8ab239f419d 10.0.0.0/24 |
  7. +--------------------------------------+---------+--------------------------------------------------+

为了能够从外网访问microbosh,我们需要为bosh director指定一个floating ip, bosh会自动把这个ip关联到bosh director

* resource描述了为micro bosh director分配多少资源,instance_type定义了此虚拟机的openstack flavor,persistent_disk定义了为此虚拟机挂接多大的永久磁盘

* cloud描述了如何访问openstack,其中大部分内容可以从安装产生的keystonerc_demo中找到,

[python] view plaincopy

  1. # cat $HOME/keystonerc_demo
  2. export OS_USERNAME=demo
  3. export OS_TENANT_NAME=demo
  4. export OS_PASSWORD=73b3b497ca3a42d1
  5. export OS_AUTH_URL=http://<ip>:35357/v2.0/
  6. export PS1=‘[\[email protected]\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目录

[python] view plaincopy

  1. # mkdir -p ~/bosh-workspace/stemcells
  2. # cd ~/bosh-workspace/stemcells

(3) 下载micro bosh的stemcell

[python] view plaincopy

  1. # bosh public stemcells | grep -i openstack
  2. | bosh-stemcell-2427-openstack-kvm-ubuntu.tgz                     |
  3. | bosh-stemcell-2624-openstack-kvm-centos.tgz                     |
  4. | bosh-stemcell-2624-openstack-kvm-ubuntu-lucid.tgz               |
  5. | bosh-stemcell-2749-openstack-kvm-centos-go_agent.tgz            |
  6. | bosh-stemcell-2749-openstack-kvm-ubuntu-trusty-go_agent.tgz     |
  7. | bosh-stemcell-2652-openstack-kvm-ubuntu-lucid-go_agent.tgz      |
  8. | bosh-stemcell-2719.1-openstack-kvm-centos-go_agent.tgz          |
  9. | bosh-stemcell-2719.1-openstack-kvm-ubuntu-trusty-go_agent.tgz   |
  10. | bosh-stemcell-2719.2-openstack-kvm-centos-go_agent.tgz          |
  11. | bosh-stemcell-2719.2-openstack-kvm-ubuntu-trusty-go_agent.tgz   |
  12. | bosh-stemcell-2719.3-openstack-kvm-ubuntu-trusty-go_agent.tgz   |

[python] view plaincopy

  1. # bosh download public stemcell bosh-stemcell-2652-openstack-kvm-ubuntu-lucid-go_agent.tgz

这个stemcell虽然不是最新版,但是笔者验证通过,更新版本的stemcell笔者没有尝试

(4) 部署Micro Bosh

*设置部署描述文件

[python] view plaincopy

  1. # cd ~/bosh-workspace/deployments
  2. # bosh micro deployment microbosh-openstack

* 部署Micro Bosh

[python] view plaincopy

  1. # bosh micro deploy ~/bosh-workspace/stemcells/bosh-stemcell-2652-openstack-kvm-ubuntu-lucid-go_agent.tgz

(5) 验证Micro Bosh

[python] view plaincopy

  1. # bosh target <microbosh ip address>

其中的microbosh ip address是预先申请的floating ip

(6) 使用ssh访问micro bosh

[python] view plaincopy

    1. # ssh -i <path to microbosh private key> [email protected]<microbosh ip>
时间: 2024-10-14 11:19:02

开源的PaaS方案:在OpenStack上部署CloudFoundry (三)部署BOSH的相关文章

开源的PaaS方案:在OpenStack上部署CloudFoundry (一)简介

目录(?)[-] OpenStack简介 OpenStack是一个美国国家航空航天局和Rackspace合作研发的以Apache许可证授权并且是一个自由软件和开放源代码项目 OpenStack是一个云平台管理的项目它不是一个软件这个项目由几个主要的组件组合起来完成一些具体的工作 CloudFoundry简介 PaaS(Platform as a Service)是业界一个比较热门的话题.本文以简洁的方式介绍一种完全使用开源软件迅速部署一个PaaS平台的技术方案:基于OpenStack平台部署Cl

开源的PaaS方案:在OpenStack上部署CloudFoundry (二)部署OpenStack

硬件要求 安装OpenStack 1 安装CentOS 65系统并清空iptables防火墙规则 2 安装系统需要的工具包包括Openstack依赖的和CloudFoundry依赖的 3 安装EPEL repo 4 Upgrade 当前系统 5 安装openstack repo 目前CloudFoundry最高只能支持Havana版的Openstack 6 安装packstack 7 同步时间 8 安装单节点openstack 配置Openstack 0 安装后的Openstack Dashbo

开源的PaaS方案:在OpenStack上部署CloudFoundry (四)使用Micro Bosh部署CloudFoundry

使用bosh部署应用是需要两部分,一个是创建虚拟机使用的模板stemcell,另外一个是应该的Release.所以,部署CloudFoundry之前需要上传stencil和release 4.1 使用bosh上传Stemcell [python] view plaincopy # bosh upload stemcell ~/stemcell/bosh-stemcell-2652-openstack-kvm-ubuntu-lucid-go_agent.tgz # bosh stemcells +

开源的PaaS方案:在OpenStack上部署CloudFoundry (五)常见问题

部署CloudFoundry可能遇到的问题 1. Bosh 报告 OpenStack API Request Entity Too Large error 解决办法,修改/etc/nova/api-paste.conf文件,添加limits属性 [python] view plaincopy [filter:ratelimit] paste.filter_factory = nova.api.openstack.compute.limits:RateLimitingMiddleware.fact

linux部署MantisBT(三)部署MantisBT

三.部署MantisBT 1.下载MantisBT https://www.mantisbt.org/download.php 2.将MantisBT安装包放在/apache/htdocs下并重命名为mantis,重启apache 3.配置MantisBT 打开ip+port/mantis,配置数据库 提交后,各项校验全部为GOOD.表明安装成功 mantis/config目录下config_inc.php.sample重命名为config_inc.php 配置config_inc.php中的数

OpenStack Icehouse私有云实战部署

前言 相信你一定对"云主机"一词并不陌生吧,通过在Web页面选择所需主机配置,即可快速定制一台属于自己的虚拟主机,并实现登陆操作,大大节省了物理资源.但这一过程是如何实现的呢?本文带来OpenStack Icehouse私有云实战部署. OpenStack 简介 OpenStack是由网络主机服务商Rackspace和美国宇航局联合推出的一个开源项目,OpenStack的目标是为所有类型的云提供一个易于实施,可大规模扩展,且功能丰富的解决方案,任何公司或个人都可以搭建自己的云计算环境(

[转载] 一共81个,开源大数据处理工具汇总(上)

原文: http://www.36dsj.com/archives/24852 本文一共分为上下两部分.我们将针对大数据开源工具不同的用处来进行分类,并且附上了官网和部分下载链接,希望能给做大数据的朋友做个参考.下面是第一部分. 查询引擎 一.Phoenix 贡献者::Salesforce 简介:这是一个Java中间层,可以让开发者在Apache HBase上执行SQL查询.Phoenix完全使用Java编写,代码位于GitHub上,并且提供了一个客户端可嵌入的JDBC驱动. Phoenix查询

【开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位...

[转]http://www.tuicool.com/articles/jyA3MrU Android开源库 自己一直很喜欢Android开发,就如博客签名一样, 我是程序猿,我为自己代言 . 在摸索过程中,GitHub上搜集了很多很棒的Android第三方库,推荐给在苦苦寻找的开发者,而且我会 不定期的更新 这篇文章. Android下的优秀开发库数不胜数,在本文中,我列举的多是开发流程中最常用的一些.如果你还想了解更多的Android开源库,可以关注我的博客,每一个库都是我认真查看或者编译运行

基于OpenStack(IceHouse+neutron) 部署 CloudFounry v183

之前苦于没有物理服务器,一直在虚拟机上小打小闹Cf,现在终于有了物理服务器,而且已经掌握了OpenStack的各个功能点,终于可以试一下了.本文基于OpenStack IceHouse 版本,使用Neutron网络搭建cf-183 版本,在网上查找资料,很少有使用neutron网络搭建的,目前也是使用了两个HM,解决了healthmanager 单点的问题,但是nats仍然是单点部署,但是参考官方文档的说法,nats很稳定,nats所在的虚拟机挂掉,可以由bosh 恢复. 环境准备 1.部署完成