開源PaaS方案(二)部署OpenStack
由于AWS和vSphere/vCloud都不是免費獲得的,本文將描述如果部署CloudFoundry到開源IaaS的Openstack上。本文的重點是如何部署CloudFoundry,所以OpenStack的部署采取最簡單的方案--單節(jié)點OpenStack,如果讀者希望了解如何部署一個分布式的高可用性的OpenStack。
硬件要求
安裝OpenStack
1 安裝CentOS 65系統(tǒng)并清空iptables防火墻規(guī)則
2 安裝系統(tǒng)需要的工具包包括Openstack依賴的和CloudFoundry依賴的
- 安裝EPEL repo
- Upgrade 當前系統(tǒng)
- 安裝openstack repo 目前CloudFoundry最高只能支持Havana版的Openstack
- 安裝packstack
- 同步時間
- 安裝單節(jié)點openstack
配置Openstack
- 安裝后的Openstack Dashboard有個小bug使用下面命令fix
- demo tenant的默認配額Quota不足以安裝CloudFoundry所以先要增加demo的Quota
- 擴展磁盤空間
由于AWS和vSphere/vCloud都不是免費獲得的,本文將描述如果部署CloudFoundry到開源IaaS的Openstack上。本文的重點是如何部署CloudFoundry,所以OpenStack的部署采取最簡單的方案--單節(jié)點OpenStack,如果讀者希望了解如何部署一個分布式的高可用性的OpenStack,請參考網(wǎng)絡上面的相關文章。
所以,筆者選擇了CentOS和Redhat的工具packstack來部署一個單節(jié)點的OpenStack。目前CloudFoundry只支持Folsom,Grizilly,和Havana三個版本的OpenStack。
硬件要求
- CPU:x86_64架構的Intel i5 i7或者至強
- 內(nèi)存: 64GB以上
- 硬盤:500G以上的剩余空間
1. 安裝OpenStack
1.1 安裝CentOS 6.5系統(tǒng),并清空iptables防火墻規(guī)則,經(jīng)驗證CENTOS 7 安裝juno RDO也是可以的。
- # iptables -F
- ##centos7 運行如下命令
- systemctl disable firewalld
- systemctl stop firewalld
1.2 安裝系統(tǒng)需要的工具包,包括Openstack依賴的和CloudFoundry依賴的
- <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 經(jīng)驗證,這一句不要
- sudo yum install gcc ruby ruby-devel mysql-devel postgresql-devel postgresql-libs sqlite-devel libxslt-devel libxml2-devel yajl-ruby 官方文檔中的腳本,但是安裝bosh的時候還是會遇到錯誤.
- 在安裝bosh_cli的時候會報nokogiri 安裝錯誤,需要執(zhí)行下面的語句修正
- sudo yum groupinstall "Development Tools"
1.3 安裝EPEL repo 安裝openstack 這部分是一havana講解的,juno的安裝請參考官方文檔。
- # rpm -Uvh http://ftp.sjtu.edu.cn/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
1.4. Upgrade 當前系統(tǒng)
- # yum -y upgrade
1.5 安裝openstack repo, 目前CloudFoundry最高只能支持Havana版的Openstack
- # rpm -Uvh https://repos.fedorapeople.org/repos/openstack/EOL/openstack-havana/rdo-release-havana-9.noarch.rpm
應為現(xiàn)在Havana 已經(jīng)歸類為老版本的openstack 路徑發(fā)生了變化 epel 的路徑錯誤
- nano /etc/yum.repo.d/rdo-release.repo
將路徑修改為
- baseurl=https://repos.fedorapeople.org/repos/openstack/EOL/openstack-havana/epel-6/
1.6 安裝packstack
- # yum install -y openstack-packstack
1.7 同步時間
- # ntpdate -u time.asia.apple.com
1.8 安裝單節(jié)點openstack
- # packstack —allinone
因為HAVANA 版本的packstack 已經(jīng)終止了生命周期,所以直接運行肯定會報錯,報錯之后,回事生成一個answer-file的txt 文件,修改里面的配置項
- CONFIG_USE_EPEL=n
為
- CONFIG_USE_EPEL=y
運行packstack --answer-file=xxx.txt 便可成功安裝。
#p#
2.配置Openstack
使用packstack安裝之后的Openstack,所有的服務都安裝在了一個節(jié)點上,并且創(chuàng)建了一個叫demo tenant和叫demo的用戶。本文即使用demo用戶和demo tenant安裝CloudFoundry。
2.0 安裝后的Openstack Dashboard有個小bug,使用下面命令fix
- # sed -i 's/"Member"/"\_member\_"/' /etc/openstack-dashboard/local_settings
- # service httpd restart
2.1 demo tenant的默認配額(Quota)不足以安裝CloudFoundry,所以先要增加demo的Quota
- # nova quota-update --instances 30 --ram 60000 --cores 40 $(keystone tenant-list | awk '/ demo/ {print $2}’)
2.2 擴展磁盤空間 這一部分可以不執(zhí)行在juno的時候
Openstack 默認分配給cinder的空間為20G, 而CloudFoundry大約需要500G的空間,需要先擴展一下cinder-volumns的大小. 如果有未分配的磁盤空間,可以直接擴展cinder-volumes這個volume group。如果沒有磁盤空間的話,這里需要借助一下linux的loop device。關于loop device,詳見http://en.wikipedia.org/wiki/Loop_device
- # dd if=/dev/zero of=/var/lib/cinder/cinder-volumes1 bs=1k count=500000000
- # losetup -f (查找一個沒有使用的loop device,筆者這里使用/dev/oop2)
- # losetup /dev/loop2 /var/lib/cinder/cinder-volumes1
- # vgextend cinder-volumes /dev/loop2
loop device的說明如下
借助loop device與losetup命令制作硬盤鏡像
1,創(chuàng)建鏡像文件
用如下命令創(chuàng)建鏡像文件sdb.img,bs指定block大小,鏡像文件大小為bs*count
- dd if=/dev/zero of=sdb.img bs=512 count=16384
2,用losetup命令將生成的鏡像文件與loop device設備關聯(lián)
用如下命令將sdb.img鏡像文件與/dev/loop0設備關聯(lián)
- losetup /dev/loop0 sdb.img
3,用fdisk命令對新關聯(lián)的loop device分區(qū)
用如下命令對/dev/loop0設備分區(qū),假設創(chuàng)建兩個分區(qū):
- fdisk /dev/loop0
4,為每個分區(qū)創(chuàng)建文件系統(tǒng)
1)將每個分區(qū)與一個新的loop device關聯(lián)
使用如下命令將loop1設備與loop0設備的第一個分區(qū)關聯(lián),xxxx指定第一個分區(qū)在loop0設備中的起始位置(以字節(jié)為單位):
- losetup -o xxxx /dev/loop1 /dev/loop0
同上將loop2設備與第二個分區(qū)關聯(lián)。
- losetup -o yyyy /dev/loop2 /dev/loop0
2)用mkfsXXX命令為loop1和loop2設備創(chuàng)建文件系統(tǒng)
如: mkfs.ext4 /dev/loop1
5,掛載loop0設備中的兩個分區(qū)
用如下命令掛載兩個分區(qū):
- mount /dev/loop1 /mnt/sdc1
這樣,Openstack就已經(jīng)設置完成,可以準備安裝CloudFoundry了