wdcsx 发表于 2015-10-11 07:58:38

OpenStack使用Bosh部署CloudFoundry(四)—使用Micro Bosh部署Bosh

目录(?)[-]

[*]上传Bosh Stemcell到Micro Bosh中
[*]下载Bosh Release代码并打包
[*]上传Bosh Release包到Micro Bosh中
[*]确认已经上传的stemcell和release
[*]创建部署Bosh的Manifest文件
[*]部署Bosh
[*]验证部署是否成功

版本说明:
CloudFoundry:V2版本-v149+(本文后续章节中的Manifest适用于149+版本的CF Release)

OpenStack:Grizzly版本+nova-network
CloudFoundry部署交流QQ群:176302388

本文介绍如何使用Micro Bosh来部署Bosh,部署需要创建8个虚拟机来部署8个Bosh组件,所以,至少得准备好8个Fixed IP,后边使用Bosh的时候需要访问Director组件及配置DNS,所以准备至少2个Floating IP,本文中为(10.68.19.131和10.68.19.132),Bosh组件的详细介绍可以参看下边连接。
BOSH组件介绍:http://docs.cloudfoundry.com/docs/running/bosh/components/


下面是部署步骤:
1、上传Bosh Stemcell到Micro Bosh中
viewplaincopyhttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/CODE_ico.pnghttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/ico_fork.svg
[*]root@bosh-cli:~/bosh-workspace/stemcells# bosh upload stemcell bosh-stemcell-latest-openstack-kvm-ubuntu.tgz
[*]
[*]Verifying stemcell...
[*]File exists and readable                                     OK
[*]Using cached manifest...
[*]Stemcell properties                                          OK
[*]
[*]Stemcell info
[*]-------------
[*]Name:    bosh-openstack-kvm-ubuntu
[*]Version: 1478
[*]
[*]Checking if stemcell already exists...
[*]No
[*]
[*]Uploading stemcell...
[*]
[*]latest-bosh-s: 100% |ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| 251.3MB11.3MB/s Time: 00:00:22
[*]
[*]Director task 1
[*]
[*]Update stemcell
[*]extracting stemcell archive (00:00:06)
[*]verifying stemcell manifest (00:00:00)
[*]checking if this stemcell already exists (00:00:00)
[*]uploading stemcell bosh-stemcell/776 to the cloud (00:01:53)
[*]save stemcell bosh-stemcell/776 (f207bfcd-f0cb-4ea2-b753-022e6234ebfa) (00:00:00)
[*]Done                  5/5 00:01:59
[*]
[*]Task 1 done
[*]Started         2013-12-16 09:51:59 UTC
[*]Finished      2013-12-16 09:53:58 UTC
[*]Duration      00:01:59
[*]
[*]Stemcell uploaded and created
2、下载Bosh Release代码并打包
viewplaincopyhttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/CODE_ico.pnghttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/ico_fork.svg
[*]root@bosh-cli:~# cd ~/bosh-workspace
[*]root@bosh-cli:~# git clone git://github.com/cloudfoundry/bosh.git
耗费时间较长,请耐心等待。
viewplaincopyhttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/CODE_ico.pnghttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/ico_fork.svg
[*]root@bosh-cli:~# cd ~/bosh-workspace/bosh
[*]root@bosh-cli:~# apt-get install libxslt-dev libxml2-dev libmysql-ruby libmysqlclient-dev libpq-dev
[*]root@bosh-cli:~# bundle install --local
[*]root@bosh-cli:~# bundle exec rake release:create_dev_release

可以先修改~/bosh-workspace/bosh/Gemfile的source为淘宝源:

viewplaincopyhttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/CODE_ico.pnghttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/ico_fork.svg
[*]source 'http://ruby.taobao.org'

打包结束得到以下输出:

viewplaincopyhttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/CODE_ico.pnghttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/ico_fork.svg
[*]bosh create release --force
[*]Syncing blobs...
[*]
[*]Building DEV release
[*]---------------------------------
[*]
[*]....
[*]
[*]Release version: 13.1-dev
[*]Release manifest: /root/bosh-workspace/bosh/release/dev_releases/bosh-13.1-dev.yml
3、上传Bosh Release包到Micro Bosh中
viewplaincopyhttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/CODE_ico.pnghttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/ico_fork.svg
[*]root@bosh-cli:~/bosh-workspace# bosh upload release ~/bosh-workspace/bosh/release/dev_releases/bosh-13.1-dev.yml
成功后得到以下输出:

viewplaincopyhttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/CODE_ico.pnghttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/ico_fork.svg
[*]....
[*]
[*]Creating new jobs
[*]blobstore/3.1-dev (00:00:00)
[*]powerdns/3.1-dev (00:00:00)
[*]redis/3 (00:00:00)
[*]nats/5 (00:00:00)
[*]postgres/4.1-dev (00:00:00)
[*]director/11.2-dev (00:00:00)
[*]health_monitor/5.1-dev (00:00:00)
[*]registry/0.1-dev (00:00:00)
[*]Done                  8/8 00:00:00
[*]
[*]Release has been created
[*]bosh/13.1-dev (00:00:00)
[*]Done                  1/1 00:00:00
[*]
[*]Task 2 done
[*]Started         2013-12-16 10:06:26 UTC
[*]Finished      2013-12-16 10:06:46 UTC
[*]Duration      00:00:20
[*]
[*]Release uploaded
4、确认已经上传的stemcell和release
viewplaincopyhttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/CODE_ico.pnghttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/ico_fork.svg
[*]root@bosh-cli:~# bosh stemcells
[*]
[*]+---------------------------+---------+--------------------------------------+
[*]| Name                      | Version | CID                                  |
[*]+---------------------------+---------+--------------------------------------+
[*]| bosh-openstack-kvm-ubuntu | 1478    | e64c6da5-f2ab-48f2-b03d-79c29d1acc43 |
[*]+---------------------------+---------+--------------------------------------+
[*]
[*]Stemcells total: 1
[*]root@bosh-cli:~# bosh releases
[*]
[*]+------+-----------+-------------+
[*]| Name | Versions| Commit Hash |
[*]+------+-----------+-------------+
[*]| bosh | 13.1-dev* | a8e43f41+   |
[*]+------+-----------+-------------+
[*](*) Currently deployed
[*](+) Uncommitted changes
[*]
[*]Releases total: 1
5、创建部署Bosh的Manifest文件
创建目录

viewplaincopyhttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/CODE_ico.pnghttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/ico_fork.svg
[*]root@bosh-cli:~# mkdir -p ~/bosh-workspace/deployments/bosh-openstack
[*]root@bosh-cli:~# cd ~/bosh-workspace/deployments/bosh-openstack
复制模板文件

viewplaincopyhttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/CODE_ico.pnghttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/ico_fork.svg
[*]root@bosh-cli:~# cp ~/bosh-workspace/bosh/release/examples/bosh-openstack-dynamic.yml bosh-openstack.yml
如果OpenStack中采用的是quantum网络组件,则使用下边的模板文件

viewplaincopyhttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/CODE_ico.pnghttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/ico_fork.svg
[*]root@bosh-cli:~# cp ~/bosh-workspace/bosh/release/examples/bosh-openstack-manual.yml bosh-openstack.yml
本次安装中使用nova-network网络组件,所以采用bosh-openstack-dynamic.yml,修改其中标记有# CHANGE 的配置项,下边是本环境中的配置,大家可参考:

viewplaincopyhttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/CODE_ico.pnghttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/ico_fork.svg
[*]---
[*]name: bosh-openstack
[*]director_uuid: 5d8c682c-290a-4194-bfc6-60248567ceab # CHANGE
[*]
[*]release:
[*]name: bosh
[*]version: latest
[*]
[*]compilation:
[*]workers: 3
[*]network: default
[*]reuse_compilation_vms: true
[*]cloud_properties:
[*]    instance_type: v1.compile # CHANGE
[*]
[*]update:
[*]canaries: 1
[*]canary_watch_time: 3000-120000
[*]update_watch_time: 3000-120000
[*]max_in_flight: 4
[*]max_errors: 1
[*]
[*]networks:
[*]- name: floating
[*]    type: vip
[*]    cloud_properties: {}
[*]- name: default
[*]    type: dynamic
[*]    cloud_properties: {}
[*]
[*]resource_pools:
[*]- name: common
[*]    network: default
[*]    size: 8
[*]    stemcell:
[*]      name: bosh-openstack-kvm-ubuntu
[*]      version: latest
[*]    cloud_properties:
[*]      instance_type: v1.micro # CHANGE
[*]
[*]jobs:
[*]- name: nats
[*]    template: nats
[*]    instances: 1
[*]    resource_pool: common
[*]    networks:
[*]      - name: default
[*]      default:
[*]
[*]- name: redis
[*]    template: redis
[*]    instances: 1
[*]    resource_pool: common
[*]    networks:
[*]      - name: default
[*]      default:
[*]
[*]- name: postgres
[*]    template: postgres
[*]    instances: 1
[*]    resource_pool: common
[*]    persistent_disk: 16384
[*]    networks:
[*]      - name: default
[*]      default:
[*]
[*]- name: powerdns
[*]    template: powerdns
[*]    instances: 1
[*]    resource_pool: common
[*]    networks:
[*]      - name: default
[*]      default:
[*]      - name: floating
[*]      static_ips:
[*]          - 10.68.19.131 # CHANGE
[*]
[*]- name: blobstore
[*]    template: blobstore
[*]    instances: 1
[*]    resource_pool: common
[*]    networks:
[*]      - name: default
[*]      default:
[*]
[*]- name: director
[*]    template: director
[*]    instances: 1
[*]    resource_pool: common
[*]    persistent_disk: 16384
[*]    networks:
[*]      - name: default
[*]      default:
[*]      - name: floating
[*]      static_ips:
[*]          - 10.68.19.132 # CHANGE
[*]
[*]- name: registry
[*]    template: registry
[*]    instances: 1
[*]    resource_pool: common
[*]    networks:
[*]      - name: default
[*]      default:
[*]
[*]- name: health_monitor
[*]    template: health_monitor
[*]    instances: 1
[*]    resource_pool: common
[*]    networks:
[*]      - name: default
[*]      default:
[*]
[*]properties:
[*]nats:
[*]    address: 0.nats.default.bosh-openstack.microbosh
[*]    user: nats
[*]    password: nats
[*]
[*]redis:
[*]    address: 0.redis.default.bosh-openstack.microbosh
[*]    password: redis
[*]
[*]postgres: &bosh_db
[*]    host: 0.postgres.default.bosh-openstack.microbosh
[*]    user: postgres
[*]    password: postgres
[*]    database: bosh
[*]
[*]dns:
[*]    address: 10.68.19.131 # CHANGE
[*]    db: *bosh_db
[*]    recursor: 10.68.19.130 # CHANGE
[*]
[*]blobstore:
[*]    address: 0.blobstore.default.bosh-openstack.microbosh
[*]    agent:
[*]      user: agent
[*]      password: agent
[*]    director:
[*]      user: director
[*]      password: director
[*]
[*]director:
[*]    name: bosh
[*]    address: 0.director.default.bosh-openstack.microbosh
[*]    db: *bosh_db
[*]
[*]registry:
[*]    address: 0.registry.default.bosh-openstack.microbosh
[*]    db: *bosh_db
[*]    http:
[*]      user: registry
[*]      password: registry
[*]
[*]hm:
[*]    http:
[*]      user: hm
[*]      password: hm
[*]    director_account:
[*]      user: admin
[*]      password: admin
[*]    resurrector_enabled: true
[*]
[*]ntp:
[*]    - 0.north-america.pool.ntp.org
[*]    - 1.north-america.pool.ntp.org
[*]
[*]openstack:
[*]    auth_url: http://10.68.19.61:5000/v2.0 # CHANGE   
[*]    username: VF # CHANGE   
[*]    api_key: 1 # CHANGE   
[*]    tenant: VF_CF # CHANGE   
[*]    region: myregion # CHANGE   
[*]    default_security_groups: ["default"] # CHANGE   
[*]    default_key_name: vkey # CHANGE

注意:director_uuid是Micro Bosh的Director的UUID,可以使用bosh status查看并复制到Manifest文件中。
6、部署Bosh
设置Bosh的部署文件

viewplaincopyhttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/CODE_ico.pnghttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/ico_fork.svg
[*]root@bosh-cli:~/bosh-workspace/deployments# bosh deployment ~/bosh-workspace/deployments/bosh-openstack/bosh-openstack.yml
[*]Deployment set to `/root/bosh-workspace/deployments/bosh-openstack/bosh-openstack.yml'
执行部署命令

viewplaincopyhttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/CODE_ico.pnghttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/ico_fork.svg
[*]root@bosh-cli:~/bosh-workspace/deployments# bosh deploy
部署时可能会遇到错误RateLimit报错,报错内容如下:

viewplaincopyhttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/CODE_ico.pnghttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/ico_fork.svg
[*]E, ERROR -- : OpenStack API Request Entity Too Large error. Check task debug log for details.
[*]/var/vcap/packages/director/gem_home/gems/bosh_openstack_cpi-1.5.0.pre.1478/lib/cloud/openstack/helpers.rb:20:in `cloud_error'
[*]/var/vcap/packages/director/gem_home/gems/bosh_openstack_cpi-1.5.0.pre.1478/lib/cloud/openstack/helpers.rb:39:in `rescue in with_openstack'
[*]/var/vcap/packages/director/gem_home/gems/bosh_openstack_cpi-1.5.0.pre.1478/lib/cloud/openstack/helpers.rb:25:in `with_openstack'
[*]/var/vcap/packages/director/gem_home/gems/bosh_openstack_cpi-1.5.0.pre.1478/lib/cloud/openstack/cloud.rb:512:in `block in set_vm_metadata'
[*]/var/vcap/packages/director/gem_home/gems/bosh_common-1.5.0.pre.1478/lib/common/thread_formatter.rb:46:in `with_thread_name'
[*]/var/vcap/packages/director/gem_home/gems/bosh_openstack_cpi-1.5.0.pre.1478/lib/cloud/openstack/cloud.rb:511:in `set_vm_metadata'
[*]/var/vcap/packages/director/gem_home/gems/director-1.5.0.pre.1478/lib/director/metadata_helper.rb:14:in `update_vm_metadata'
[*]/var/vcap/packages/director/gem_home/gems/director-1.5.0.pre.1478/lib/director/package_compiler.rb:225:in `block (2 levels) in compile_package'
[*]/var/vcap/packages/director/gem_home/gems/director-1.5.0.pre.1478/lib/director/package_compiler.rb:290:in `prepare_vm'
[*]/var/vcap/packages/director/gem_home/gems/director-1.5.0.pre.1478/lib/director/package_compiler.rb:224:in `block in compile_package'
[*]/var/vcap/packages/director/gem_home/gems/director-1.5.0.pre.1478/lib/director/lock_helper.rb:89:in `block in with_compile_lock'
[*]/var/vcap/packages/director/gem_home/gems/director-1.5.0.pre.1478/lib/director/lock.rb:58:in `lock'
[*]/var/vcap/packages/director/gem_home/gems/director-1.5.0.pre.1478/lib/director/lock_helper.rb:88:in `with_compile_lock'
[*]/var/vcap/packages/director/gem_home/gems/director-1.5.0.pre.1478/lib/director/package_compiler.rb:217:in `compile_package'
[*]/var/vcap/packages/director/gem_home/gems/director-1.5.0.pre.1478/lib/director/package_compiler.rb:205:in `block (2 levels) in process_task'
[*]/var/vcap/packages/director/gem_home/gems/director-1.5.0.pre.1478/lib/director/event_log.rb:58:in `track'
[*]/var/vcap/packages/director/gem_home/gems/director-1.5.0.pre.1478/lib/director/package_compiler.rb:203:in `block in process_task'
[*]/var/vcap/packages/director/gem_home/gems/bosh_common-1.5.0.pre.1478/lib/common/thread_formatter.rb:46:in `with_thread_name'
[*]/var/vcap/packages/director/gem_home/gems/director-1.5.0.pre.1478/lib/director/package_compiler.rb:199:in `process_task'
[*]/var/vcap/packages/director/gem_home/gems/director-1.5.0.pre.1478/lib/director/package_compiler.rb:174:in `block (4 levels) in compile_packages'
[*]/var/vcap/packages/director/gem_home/gems/bosh_common-1.5.0.pre.1478/lib/common/thread_pool.rb:83:in `call'
[*]/var/vcap/packages/director/gem_home/gems/bosh_common-1.5.0.pre.1478/lib/common/thread_pool.rb:83:in `block (2 levels) in create_thread'
[*]/var/vcap/packages/director/gem_home/gems/bosh_common-1.5.0.pre.1478/lib/common/thread_pool.rb:67:in `loop'
[*]/var/vcap/packages/director/gem_home/gems/bosh_common-1.5.0.pre.1478/lib/common/thread_pool.rb:67:in `block in create_thread'
解决办法:请查看本人博客:http://blog.iyunv.com/tiger435/article/details/8808623#t5,部署成功反馈:

viewplaincopyhttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/CODE_ico.pnghttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/ico_fork.svg
[*]root@bosh-cli:~/bosh-workspace/deployments# bosh deploy
[*]Getting deployment properties from director...
[*]Unable to get properties list from director, trying without it...
[*]Compiling deployment manifest...
[*]Cannot get current deployment information from director, possibly a new deployment
[*]Please review all changes carefully
[*]Deploying `bosh-openstack.yml' to `microbosh-openstack' (type 'yes' to continue): yes
[*]
[*]Director task 89
[*]
[*]Preparing deployment
[*]binding deployment (00:00:00)
[*]binding releases (00:00:00)
[*]   
[*]....
[*]
[*]Updating job nats
[*]nats/0 (canary) (00:00:29)
[*]Done                  1/1 00:00:29
[*]
[*]Updating job redis
[*]redis/0 (canary) (00:00:24)
[*]Done                  1/1 00:00:24
[*]
[*]Updating job postgres
[*]postgres/0 (canary) (00:00:44)
[*]Done                  1/1 00:00:44
[*]
[*]Updating job powerdns
[*]powerdns/0 (canary) (00:00:25)
[*]Done                  1/1 00:00:25
[*]
[*]Updating job blobstore
[*]blobstore/0 (canary) (00:00:25)
[*]Done                  1/1 00:00:25
[*]
[*]Updating job director
[*]director/0 (canary) (00:00:58)
[*]Done                  1/1 00:00:58
[*]
[*]Updating job registry
[*]registry/0 (canary) (00:00:33)
[*]Done                  1/1 00:00:33
[*]
[*]Updating job health_monitor
[*]health_monitor/0 (canary) (00:00:28)
[*]Done                  1/1 00:00:28
[*]
[*]Task 3 done
[*]Started         2013-12-17 02:41:15 UTC
[*]Finished      2013-12-17 02:57:08 UTC
[*]Duration      00:15:53
[*]
[*]Deployed `bosh-openstack.yml' to `microbosh-openstack'
8、验证部署是否成功

viewplaincopyhttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/CODE_ico.pnghttp://onexin.iyunv.com/source/plugin/onexin_bigdata/https://code.iyunv.com/assets/ico_fork.svg
[*]root@bosh-cli:~/bosh-workspace/deployments/bosh-openstack# bosh vms
[*]Deployment `bosh-openstack'
[*]
[*]Director task 90
[*]
[*]Task 90 done
[*]
[*]+------------------+---------+---------------+--------------------------+
[*]| Job/index      | State   | Resource Pool | IPs                      |
[*]+------------------+---------+---------------+--------------------------+
[*]| blobstore/0      | running | common      | 50.50.0.11               |
[*]| director/0       | running | common      | 50.50.0.10, 10.68.19.132 |
[*]| health_monitor/0 | running | common      | 50.50.0.13               |
[*]| nats/0         | running | common      | 50.50.0.5                |
[*]| postgres/0       | running | common      | 50.50.0.7                |
[*]| powerdns/0       | running | common      | 50.50.0.9, 10.68.19.131|
[*]| redis/0          | running | common      | 50.50.0.6                |
[*]| registry/0       | running | common      | 50.50.0.12               |
[*]+------------------+---------+---------------+--------------------------+
[*]
[*]VMs total: 8

如上,所有Job的状态都是running,则部署成功。
页: [1]
查看完整版本: OpenStack使用Bosh部署CloudFoundry(四)—使用Micro Bosh部署Bosh