OpenStack是一个开源的云平台。由各个组件协同工作,安装非常复杂。
RedHat有个关于Openstack的项目RDO,能够简化安装过程,可是假设真按RDO所说的三步去安装,发现安装过程中还是有非常多报错,不得不查询Openstack的官方文档。
本来准备在新出的RHEL7上安装的,发现缺少libselinux(epel7)的附加包,有可能还没编译。全部选择RedHat6.5作为底层操作系统。
安装环境准备
1.硬件环境:
DELL R410 四核4G内存,双网卡(本实例中仅仅用到一个网卡),2块160G硬盘
2.软件环境:
安装RedHat 6.5 (选择最小化安装)
eth0接口IP地址:192.168.11.120/24
主机名:OSNode.demostack
操作用户:root (也能够用其它用户。仅仅需在全部的命令前加 sudo)
RDO官方文档地址:http://openstack.redhat.com/Quickstart
OpenStack 官方文档:http://docs.openstack.org/
操作系统安装配置
1.安装底层操作系统RHEL
操作系统的安装过程就不赘述了。这里选择最小化安装 RedHat 6.5 。安装过程中记得配置好hostname,hostname一定要足够的长度,千万不能是纯数字的。如189.localdomain。
我这里设为OSNode.demostack
(这是我遇到的第一个错误。原想这个hostname无所谓。直接就随手填了个ip地址的最后一段(189.localdomain),结果安装过程中Puppet报错。)
2.配置host文件
编辑host文件。加入主机名和相应的ip地址到host文件。
vi /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 127.0.0.1 Node.OpenStack
-----------------------------------------------------------------------------------------------------------------
这个地方前面的ip地址最好填127.0.0.1,应为RDO安装的Mysql默认仅仅能这个ip地址连接,假设你填写的是本机网卡的ip地址,会报例如以下错误
ERROR : Error appeared during Puppet run: 192.168.11.120_keystone.pp
Error: /Stage[main]/Keystone::Roles::Admin/Keystone_role[_member_]: Could not evaluate: Execution of \'/usr/bin/keystone --os-endpoint http://127.0.0.1:35357/v2.0/ role-list\' returned 1: An unexpected error prevented the server from fulfilling your request.
(HTTP 500)
3.配置网络
编辑 /etc/sysconfig/network-scripts/ifcfg-** 文件
[root@OSNode network-scripts]# vi ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet UUID=11ed2c17-9098-4519-b388-9f3824b6c531 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none HWADDR=00:0C:29:D1:80:BB IPADDR=192.168.11.120 PREFIX=24 GATEWAY=192.168.11.1 DNS1=114.114.114.114配置好IP地址、网关、DNS,最好ping 163.com 看下是否正常通讯。
4.打开系统防火墙
这个默认RHEL6.5是打开的。不要关闭了,Openstack的非常多网路功能都是通过防火墙实现的。
service iptables status
5.关闭selinux
vi /etc/selinux/config
SELINUX=disabled
重新启动生效
6.配置本地yum环境
上传RedHat 6.5 IOS镜像到home文件夹,新建个文件夹rhel6。挂载ISO文件到Local_YUM文件夹,改动repo文件。运行过程例如以下:
#cd /home #mkdir rhel6 #mount -o loop RHEL6.5.iso rhel6/
#vi /etc/yum.repos.d/RHEL6.5.repo [rhel6] name=rhel6 baseurl=file:///root/rhel6/ enabled=1 gpgcheck=0 ~
更新YUM缓存
yum clean all
yum update
yum makecache
7.重新启动机器
reboot
RDO安装步骤
1.为存储设置LVM分区(可选)
为了提高虚拟机的性能,能够把存储放在第二块硬盘上。在第二块硬盘(sdb)上建立LVM分区。
1.1建立物理分区sdb1
#fdisk /dev/sdb Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1
1.2更改分区类型为8e
Command (m for help): t Partition number (1-4): 1 Hex code (type L to list codes): 8e Changed system type of partition 1 to 8e (Linux LVM)
1.3创建PV和VG
# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created # vgcreate cinder-volumes /dev/sdb1 Volume group "cinder-volumes" successfully created
1.4取消新创建LVM的开机挂载
检查/etc/fsta文件。凝视掉cinder-volumes的开机挂载
2.安装Centos6.5的rubygems包
yum install -y http://mirrors.163.com/centos/6.5/os/x86_64/Packages/rubygems-1.3.7-5.el6.noarch.rpm
因为RedHat的本地yum没有rubygems包。所以要安装Centos的rubygems包,否则在安装PackStack的时候会报例如以下错误
Error: Package: rubygem-json-1.5.5-1.el6.x86_64 (puppetlabs-deps)
Requires: rubygems
3.安装PackStack包
yum install -y http://rdo.fedorapeople.org/rdo-release.rpm yum install -y openstack-packstack更新yum
yum -y update
yum makecache
重新启动机器
reboot
4.运行RDO安装
packstack --allinone --provision-demo=n假设在上面为Cinder设置了分区,能够运行以下的命令
packstack --allinone --provision-demo=n CONFIG_CINDER_VOLUMES_CREATE=n安装完毕后在root文件夹下有keystonerc_admin 文件。该文件里有web管理登陆须要的username和password
5.安装过程中出错处理
1.Keystone出现HTTP500错误
keystone-manage db_sync然后又一次运行PackStack --answer-file /root/packstack-answers-20140701-091539.txt 命令。
PackStack命名能够反复运行,但一定要带上第一次安装时的配置文件,第一次安装的时候不管是否成功,都会在root文件夹下生成 如packstack-answers-20140701-091539.txt的配置文件。
2.Cinder\'s volume group \'cinder-v olumes\' could not be created
运行 rm -rf /var/lib/cinder/cinder-volumes
又一次安装
PackStack --answer-file /root/packstack-answers-20140701-091539.txt
3.其它安装包在安装过程中下载中断。
由于安装的yumserver在国外,非常easy由于网络原因导致的安装中断,这样的情况直接又一次安装即可了。