基于虚拟机 ubuntu 环境下 openstack 的安装步骤
Project
OpenStack
Version
V1.0
Date
2012-6-20
Auth
Liws
安装环境介绍:
虚拟机:VMware-8.0.2 版本
操作系统:ubuntu12.04-64bit-server
OpenStack:OpenStack Essex 12.1
硬盘:/dev/sda
网卡:两个
/dev/sdb
一、安装规划:
本次测试是在虚拟机 VMware 上来安装部署,硬盘和网卡各两个,由 VMware 来虚拟化完成。
1、数据库规划:
nova,keystone,glance,都需要用到数据库。对于 keystone 和 glance,默认是采用 sqlite,
文档全部会改成使用 mysql 作为数据库。
所以需要创建 3 个数据库 nova,keystone 和 glance,用户名和密码分别为:nova/password,
keystone/password,glance/password。
2、keystone 的 token:
默认 keystone 的 token 是 ADMIN,为了方便,把 keystone 的 token 设置成:1234567890,
即 admin_token = 1234567890。
3、租户和管理员:
我们需要创建一个 admin 的租户,该租户下有一个 admin 的管理员,密码是 admin。这
其实也是你 web 登陆的用户名和密码。即:
admin_tenant_name = admin
admin_user = admin
admin_password = admin
4、网络规划:
Eth0: 公网 IP:172.18.9.100
Eth1: 不需要设置 IP
Floating IP: 172.18.9.128/25
(虚拟机的公网 IP)
Fix IP:192.168.225.128/25 (虚拟机的固定 IP)
二、前提准备:
1、 下载 ubuntu 12.04. 服务器版本:
ubuntu12.04 正式版本,需要 4 月 26 号发布,目前是 beta2。
http://mirrors.ustc.edu.cn/ubuntu-releases/12.04/ubuntu-12.04-server-amd64.iso
2、 安装 ubuntu12.04:
安装 ubuntu 之前,需要对 VMware 做一些安装前的设置,其中一项是网卡设置,需要
两块网卡,一个用 bridge 的方式(eth0),另一个选用 host only 的方式(eth1)。另一项是硬
盘的设置,需要两个硬盘,只需在 VMware 的属性设置中另外添加一个硬盘即可。
安装 ubuntu 操作系统比较简单,IP 设置需要自己设置,最好在安装 OS 时设置好,只需
设置 eth0 的 IP 即可。另外服务只用选择 ssh server,最小化安装即可。中间可能需要设置添
加代理。
3、 OS 设置:
安装完系统之后,首先设置 root 密码:
sudo passwd root
之后的操作都需要在 root 权限下进行。
其次需要进行系统升级,得到最新版本的包:
apt-get update
apt-get upgrade
4、 网络设置:
root@openstack:/etc/nova# cat /etc/network/interfaces
# This file describes the network interfaces available on your
# and how to activate them. For more information, see interfaces(5).
system
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 172.18.9.100
netmask 255.255.255.0
network 172.18.9.0
broadcast 172.18.9.255
gateway 172.18.9.1
# dns-* options are implemented by the resolvconf package, if
installed
dns-nameservers 202.84.17.202 172.18.9.1
dns-search test.com
5、 创建 nova-volume:
需要对第二块硬盘创建一个 vg,名字为 nova-volume:
parted /dev/sdb --script mklabel gpt
parted /dev/sdb --script -- mkpart primary 0 -1
parted /dev/sdb --script print
pvcreate /dev/sdb1
vgcreate nova-volumes /dev/sdb1
6、 安装必备软件:
这里把要用的软件都装上,不需要一个一个安装
apt-get
python-memcache kvm libvirt-bin euca2ools
install
-y
ntp tgt open-iscsi open-iscsi-utils rabbitmq-server memcached
7、 安装数据库:
安装 mysql,在安装过程中,会提示你输入 root 密码。
apt-get install -y mysql-server python-mysqldb
让 mysql 支持外部访问
sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf
service mysql restart
创建 nova,keystone,glance 数据库:
mysql -uroot -p
CREATE DATABASE nova;
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'password';
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'password';
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'password';
quit
三、组件 keystone 的安装:
在 Openstack 里,keystone 的位置非常重要,所有的组件的认证授权,都需要经过他。
1、 安装 keystone:
apt-get install -y keystone python-keystone python-keystoneclient
2、 配置 keystone:
需要修改 /etc/keystone/keystone.conf 3 个地方,默认定义的 token 是 ADMIN,改成:
1234567890
[DEFAULT]
bind_host = 0.0.0.0
public_port = 5000
admin_port = 35357
#admin_token = ADMIN
admin_token =1234567890
mysql 的连接,默认是采用 sqlite,
[sql]
#connection = sqlite:////var/lib/keystone/keystone.db
connection= mysql://keystone:password@172.16.10.6:3306/keystone
idle_timeout = 200
修改 catalog,
[catalog]
#driver = keystone.catalog.backends.sql.Catalog
driver = keystone.catalog.backends.templated.TemplatedCatalog
template_file = /etc/keystone/default_catalog.templates
修改之后,需要重启服务和同步数据库,
service keystone restart
keystone-manage db_sync
3、 导入数据:
这个需通过修改 devstack 的 keystone_data.sh 脚本,实现导入数据。
下载脚本:
wget http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt
mv keystone_data.sh_.txt keystone_data.sh
让脚本可运行:
chmod +x keystone_data.sh
运行脚本前, 需要修改脚本,修改两个地方,第一个是登录 dashboard 的 admin 的密码,
第二个就是 keystone 的 token:
#ADMIN_PASSWORD=${ADMIN_PASSWORD:-hastexo}
ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}
SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}
#export SERVICE_TOKEN="hastexo"
export SERVICE_TOKEN="1234567890"
export SERVICE_ENDPOINT="http://localhost:35357/v2.0"
SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}
运行脚本:
#./keystone_data.sh
4、 检查 keystone 是否运行正常:
需设置环境变量,将下列环境变量添加到/etc/profile 末尾,
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_AUTH_URL= http://localhost:5000/v2.0/
让环境变量生效:
source /etc/profile
检查一下环境变量是否生效:
# export | grep OS_
输出下面内容就表示正常:
declare -x OS_AUTH_URL="http://localhost:5000/v2.0/"
declare -x OS_PASSWORD="admin"
declare -x OS_TENANT_NAME="admin"
declare -x OS_USERNAME="admin"
运行:keystone user-list
5、 设置系统的环境变量:
同样把下面环境变量添加到/etc/profile 的文件末尾:
export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')
export CREDS=$(keystone ec2-credentials-create)
export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')
同样运行 source /etc/profile 使得环境变量生效。
四、组件 glance 的安装:
组件 glance 是用作镜像管理来使用的,即 OpenStack Image Service。
1、 安装 glance 相关软件:
apt-get
install
python-glance
-y
glance
glance-api
glance-client
glance-common glance-registry
2、 配置/etc/glance/glance-api-paste.ini:
修改文件最后 3 行,这些设置都是 keystone 导入数据的时候设置的。
admin_tenant_name = %SERVICE_TENANT_NAME%
admin_user = %SERVICE_USER%
admin_password = %SERVICE_PASSWORD%
改成
admin_tenant_name = admin
admin_user = admin
admin_password = admin
3、 设置 /etc/glance/glance-registry-paste.ini:
同样也是修改文件最后 3 行,和上面是一样的。
admin_tenant_name = %SERVICE_TENANT_NAME%
admin_user = %SERVICE_USER%
admin_password = %SERVICE_PASSWORD%
改成
admin_tenant_name = admin
admin_user = admin
admin_password = admin
4、 配置/etc/glance/glance-registry.conf:
修改
#sql_connection = sqlite:////var/lib/glance/glance.sqlite
sql_connection = mysql://glance:password@172.16.10.6/glance
在末尾添加两行,
[paste_deploy]
flavor = keystone
5、 配置/etc/glance/glance-api.conf:
在末尾添加两行,
[paste_deploy]
flavor = keystone
6、 同步数据库:
目前 glance 需要手工同步数据库。
glance-manage version_control 0
glance-manage db_sync
/usr/lib/python2.7/dist-packages/glance/registry/db/migrate_repo/versions/003_add_disk_
Use extend_existing.
format.py:47: SADeprecationWarning: useexisting is deprecated.
useexisting=True)
重启服务,
# service glance-api restart && service glance-registry restart
glance-api stop/waiting
glance-api start/running, process 13321
stop: Unknown instance:
glance-registry start/running, process 13327
7、 验证 glance 服务是否正常:
glance index
没任何输出表示正常。
# glance --version
glance 2012.1
8、 下载镜像并上传:
ubuntu 官方专门提供 image,不过一定要注意,这些镜像,都是必须使用密钥登录,直
接用用户名密码是无法的登录的。
另外 ubuntu 有两个地方提供类似的 image,
http://cloud-images.ubuntu.com/precise/
http://uec-images.ubuntu.com/releases/
ubuntu 推荐大家在 http://cloud-images.ubuntu.com 下载 image。到底他们间有什么区别,
不得而知。ubuntu 目前还在更新 cloud-image 里面的内容。
下载镜像,http://cloud-images.ubuntu.com/precise/current/,这个是 ubuntu 提供的最新
的稳定的镜像。
wget
http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img
上传镜像:
glance add name="Ubuntu 12.04 cloudimg amd64" is_public=true container_format=ovf
disk_format=qcow2 < /root/precise-server-cloudimg-amd64-disk1.img
这个时候用 glance 测试,就可以看到上传的镜像了。
五、组件 nova 的安装:
1、 安装 nova 相关软件:
apt-get install
-y nova-api nova-cert nova-common nova-compute nova-compute-kvm
nova-volume python-nova
nova-doc nova-network nova-objectstore nova-scheduler
python-novaclient nova-consoleauth python-novnc novnc
2、 配置 /etc/nova/nova.conf:
可以把原来的 nova.conf 文件备份掉,然后用下面的内容填充。由于是在虚拟机环境下
进行测试 openstack,所以需要把 libvirt_type 的值该成 qemu。
[DEFAULT]
dhcpbridge_flagfile=/etc/nova/nova.conf
dhcpbridge=/usr/bin/nova-dhcpbridge
logdir=/var/log/nova
state_path=/var/lib/nova
lock_path=/var/lock/nova
allow_admin_api=true
use_deprecated_auth=false
auth_strategy=keystone
scheduler_driver=nova.scheduler.simple.SimpleScheduler