本文所要讨论的是如何在openstack上使用Bosh部署cloudfoundry集群,并分为上下两个部分。在第一部分中主要涉及stemcell和bosh自部署的内容,第二部分是有关cloudfoundry的集群搭建配置和最终部署。
在openstack上部署cloudfoundry国外已经有了很多的成功案例,最近我们也在尝试。但是由于处于测试阶段以及文档的不足,搭建的难度还是不小的。虽然问题存在,但是在openstack的实践过程中,我们能够总结出一条第三方IaaS(指的是除了AWS和vsphere的其他IaaS)通过bosh部署cloudfoundry集群的思路。这种思路远比问题本身来的重要。这里的参考资料主要有:
- 本文主要参考Dr. Nic Williams's bosh-getting-started series:https://github.com/drnic/bosh-getting-started
- 之前EMC的大牛们对此进行过他们的尝试,并在openstack大会上做了题为《CloudFoundry弹性架构和基于OpenStack的部署实践》的专题演讲。其中内容包括了根据开源的openstack cpi,使用bosh进行cloudfoundry的集群部署实践。视频传送门:http://vdisk.weibo.com/s/aicnt ppt:http://vdisk.weibo.com/s/aicpv?t=file
- cloudfoundry官方给出的在vsphere上部署cloudfoundry集群的中文文档:http://cloudfoundry-doc.csdn.net/deploy/vSphere.html
一 部署准备
- 软件:openstack当然是必须的。这里我们使用的是 OpenStack Essex (2012.1),在裸机部署完整版的openstack可以使用这些资源:
搭建并测试好openstack集群后,还有一步工作。你必须上传一个 Ubuntu 10.04 LTS 64-bit的镜像,因为接下来我们会使用该镜像创建一个虚拟机。
- 硬件:这一部分主要是依据参考资料2,也就是cloudfoundry官方给出的配置。 抛开openstack的节点,这里只计算bosh及cf的节点。
节点数目
操作系统
可否是物理机
BOSH CLI
1
Ubuntu
可以(我们用的是VM)
Micro BOSH
1
Ubuntu
不可以
BOSH
6
Ubuntu
不可以
Cloud Foundry
34
Ubuntu
不可以
合计:
42
这个节点配置是针对大规模的生产环境,因此对cloudfoundry的节点数分配的数量较多。这个规模是自己定的,如果在实验环境中资源不足,可以根据CF节点特点适当减少。(保证cf的每一种节点能够达到bosh的效果就可以)
二 部署步骤
- inception VM创建及配置
- 配置部署micro bosh
- 使用micro bosh配置部署bosh
- 使用bosh配置部署cloudfoundry
三 详细部署过程
1.inception VM创建及配置
首先说明下什么是inception VM。这个VM在openstack的BOSH部署中扮演了如下角色:
- 用于创建一个自定义的micro bosh stemcell
- 存储了micro bosh的registry,并运行跟踪openstack组件
- 安装了bosh cli,部署bosh release和cf release都是在这个VM上运行
- 存储了bosh cli和各release之间的交互日志文件
curl https://github.com/Superalan/bosh-deployment/scripts/prepare_inception_openstack.sh | bash source /etc/profile这个脚本必须使用root权限才能运行正常,其中包括了ruby环境的安装,bosh cli、deployer、agent以及openstack registry的安装。此外还下载bosh-release,为制作stemcell做准备。
$ bosh help micro micro deploy <stemcell> Deploy a micro BOSH instance to the currently selected deployment --update update existing instance micro delete Delete micro BOSH instance (including persistent disk) micro deployment [<name>] Choose micro deployment to work with micro agent <args> Send agent messages micro apply <spec> Apply spec micro status Display micro BOSH deployment status micro deployments Show the list of deployments
2.配置部署micro bosh
- 首先在inception VM中配置micro_bosh.yml
micro bosh的部署参数是通过一个叫做micro_bosh.yml的文件进行配置的。这其中配置了openstack的连接参数,micro bosh的网络属性,以及agent和registry属性。如果通过上面我们提供的脚本配置的inception VM,该配置文件位置位于:/var/vcap/deployments
这里有一点需要注意,openstack中必须提供配置文件里设置的IPADDRESS。这个ip是一个floating ip,在openstack中可以设置添加。
这里是一个openstack的micro bosh配置文件模板:
name: microbosh-openstack env: bosh: password: SALTED_PASSWORD logging: level: DEBUG network: type: dynamic label: private vip: IPADDRESS resources: persistent_disk: 4096 cloud_properties: instance_type: m1.small cloud: plugin: openstack properties: openstack: auth_url: OS_AUTH_URL username: OS_USERNAME api_key: OS_PASSWORD tenant: OS_TENANT_NAME default_key_name: inception default_security_groups: ["default"] private_key: /home/vcap/.ssh/inception.pem apply_spec: agent: blobstore: address: IPADDRESS nats: address: IPADDRESS properties: openstack_registry: address: IPADDRESS
- 制作自定义的openstack-bosh-micro-stemcell
做完上述工作,我们就要进入制作micro stemcell的工作。这一部分的工作仍然是在inception VM中完成。首先创建bosh-release:
cd /var/vcap/releases/bosh-release bosh create release --with-tarball这会在/var/vcap/releases/bosh-release/dev_releases/下生成bosh的一个release。我们先把之前的ubuntu镜像放到inception VM的root下,然后我们在agent目录(/var/vcap/bootstrap/bosh/agent)下执行:
export UBUNTU_ISO=/root/ubuntu-10.04.4-LTS-amd64.iso rake stemcell2:micro["openstack",/var/vcap/releases/bosh-release/micro/openstack.yml,/var/vcap/releases/bosh-release/dev_releases/bosh-x.y-dev.tgz]
Generated stemcell: /var/tmp/bosh/agent-x.y.z-nnnnn/work/work/micro-bosh-stemcell-openstack-x.y.z.tgz
- micro bosh的部署
到这为止,我们应该是完成了micro bosh所有要求用到的组件。执行部署命令:
$ cd /var/vcap/deployments $ bosh micro deployment microbosh-openstack $ bosh micro deploy /var/vcap/stemcells/micro-bosh-stemcell-openstack-x.y.z.tgz
这里执行bosh micro deployment microbosh-openstack时,所在的deployments目录必须包含microbosh-openstack文件夹,这个文件夹下必须包括micro_bosh.yml。一切顺利的话会显示:
Verifying stemcell... File exists and readable OK Manifest not found in cache, verifying tarball... Extract tarball OK Manifest exists OK Stemcell image file OK Writing manifest to cache... Stemcell properties OK Stemcell info ------------- Name: micro-bosh-stemcell Version: 0.6.4 Deploy Micro BOSH unpacking stemcell (00:00:43) uploading stemcell (00:32:25) creating VM from 5aa08232-e53b-4efe-abee-385a7afb9421 (00:04:38) waiting for the agent (00:02:19) create disk (00:00:15) mount disk (00:00:07) stopping agent services (00:00:01) applying micro BOSH spec (00:01:20) starting agent services (00:00:00) waiting for the director (00:02:21) Done 11/11 00:53:15 WARNING! Your target has been changed to `http://172.17.13.1:25555'! Deployment set to '/var/vcap/deployments/microbosh-openstack/micro_bosh.yml' Deployed `microbosh-openstack/micro_bosh.yml' to `http://microbosh-openstack:25555', took 00:44:30 to complete下面我们就可以target到micro bosh节点了,默认的用户名密码都是admin。
$ bosh target http://172.17.13.1 Target set to `microbosh-openstack (http://172.17.13.1:25555) Ver: 0.6 (release:ce0274ec bosh:0d9ac4d4)' Your username: admin Enter password: ***** Logged in as `admin'
还可以通过bosh micro status以及bosh micro deployments查看状态和部署信息。
- 关于micro bosh的认识
通过上述的步骤,可能对bosh比较熟悉的读者会马上看出,micro bosh的stemcell里存在bosh-release,这和bosh的stemcell是不同的。这一点官方文档没有说明,因为AWS和Vsphere的stemcell都是通过bosh public stemcell指令下载的,stemcell里面有什么东西其实看不到。后面我们会讲到,部署bosh的时候我们需要一个作为虚拟机模板的bosh stemcell、一个作为待部署软件的 BOSH Release,以及一个用来定义部署配置的部署清单文件。所以bosh的stemcell里是不存在bosh的release的。在这一点上两者有着不同。
这也很好理解,bosh部署每个节点的时候,使用的是统一的stemcell模板,然后在配置文件中得到该部署bosh release的那个组件。micro bosh部署的时候是单一的节点,因此它的过程简单很多,就直接把整个bosh-release给预加载进去了。
至此,micro bosh的搭建工作就已完成,接下来会在下部分中部署bosh以及在bosh中部署cloudfoundry。
(未完待续。。)
原文链接: http://blog.csdn.net/alan90121/article/details/8181962