OpenStack使用Bosh部署CloudFoundry(四)—使用Micro Bosh部署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中

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. root@bosh-cli:~/bosh-workspace/stemcells# bosh upload stemcell bosh-stemcell-latest-openstack-kvm-ubuntu.tgz  
  2.   
  3. Verifying stemcell...  
  4. File exists and readable                                     OK  
  5. Using cached manifest...  
  6. Stemcell properties                                          OK  
  7.   
  8. Stemcell info  
  9. -------------  
  10. Name:    bosh-openstack-kvm-ubuntu  
  11. Version: 1478  
  12.   
  13. Checking if stemcell already exists...  
  14. No  
  15.   
  16. Uploading stemcell...  
  17.   
  18. latest-bosh-s: 100% |ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| 251.3MB  11.3MB/s Time: 00:00:22  
  19.   
  20. Director task 1  
  21.   
  22. Update stemcell  
  23.   extracting stemcell archive (00:00:06)  
  24.   verifying stemcell manifest (00:00:00)  
  25.   checking if this stemcell already exists (00:00:00)  
  26.   uploading stemcell bosh-stemcell/776 to the cloud (00:01:53)  
  27.   save stemcell bosh-stemcell/776 (f207bfcd-f0cb-4ea2-b753-022e6234ebfa) (00:00:00)  
  28. Done                    5/5 00:01:59  
  29.   
  30. Task 1 done  
  31. Started         2013-12-16 09:51:59 UTC  
  32. Finished        2013-12-16 09:53:58 UTC  
  33. Duration        00:01:59  
  34.   
  35. Stemcell uploaded and created  

2、下载Bosh Release代码并打包

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. root@bosh-cli:~# cd ~/bosh-workspace  
  2. root@bosh-cli:~# git clone git://github.com/cloudfoundry/bosh.git  
耗费时间较长,请耐心等待。

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. root@bosh-cli:~# cd ~/bosh-workspace/bosh  
  2. root@bosh-cli:~# apt-get install libxslt-dev libxml2-dev libmysql-ruby libmysqlclient-dev libpq-dev  
  3. root@bosh-cli:~# bundle install --local  
  4. root@bosh-cli:~# bundle exec rake release:create_dev_release  

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

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. source 'http://ruby.taobao.org'  

打包结束得到以下输出:

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. bosh create release --force  
  2. Syncing blobs...  
  3.   
  4. Building DEV release  
  5. ---------------------------------  
  6.   
  7. ....  
  8.   
  9. Release version: 13.1-dev  
  10. Release manifest: /root/bosh-workspace/bosh/release/dev_releases/bosh-13.1-dev.yml  

3、上传Bosh Release包到Micro Bosh中

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. root@bosh-cli:~/bosh-workspace# bosh upload release ~/bosh-workspace/bosh/release/dev_releases/bosh-13.1-dev.yml  
成功后得到以下输出:

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. ....  
  2.   
  3. Creating new jobs  
  4.   blobstore/3.1-dev (00:00:00)  
  5.   powerdns/3.1-dev (00:00:00)  
  6.   redis/3 (00:00:00)  
  7.   nats/5 (00:00:00)  
  8.   postgres/4.1-dev (00:00:00)  
  9.   director/11.2-dev (00:00:00)  
  10.   health_monitor/5.1-dev (00:00:00)  
  11.   registry/0.1-dev (00:00:00)  
  12. Done                    8/8 00:00:00  
  13.   
  14. Release has been created  
  15.   bosh/13.1-dev (00:00:00)  
  16. Done                    1/1 00:00:00  
  17.   
  18. Task 2 done  
  19. Started         2013-12-16 10:06:26 UTC  
  20. Finished        2013-12-16 10:06:46 UTC  
  21. Duration        00:00:20  
  22.   
  23. Release uploaded  

4、确认已经上传的stemcell和release

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. root@bosh-cli:~# bosh stemcells  
  2.   
  3. +---------------------------+---------+--------------------------------------+  
  4. | Name                      | Version | CID                                  |  
  5. +---------------------------+---------+--------------------------------------+  
  6. | bosh-openstack-kvm-ubuntu | 1478    | e64c6da5-f2ab-48f2-b03d-79c29d1acc43 |  
  7. +---------------------------+---------+--------------------------------------+  
  8.   
  9. Stemcells total: 1  
  10. root@bosh-cli:~# bosh releases  
  11.   
  12. +------+-----------+-------------+  
  13. | Name | Versions  | Commit Hash |  
  14. +------+-----------+-------------+  
  15. | bosh | 13.1-dev* | a8e43f41+   |  
  16. +------+-----------+-------------+  
  17. (*) Currently deployed  
  18. (+) Uncommitted changes  
  19.   
  20. Releases total: 1  

5、创建部署Bosh的Manifest文件

创建目录

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. root@bosh-cli:~# mkdir -p ~/bosh-workspace/deployments/bosh-openstack  
  2. root@bosh-cli:~# cd ~/bosh-workspace/deployments/bosh-openstack  
复制模板文件

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. root@bosh-cli:~# cp ~/bosh-workspace/bosh/release/examples/bosh-openstack-dynamic.yml bosh-openstack.yml  
如果OpenStack中采用的是quantum网络组件,则使用下边的模板文件

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. root@bosh-cli:~# cp ~/bosh-workspace/bosh/release/examples/bosh-openstack-manual.yml bosh-openstack.yml  
本次安装中使用nova-network网络组件,所以采用bosh-openstack-dynamic.yml,修改其中标记有# CHANGE 的配置项,下边是本环境中的配置,大家可参考:

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. ---  
  2. name: bosh-openstack  
  3. director_uuid: 5d8c682c-290a-4194-bfc6-60248567ceab # CHANGE  
  4.   
  5. release:  
  6.   name: bosh  
  7.   version: latest  
  8.   
  9. compilation:  
  10.   workers: 3  
  11.   network: default  
  12.   reuse_compilation_vms: true  
  13.   cloud_properties:  
  14.     instance_type: v1.compile # CHANGE  
  15.   
  16. update:  
  17.   canaries: 1  
  18.   canary_watch_time: 3000-120000  
  19.   update_watch_time: 3000-120000  
  20.   max_in_flight: 4  
  21.   max_errors: 1  
  22.   
  23. networks:  
  24.   - name: floating  
  25.     type: vip  
  26.     cloud_properties: {}  
  27.   - name: default  
  28.     type: dynamic  
  29.     cloud_properties: {}  
  30.   
  31. resource_pools:  
  32.   - name: common  
  33.     network: default  
  34.     size: 8  
  35.     stemcell:  
  36.       name: bosh-openstack-kvm-ubuntu  
  37.       version: latest  
  38.     cloud_properties:  
  39.       instance_type: v1.micro # CHANGE  
  40.   
  41. jobs:  
  42.   - name: nats  
  43.     template: nats  
  44.     instances: 1  
  45.     resource_pool: common  
  46.     networks:  
  47.       - name: default  
  48.         default: [dns, gateway]  
  49.   
  50.   - name: redis  
  51.     template: redis  
  52.     instances: 1  
  53.     resource_pool: common  
  54.     networks:  
  55.       - name: default  
  56.         default: [dns, gateway]  
  57.   
  58.   - name: postgres  
  59.     template: postgres  
  60.     instances: 1  
  61.     resource_pool: common  
  62.     persistent_disk: 16384  
  63.     networks:  
  64.       - name: default  
  65.         default: [dns, gateway]  
  66.   
  67.   - name: powerdns  
  68.     template: powerdns  
  69.     instances: 1  
  70.     resource_pool: common  
  71.     networks:  
  72.       - name: default  
  73.         default: [dns, gateway]  
  74.       - name: floating  
  75.         static_ips:  
  76.           - 10.68.19.131 # CHANGE  
  77.   
  78.   - name: blobstore  
  79.     template: blobstore  
  80.     instances: 1  
  81.     resource_pool: common  
  82.     networks:  
  83.       - name: default  
  84.         default: [dns, gateway]  
  85.   
  86.   - name: director  
  87.     template: director  
  88.     instances: 1  
  89.     resource_pool: common  
  90.     persistent_disk: 16384  
  91.     networks:  
  92.       - name: default  
  93.         default: [dns, gateway]  
  94.       - name: floating  
  95.         static_ips:  
  96.           - 10.68.19.132 # CHANGE  
  97.   
  98.   - name: registry  
  99.     template: registry  
  100.     instances: 1  
  101.     resource_pool: common  
  102.     networks:  
  103.       - name: default  
  104.         default: [dns, gateway]  
  105.   
  106.   - name: health_monitor  
  107.     template: health_monitor  
  108.     instances: 1  
  109.     resource_pool: common  
  110.     networks:  
  111.       - name: default  
  112.         default: [dns, gateway]  
  113.   
  114. properties:  
  115.   nats:  
  116.     address: 0.nats.default.bosh-openstack.microbosh  
  117.     user: nats  
  118.     password: nats  
  119.   
  120.   redis:  
  121.     address: 0.redis.default.bosh-openstack.microbosh  
  122.     password: redis  
  123.   
  124.   postgres: &bosh_db  
  125.     host: 0.postgres.default.bosh-openstack.microbosh  
  126.     user: postgres  
  127.     password: postgres  
  128.     database: bosh  
  129.   
  130.   dns:  
  131.     address: 10.68.19.131 # CHANGE  
  132.     db: *bosh_db  
  133.     recursor: 10.68.19.130 # CHANGE  
  134.   
  135.   blobstore:  
  136.     address: 0.blobstore.default.bosh-openstack.microbosh  
  137.     agent:  
  138.       user: agent  
  139.       password: agent  
  140.     director:  
  141.       user: director  
  142.       password: director  
  143.   
  144.   director:  
  145.     name: bosh  
  146.     address: 0.director.default.bosh-openstack.microbosh  
  147.     db: *bosh_db  
  148.   
  149.   registry:  
  150.     address: 0.registry.default.bosh-openstack.microbosh  
  151.     db: *bosh_db  
  152.     http:  
  153.       user: registry  
  154.       password: registry  
  155.   
  156.   hm:  
  157.     http:  
  158.       user: hm  
  159.       password: hm  
  160.     director_account:  
  161.       user: admin  
  162.       password: admin  
  163.     resurrector_enabled: true  
  164.   
  165.   ntp:  
  166.     - 0.north-america.pool.ntp.org  
  167.     - 1.north-america.pool.ntp.org  
  168.   
  169.   openstack:  
  170.     auth_url: http://10.68.19.61:5000/v2.0 # CHANGE    
  171.     username: VF # CHANGE    
  172.     api_key: 1 # CHANGE    
  173.     tenant: VF_CF # CHANGE    
  174.     region: myregion # CHANGE    
  175.     default_security_groups: ["default"] # CHANGE    
  176.     default_key_name: vkey # CHANGE  

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

6、部署Bosh

设置Bosh的部署文件

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. root@bosh-cli:~/bosh-workspace/deployments# bosh deployment ~/bosh-workspace/deployments/bosh-openstack/bosh-openstack.yml  
  2. Deployment set to `/root/bosh-workspace/deployments/bosh-openstack/bosh-openstack.yml'  
执行部署命令

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. root@bosh-cli:~/bosh-workspace/deployments# bosh deploy  

部署时可能会遇到错误RateLimit报错,报错内容如下:

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. E, [2013-12-15T06:13:32.599434 #6477] [task:3] ERROR -- : OpenStack API Request Entity Too Large error. Check task debug log for details.  
  2. /var/vcap/packages/director/gem_home/gems/bosh_openstack_cpi-1.5.0.pre.1478/lib/cloud/openstack/helpers.rb:20:in `cloud_error'  
  3. /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'  
  4. /var/vcap/packages/director/gem_home/gems/bosh_openstack_cpi-1.5.0.pre.1478/lib/cloud/openstack/helpers.rb:25:in `with_openstack'  
  5. /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'  
  6. /var/vcap/packages/director/gem_home/gems/bosh_common-1.5.0.pre.1478/lib/common/thread_formatter.rb:46:in `with_thread_name'  
  7. /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'  
  8. /var/vcap/packages/director/gem_home/gems/director-1.5.0.pre.1478/lib/director/metadata_helper.rb:14:in `update_vm_metadata'  
  9. /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'  
  10. /var/vcap/packages/director/gem_home/gems/director-1.5.0.pre.1478/lib/director/package_compiler.rb:290:in `prepare_vm'  
  11. /var/vcap/packages/director/gem_home/gems/director-1.5.0.pre.1478/lib/director/package_compiler.rb:224:in `block in compile_package'  
  12. /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'  
  13. /var/vcap/packages/director/gem_home/gems/director-1.5.0.pre.1478/lib/director/lock.rb:58:in `lock'  
  14. /var/vcap/packages/director/gem_home/gems/director-1.5.0.pre.1478/lib/director/lock_helper.rb:88:in `with_compile_lock'  
  15. /var/vcap/packages/director/gem_home/gems/director-1.5.0.pre.1478/lib/director/package_compiler.rb:217:in `compile_package'  
  16. /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'  
  17. /var/vcap/packages/director/gem_home/gems/director-1.5.0.pre.1478/lib/director/event_log.rb:58:in `track'  
  18. /var/vcap/packages/director/gem_home/gems/director-1.5.0.pre.1478/lib/director/package_compiler.rb:203:in `block in process_task'  
  19. /var/vcap/packages/director/gem_home/gems/bosh_common-1.5.0.pre.1478/lib/common/thread_formatter.rb:46:in `with_thread_name'  
  20. /var/vcap/packages/director/gem_home/gems/director-1.5.0.pre.1478/lib/director/package_compiler.rb:199:in `process_task'  
  21. /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'  
  22. /var/vcap/packages/director/gem_home/gems/bosh_common-1.5.0.pre.1478/lib/common/thread_pool.rb:83:in `call'  
  23. /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'  
  24. /var/vcap/packages/director/gem_home/gems/bosh_common-1.5.0.pre.1478/lib/common/thread_pool.rb:67:in `loop'  
  25. /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.csdn.net/tiger435/article/details/8808623#t5,部署成功反馈:

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. root@bosh-cli:~/bosh-workspace/deployments# bosh deploy  
  2. Getting deployment properties from director...  
  3. Unable to get properties list from director, trying without it...  
  4. Compiling deployment manifest...  
  5. Cannot get current deployment information from director, possibly a new deployment  
  6. Please review all changes carefully  
  7. Deploying `bosh-openstack.yml' to `microbosh-openstack' (type 'yes' to continue): yes  
  8.   
  9. Director task 89  
  10.   
  11. Preparing deployment  
  12.   binding deployment (00:00:00)  
  13.   binding releases (00:00:00)  
  14.     
  15. ....  
  16.   
  17. Updating job nats  
  18.   nats/0 (canary) (00:00:29)  
  19. Done                    1/1 00:00:29  
  20.   
  21. Updating job redis  
  22.   redis/0 (canary) (00:00:24)  
  23. Done                    1/1 00:00:24  
  24.   
  25. Updating job postgres  
  26.   postgres/0 (canary) (00:00:44)  
  27. Done                    1/1 00:00:44  
  28.   
  29. Updating job powerdns  
  30.   powerdns/0 (canary) (00:00:25)  
  31. Done                    1/1 00:00:25  
  32.   
  33. Updating job blobstore  
  34.   blobstore/0 (canary) (00:00:25)  
  35. Done                    1/1 00:00:25  
  36.   
  37. Updating job director  
  38.   director/0 (canary) (00:00:58)  
  39. Done                    1/1 00:00:58  
  40.   
  41. Updating job registry  
  42.   registry/0 (canary) (00:00:33)  
  43. Done                    1/1 00:00:33  
  44.   
  45. Updating job health_monitor  
  46.   health_monitor/0 (canary) (00:00:28)  
  47. Done                    1/1 00:00:28  
  48.   
  49. Task 3 done  
  50. Started         2013-12-17 02:41:15 UTC  
  51. Finished        2013-12-17 02:57:08 UTC  
  52. Duration        00:15:53  
  53.   
  54. Deployed `bosh-openstack.yml' to `microbosh-openstack'  

8、验证部署是否成功

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. root@bosh-cli:~/bosh-workspace/deployments/bosh-openstack# bosh vms  
  2. Deployment `bosh-openstack'  
  3.   
  4. Director task 90  
  5.   
  6. Task 90 done  
  7.   
  8. +------------------+---------+---------------+--------------------------+  
  9. | Job/index        | State   | Resource Pool | IPs                      |  
  10. +------------------+---------+---------------+--------------------------+  
  11. | blobstore/0      | running | common        | 50.50.0.11               |  
  12. | director/0       | running | common        | 50.50.0.10, 10.68.19.132 |  
  13. | health_monitor/0 | running | common        | 50.50.0.13               |  
  14. | nats/0           | running | common        | 50.50.0.5                |  
  15. | postgres/0       | running | common        | 50.50.0.7                |  
  16. | powerdns/0       | running | common        | 50.50.0.9, 10.68.19.131  |  
  17. | redis/0          | running | common        | 50.50.0.6                |  
  18. | registry/0       | running | common        | 50.50.0.12               |  
  19. +------------------+---------+---------------+--------------------------+  
  20.   
  21. VMs total: 8  

如上,所有Job的状态都是running,则部署成功。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值