中国领先的IT技术网站
|
|

开源PaaS方案(二)部署OpenStack

由于AWS和vSphere/vCloud都不是免费获得的,本文将描述如果部署CloudFoundry到开源IaaS的Openstack上。本文的重点是如何部署CloudFoundry,所以OpenStack的部署采取最简单的方案--单节点OpenStack,如果读者希望了解如何部署一个分布式的高可用性的OpenStack。

作者:Yudar来源:博客园|2015-04-24 09:52


由于AWS和vSphere/vCloud都不是免费获得的,本文将描述如果部署CloudFoundry到开源IaaS的Openstack上。本文的重点是如何部署CloudFoundry,所以OpenStack的部署采取最简单的方案--单节点OpenStack,如果读者希望了解如何部署一个分布式的高可用性的OpenStack。

硬件要求

安装OpenStack

1 安装CentOS 65系统并清空iptables防火墙规则

2 安装系统需要的工具包包括Openstack依赖的和CloudFoundry依赖的

  • 安装EPEL repo
  • Upgrade 当前系统
  • 安装openstack repo 目前CloudFoundry最高只能支持Havana版的Openstack
  • 安装packstack
  • 同步时间
  • 安装单节点openstack

配置Openstack

  • 安装后的Openstack Dashboard有个小bug使用下面命令fix
  • demo tenant的默认配额Quota不足以安装CloudFoundry所以先要增加demo的Quota
  • 扩展磁盘空间

由于AWS和vSphere/vCloud都不是免费获得的,本文将描述如果部署CloudFoundry到开源IaaS的Openstack上。本文的重点是如何部署CloudFoundry,所以OpenStack的部署采取最简单的方案--单节点OpenStack,如果读者希望了解如何部署一个分布式的高可用性的OpenStack,请参考网络上面的相关文章。

所以,笔者选择了CentOS和Redhat的工具packstack来部署一个单节点的OpenStack。目前CloudFoundry只支持Folsom,Grizilly,和Havana三个版本的OpenStack。

硬件要求

  • CPU:x86_64架构的Intel i5 i7或者至强
  • 内存: 64GB以上
  • 硬盘:500G以上的剩余空间

1. 安装OpenStack

1.1 安装CentOS 6.5系统,并清空iptables防火墙规则,经验证CENTOS 7 安装juno RDO也是可以的。

  1. # iptables -F 
  2. ##centos7 运行如下命令 
  3. systemctl disable firewalld 
  4. systemctl stop firewalld 

1.2 安装系统需要的工具包,包括Openstack依赖的和CloudFoundry依赖的

  1. <pre name="code" class="python"># yum install -y gcc python perl vim man wget ntpdate sysstat zlib-devel krb5-devel openssl-devel zlib libyaml-devel readline-devel  libyaml-devel readline-devel gcc-c++ glibc-headers  readline libxml2 libxml2-devel libxslt libxslt-devel genisoimage sqlite  sqlite-devel mysql mysql-devel postgresql postgresql-devel git 经验证,这一句不要 
  2.  
  3. sudo yum install gcc ruby ruby-devel mysql-devel postgresql-devel postgresql-libs sqlite-devel libxslt-devel libxml2-devel yajl-ruby 官方文档中的脚本,但是安装bosh的时候还是会遇到错误. 
  4.  
  5. 在安装bosh_cli的时候会报nokogiri 安装错误,需要执行下面的语句修正 
  6. sudo yum groupinstall "Development Tools" 

1.3 安装EPEL repo 安装openstack 这部分是一havana讲解的,juno的安装请参考官方文档。

  1. # rpm -Uvh http://ftp.sjtu.edu.cn/fedora/epel/6/i386/epel-release-6-8.noarch.rpm 

1.4. Upgrade 当前系统

  1. # yum -y upgrade 

1.5 安装openstack repo, 目前CloudFoundry最高只能支持Havana版的Openstack

  1. # rpm -Uvh https://repos.fedorapeople.org/repos/openstack/EOL/openstack-havana/rdo-release-havana-9.noarch.rpm 

应为现在Havana 已经归类为老版本的openstack 路径发生了变化 epel 的路径错误

  1. nano /etc/yum.repo.d/rdo-release.repo 

将路径修改为

  1. baseurl=https://repos.fedorapeople.org/repos/openstack/EOL/openstack-havana/epel-6/ 

1.6 安装packstack

  1. # yum install -y openstack-packstack 

1.7 同步时间

  1. # ntpdate -u time.asia.apple.com 

1.8 安装单节点openstack

  1. # packstack —allinone 

因为HAVANA 版本的packstack 已经终止了生命周期,所以直接运行肯定会报错,报错之后,回事生成一个answer-file的txt 文件,修改里面的配置项

  1. CONFIG_USE_EPEL=n 

  1. CONFIG_USE_EPEL=y 

运行packstack --answer-file=xxx.txt 便可成功安装。

2.配置Openstack

使用packstack安装之后的Openstack,所有的服务都安装在了一个节点上,并且创建了一个叫demo tenant和叫demo的用户。本文即使用demo用户和demo tenant安装CloudFoundry。

2.0 安装后的Openstack Dashboard有个小bug,使用下面命令fix

  1. # sed -i 's/"Member"/"\_member\_"/' /etc/openstack-dashboard/local_settings 
  2. # service httpd restart 

2.1 demo tenant的默认配额(Quota)不足以安装CloudFoundry,所以先要增加demo的Quota

  1. # nova quota-update --instances 30 --ram 60000 --cores 40 $(keystone tenant-list | awk '/ demo/ {print $2}’) 

2.2 扩展磁盘空间 这一部分可以不执行在juno的时候

Openstack 默认分配给cinder的空间为20G, 而CloudFoundry大约需要500G的空间,需要先扩展一下cinder-volumns的大小. 如果有未分配的磁盘空间,可以直接扩展cinder-volumes这个volume group。如果没有磁盘空间的话,这里需要借助一下linux的loop device。关于loop device,详见http://en.wikipedia.org/wiki/Loop_device

  1. # dd if=/dev/zero of=/var/lib/cinder/cinder-volumes1 bs=1k count=500000000 
  2. # losetup -f (查找一个没有使用的loop device,笔者这里使用/dev/oop2) 
  3. # losetup /dev/loop2 /var/lib/cinder/cinder-volumes1 
  4. # vgextend cinder-volumes /dev/loop2 

loop device的说明如下

借助loop device与losetup命令制作硬盘镜像

1,创建镜像文件

用如下命令创建镜像文件sdb.img,bs指定block大小,镜像文件大小为bs*count

  1. dd if=/dev/zero of=sdb.img bs=512 count=16384 

2,用losetup命令将生成的镜像文件与loop device设备关联

用如下命令将sdb.img镜像文件与/dev/loop0设备关联

  1. losetup /dev/loop0 sdb.img 

3,用fdisk命令对新关联的loop device分区

用如下命令对/dev/loop0设备分区,假设创建两个分区:

  1. fdisk /dev/loop0 

4,为每个分区创建文件系统

1)将每个分区与一个新的loop device关联

使用如下命令将loop1设备与loop0设备的第一个分区关联,xxxx指定第一个分区在loop0设备中的起始位置(以字节为单位):

  1. losetup -o xxxx /dev/loop1 /dev/loop0 

同上将loop2设备与第二个分区关联。

  1. losetup -o yyyy /dev/loop2 /dev/loop0 

2)用mkfsXXX命令为loop1和loop2设备创建文件系统

如: mkfs.ext4 /dev/loop1

5,挂载loop0设备中的两个分区

用如下命令挂载两个分区:

  1. mount /dev/loop1 /mnt/sdc1 

这样,Openstack就已经设置完成,可以准备安装CloudFoundry了

【编辑推荐】

  1. VMware发布开源项目Lightwave和Photon 提高云应用扩展性
  2. PaaS 2.0:Crtana 背后的 Azure Service Fabric
  3. 想让PaaS更出彩,请不要再忘记运维
  4. 为 OpenStack 私有云创建 Linux 和 Windows 映像
  5. 开源PaaS:在OpenStack上部署CloudFoundry(一)简介
【责任编辑:Ophira TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

精通JBuilder 2006

JBuilder 2006是一款强大的Java企业级开发平台,其集成了几乎所有的Java技术,涵盖了软件开发生命周期的各个过程。本书深入浅出地介绍了JBu...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊