首先如果你打算搭建一套单节点环境的Openstack,那一定是用于测试的,真正的Openstack环境请勿使用单节点环境,这仅仅只是让你了解并初步安装Openstack来用的环境。
其次,由于Openstack的发展壮大,现在越来越多的公司都开始加入Openstack,包括Redhat,所以渐渐地越来越人性化的安装命令也被一步步的完善。对新手安装Openstack来说还是非常有用的。 本文是基于fedora官方的"Getting started with Openstack EPEL"和Redhat官方的"Getting Started Guide"两篇文章,然后根据自己的网络状况进行整合而最终安装完成的,大家在安装的时候只要根据自己的实际情况进行一些简单的调整即可。 之前在摸索Openstack安装的时候,总是被网络环节所卡住研究了很长时间,最后发现Openstack的网络不吭,而是需要选择一个好的镜像才对。稍后我会写一篇关于在安装Openstack时候遇到的一些问题以及解决办法。 一、基础硬件环境准备 我这里使用的是一台R410: 系统:CentOS release 6.3 (Final),安装采用最简安装。 网络:单网卡(em1),网卡直接配ip:10.199.21.215,并确保这个网卡到外网畅通无阻。 硬盘分区:由于Openstack的Volume需要一块独立的分卷,所以我在分区的时候就直接创建了一个100G的Volume作为vg。这里注意vg的名字一定要为"nova-vloumes",通过vgdisplay可以看到: # vgdisplay --- Volume group --- VG Name nova-volumes System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 98.38 GiB PE Size 4.00 MiB Total PE 25186 Alloc PE / Size 0 / 0 Free PE / Size 25186 / 98.38 GiB VG UUID 5qKCtl-TSkw-1dq0-vqsd-9PI8-lvVU-KfBHOp 当一切准备就绪,就可以开始准备搭建Openstack环境了。 二、软件环境准备 2.1.添加epel源 # rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm 由于fedora官方的大力支持,Openstack的最新稳定版已经出现在epel的测试源中,我们更新完epel源之后直接使用yum安装即可 # yum update # yum --enablerepo=epel-testing install openstack-nova openstack-glance openstack-keystone openstack-quantum openstack-swift\* openstack-dashboard openstack-utils memcached qpid-cpp-server mysql-server avahi dnsmasq-utils 2.2.更改安全设置 修改/etc/qpidd.conf文件,确保里面auth=no # sed -i s/^auth=.*/auth=no/g /etc/qpidd.conf 关闭selinux # sed -i s/^SELINUX=.*/SELINUX=disabled/g /etc/selinux/config 三、Openstack安装 3.1 开启各项服务 我们是yum安装的mysql,所以刚上来要先进行第一次启动以及一些配置,mysql的配置这里就不详述了,包括root密码什么的,大家根据自己的环境需要自己给mysql加入密码。之后启动即可 # /etc/init.d/mysqld start && chkconfig mysqld on 为Openstack准备数据库 # openstack-db --init --service nova # openstack-db --init --service glance 开启提供支持的服务 # service qpidd start && chkconfig qpidd on # service libvirtd start && chkconfig libvirtd on 开启glance服务 # for svc in api registry; do service openstack-glance-$svc start; chkconfig openstack-glance-$svc on ; done 开启Nova服务 # for svc in api objectstore compute network volume scheduler cert; do service openstack-nova-$svc start ; chkconfig openstack-nova-$svc on ; done 按理来说,各项服务都应该能正常开启。我们需要手动检查各个服务的Log查看是否有报错:Log在/var/log/nova下。 3.2 Keystone设置 Keystone就是一个密码库,管理所有的认证机制,包括各种服务的密码验证,以及我们从浏览器访问Web版的控制台的时候的登陆认证等。可以说它就是Openstack的机要处,必须要有它。然后我们使用各个命令来查询状态的时候,都要先进行一个密码的验证,而这个验证有一些明文的参数,这些内容是需要被指定在系统的环境变量中的。所以下面就可以看到我们添加系统环境变量的一步。 首先进行keystone的数据库设置 # openstack-db --init --service keystone 然后添加系统环境变量,由于环境变量会因为我们每次登陆而重置,所以我们把它写到一个文件里,这样我们每次ssh连入系统的时候就可以直接直读这个文件而获得我们自定义的这些系统环境变量。这里OS_PASSWORD对应的密码可以自己设置,由于Openstack中各项认证的密码众多,所以我建议大家都使用统一的密码。注意里面的ADMIN_TOKEN这将是所有服务获取认证的关键。 # cat > keystonerc < export OS_USERNAME=admin export OS_PASSWORD=Abcd1234 export OS_TENANT_NAME=admin export OS_AUTH_URL=http://127.0.0.1:5000/v2.0/ EOF 这样我们当前目录下就有一个keystonerc的文件,这里记录着这些系统变量。 # . ./keystonerc 在配置文件中设置管理员的token # openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token $ADMIN_TOKEN 开始keystone服务 # service openstack-keystone start && chkconfig openstack-keystone on 创建默认的Tenants, Users和Roles,注意这里的SERVICE_PASSWORD,将会成为这些Users的默认密码 # ADMIN_PASSWORD=$OS_PASSWORD SERVICE_PASSWORD=Abcd1234 openstack-keystone-sample-data 创建好后,验证一下,如果弹出下面的内容,那就是创建完成了。 # keystone user-list +----------------------------------+---------+--------------------+--------+ | id | enabled | email | name | +----------------------------------+---------+--------------------+--------+ | 1581bec2ca864aa7b6a88947dddf7926 | True | glance@example.com | glance | | 3170c1630b154997acd9aed847ef3f48 | True | nova@example.com | nova | | 8b0d755e74524742966fdaf14a6e77d6 | True | admin@example.com | demo | | c2a3f53f014445a88650ba14a264e207 | True | admin@example.com | admin | +----------------------------------+---------+--------------------+--------+ 3.3 配置nova 更改nova配置文件中的相关keystone认证的配置,注意,由于我们是单网卡节点,所以我们一定要制定flat_interface和public_interface为我们的网卡"em1" # openstack-config --set /etc/nova/api-paste.ini filter:authtoken admin_tenant_name service # openstack-config --set /etc/nova/api-paste.ini filter:authtoken admin_user nova # openstack-config --set /etc/nova/api-paste.ini filter:authtoken admin_password Abcd1234 # openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone # openstack-config --set /etc/nova/nova.conf DEFAULT flat_interface em1 # openstack-config --set /etc/nova/nova.conf DEFAULT public_interface em1 # for svc in api compute; do service openstack-nova-$svc restart; done 查看flavor的列表来检查一下我们配置好的nova是否能通过keystone来进行验证了 # nova flavor-list +----+-----------+-----------+------+-----------+------+-------+-------------+ | ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | +----+-----------+-----------+------+-----------+------+-------+-------------+ | 1 | m1.tiny | 512 | 0 | 0 | | 1 | 1.0 | | 2 | m1.small | 2048 | 10 | 20 | | 1 | 1.0 | | 3 | m1.medium | 4096 | 10 | 40 | | 2 | 1.0 | | 4 | m1.large | 8192 | 10 | 80 | | 4 | 1.0 | | 5 | m1.xlarge | 16384 | 10 | 160 | | 8 | 1.0 | +----+-----------+-----------+------+-----------+------+-------+-------------+ 3.4 配置glance 与nova的配置一样,我们也依然需要先设置glance来能使用keystone进行认证 # openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone # openstack-config --set /etc/glance/glance-registry.conf paste_deploy flavor keystone # openstack-config --set /etc/glance/glance-api-paste.ini filter:authtoken admin_tenant_name service # openstack-config --set /etc/glance/glance-api-paste.ini filter:authtoken admin_user glance # openstack-config --set /etc/glance/glance-api-paste.ini filter:authtoken admin_password Abcd1234 # openstack-config --set /etc/glance/glance-registry-paste.ini filter:authtoken admin_tenant_name service # openstack-config --set /etc/glance/glance-registry-paste.ini filter:authtoken admin_user glance # openstack-config --set /etc/glance/glance-registry-paste.ini filter:authtoken admin_password Abcd1234 # service openstack-glance-api restart # service openstack-glance-registry restart 配置完后,使用查看当前镜像命令进行验证: # glance index 如果命令正确的话,返回值是0,当前我们没有添加任何镜像,所以这个一定是查不出内容的。但是返回值可以告诉我们是否命令执行正常。 3.5 添加网络 创建一个网络,这个网络是到时候由openstack创建出的虚拟机的主网络,所以我们可以根据自己的需要来创建,并且制定网桥,Openstack的虚拟网络会在创建第一个实例的时候由openstack自动创建出来,无需我们手动添加。 # nova-manage network create weiyantest 192.168.0.0/24 1 256 --bridge=weiyanbr01 3.6 创建一个keypair keypair实际上就是ssh认证时候的私钥,我们创建好的实例想进入它还不知道密码的时候就需要使用它来进入,而如果有keypair,则所有新创建出来的实例都是已它来作为自己的私钥的。我们这里创建一个名字叫mykey的私钥 # nova keypair-add mykey > oskey.priv # chmod 600 oskey.priv 设置keypair的加载类型,允许我们使用这一个私钥进入多个不同的实例 # openstack-config --set /etc/nova/nova.conf DEFAULT libvirt_inject_partition -1 # service openstack-nova-compute restart 3.7 设置Dashboard Dashboard实际上就是Openstack的Web控制端,比较好安装 # yum install openstack-dashboard # service httpd restart && chkconfig httpd on 之后,我们就可以通过 http://你机器的IP/dashboard 的方式访问到了,用户名是admin,密码是我们在系统环境中指定的密码 3.8 设置安全策略 这里的安全策略实际上就是后台那些创建出来的实例的防火墙~~ # nova secgroup-add-rule default tcp 22 22 0.0.0.0/0 # nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0 # nova secgroup-list # nova secgroup-list-rules default +-------------+-----------+---------+-----------+--------------+ | IP Protocol | From Port | To Port | IP Range | Source Group | +-------------+-----------+---------+-----------+--------------+ | icmp | -1 | -1 | 0.0.0.0/0 | | | tcp | 22 | 22 | 0.0.0.0/0 | | +-------------+-----------+---------+-----------+--------------+ |