在ubuntu 12.04中部署OpenStack Essex

说实话,部署这个可花了我的不少时间,因为好多的文档都是英文的,这对于我这个”英盲“来说是一个极大的挑战,而且网上关于openstack的中文文档也没有多少,因此要是遇到了一些问题的话很是头疼,不知道该怎么总结,经过我长时间的尝试和网上搜集资料,今天终于搭建成功了,分享给大家!

首先说一下我搭建的环境,我是在Hype-V里面建立的ubuntu 虚拟机,用的是两块虚拟网卡.

还有就是我主要是按照陈沙克的文档来搭建的,下面是原文的传送门

http://hi.baidu.com/chenshake/item/29a7b8c1b96fb82d46d5c0fb

下面就是主要的搭建过程:

第一步:准备系统

1.首先先把你的系统升级到最新版,所有的软件包包括内核都升级一下,免得后面安装软件包的时候出现什么不依赖的情况

sudo aptitude update

sudo aptitude upgrade

还有就是下面所有的操作最好都切换到root用户,

sudo passwd

sudo –

2.设置网络

我的虚拟机的ip是222.24.24.174,大家最好按照我的设置做,等搭建成功之后在做修改

sudo vim /etc/network/interfaces

auto lo

iface lo inet loopback

auto eth0

iface eth0 inet static

address 222.24.24.174

netmask 255.255.255.0

broadcast 222.24.24.255

gateway 222.24.24.1

# dns-* options are implemented by the resolvconf package, if installed

dns-nameservers 202.117.128.2

auto eth1

iface eth1 inet static

address 192.168.22.1

network 192.168.22.0

netmask 255.255.255.0

broadcast 192.168.22.255

3.重启下网络,让修改生效

/etc/init.d/networking restart

4.安装bridge

apt-get install bridge-utils

重启网络或者重启一下机器都可以

/etc/init.d/networking restart

5.设置NTP

apt-get install ntp

编辑 /etc/ntp.conf 在末尾添加下面3行

server ntp.ubuntu.com iburst

server 127.127.1.0

fudge 127.127.1.0 stratum 10

重启服务

sudo /etc/init.d/ntp restart

6.设置Iscsi

apt-get install tgt

重启服务

service tgt start

安装iscsi客户端

apt-get install open-iscsi open-iscsi-utils

8:安装rabbitmq

apt-get install rabbitmq-server memcached python-memcache

apt-get install kvm libvirt-bin

第二步:安装mysql,创建相关数据库

Openstack的组件:nova,keystone,glance,都需要数据库。不过目前官方建议keystone,采用sqlite存储,而不用mysql存放。所以我们只需要创建nova和glance两个数据库就可以

1:安装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

2:安装phpmyadmin (可选)

为了方便,可以把phpmyadmin装上,可以比较方便管理数据库

apt-get install phpmyadmin

安装的时候,第一个提示是让你输入root的密码。

3:创建数据库

nova数据库,   管理员:novadbadmin,密码是:dieD9Mie

glance数据库,管理员:glancedbadmin,密码是:ohC3teiv

如果你修改密码,后面很多配置都需要相应更改。

mysql -uroot -p

CREATE DATABASE nova;

GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'%' IDENTIFIED BY 'dieD9Mie';

CREATE DATABASE glance;

GRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'%' IDENTIFIED BY 'ohC3teiv';

quit

三:安装和配置keystone

Openstack的各个组件,keystone是最难配置。搞定keystone,后面应该就没啥麻烦。

1:安装keystone

apt-get install keystone python-keystone python-keystoneclient

2:配置keystone

需要修改 /etc/keystone/keystone.conf 两个地方

默认定义的token就是ADMIN,我使用hastexo作为token

[DEFAULT]

bind_host = 0.0.0.0

public_port = 5000

admin_port = 35357

#admin_token = ADMIN

admin_token =hastexo

另外一个地方是

[catalog]

#driver = keystone.catalog.backends.sql.Catalog

driver = keystone.catalog.backends.templated.TemplatedCatalog

template_file = /etc/keystone/default_catalog.templates

重启服务

service keystone restart

3: 导入数据

这个是通过修改devstack的keystone_data.sh 脚本。实现导入数据。如果你上面的设置都和我一样,那直接运行这个脚本就可以。

http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt

下载脚本

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="Centrin"

export SERVICE_ENDPOINT="http://localhost:35357/v2.0"

SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}

然后运行这个脚本

./keystone_data.sh

顺利运行,会什么都没有输出

root@openstack:~# echo $?

0

root@openstack:~# keystone --tenant=admin --username=admin --password=hastexo --auth_url=http://127.0.0.1:5000/v2.0 user-list
+----------------------------------+---------+--------------------+--------+
| id | enabled | email | name |
+----------------------------------+---------+--------------------+--------+
| a8fa3a4e842946f18f40f1132754e262 | True | admin@hastexo.com | admin |
| b86ba4884b7c405e98529f94dc6f44f4 | True | demo@hastexo.com | demo |
| e36322db7bdb46c0877cf6753bd23ebf | True | nova@hastexo.com | nova |
| fcddaebccdfa47e2aa0cfed3ab516de8 | True | glance@hastexo.com | glance |
+----------------------------------+---------+--------------------+--------+

看到这些,就说明keystone安装正常。

接下来就是添加环境变量

export OS_TENANT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=hastexo

export OS_AUTH_URL="http://localhost:5000/v2.0/"

然后运行

root@openstack:~# keystone user-list
+----------------------------------+---------+--------------------+--------+
| id | enabled | email | name |
+----------------------------------+---------+--------------------+--------+
| a8fa3a4e842946f18f40f1132754e262 | True | admin@hastexo.com | admin |
| b86ba4884b7c405e98529f94dc6f44f4 | True | demo@hastexo.com | demo |
| e36322db7bdb46c0877cf6753bd23ebf | True | nova@hastexo.com | nova |
| fcddaebccdfa47e2aa0cfed3ab516de8 | True | glance@hastexo.com | glance |
+----------------------------------+---------+--------------------+--------+

四:安装和配置glance

1:安装软件

apt-get install glance glance-api glance-client glance-common glance-registry python-glance

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 =hastexo

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 =hastexo

4:配置/etc/glance/glance-registry.conf

修改

#sql_connection = sqlite:////var/lib/glance/glance.sqlite

sql_connection = mysql://glancedbadmin:ohC3teiv@222.24.24.174/glance

在末尾添加两行

[paste_deploy]

flavor = keystone

5:配置/etc/glance/glance-api.conf

在末尾添加两行

[paste_deploy]

flavor = keystone

6:同步数据库

目前glance 需要手工同步数据库。你装一个phpmyadmin,先确认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_format.py:47:

SADeprecationWarning: useexisting is deprecated.  Use extend_existing.

useexisting=True)

重启服务

 service glance-api restart && service glance-registry restart

7:验证glance服务是否正常

下面的步骤照做就可以,具体原理可以看英文

export OS_TENANT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=hastexo

export OS_AUTH_URL="http://localhost:5000/v2.0/"

运行

glance index

没有任何的输出。表示正常。

#echo $?

下面会输出0 ,表示正常。

# glance –version

glance 2012.1

8:下载镜像并上传

ubuntu官方专门提供image,http://uec-images.ubuntu.com。不过一定要注意

这些镜像,都是必须使用密钥登录,直接用用户名密码是无法的登录的。

下载镜像

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 index

或者

glance –username=admin –password=hastexo –tenant=admin –auth_url=http://127.0.0.1:5000/v2.0 index

就可以看到上传的image。

root@openstack:~# glance index

ID Name Disk Format Container Format Size

------------------------------------ ------------------------------ -------------------- -------------------- --------------

cbcc3785-dfe6-4100-9f7c-04be4d8d70bb Ubuntu 12.04 cloudimg amd64 qcow2 ovf 232259584

五:安装配置nova

1:安装nova相关组件

apt-get install nova-api nova-cert nova-common nova-compute nova-compute-kvm nova-doc nova-network nova-objectstore nova-scheduler  nova-volume python-nova python-novaclient  nova-consoleauth python-novnc novnc

2:配置 /etc/nova/nova.conf

把nova.conf 原来的内容删除掉。直接贴下面内容。重点需要注意的是,

如果你是在虚拟机里测试Openstack。你需要把默认的虚拟化引擎从kvm改成qemu。

还有就是修改 /etc/nova/nova-compute.conf 将默认的虚拟化引擎从kvm改成qemu。

root@openstack:~# cat /etc/nova/nova-compute.conf

--libvirt_type=qemu

 

root@openstack:~# cat /etc/nova/nova.conf

--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

--s3_host=222.24.24.174

--ec2_host=222.24.24.174

--rabbit_host=222.24.24.174

--cc_host=222.24.24.174

--nova_url=http://222.24.24.174:8774/v1.1/

--routing_source_ip=222.24.24.174

--glance_api_servers=222.24.24.174:9292

--image_service=nova.image.glance.GlanceImageService

--iscsi_ip_prefix=192.168.22

--sql_connection=mysql://novadbadmin:dieD9Mie@222.24.24.174/nova

--ec2_url=http://222.24.24.174:8773/services/Cloud

--keystone_ec2_url=http://222.24.24.174:5000/v2.0/ec2tokens

--api_paste_config=/etc/nova/api-paste.ini

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges=true

--start_guests_on_host_boot=true

--resume_guests_state_on_host_boot=true

#novnc

--novnc_enabled=true

--novncproxy_base_url= http://222.24.24.174:6080/vnc_auto.html

--vncserver_proxyclient_address=127.0.0.1

--vncserver_listen=127.0.0.1

# network specific settings

--network_manager=nova.network.manager.FlatDHCPManager

--public_interface=eth0

--flat_interface=eth1

--flat_network_bridge=br100

--fixed_range=192.168.22.32/27

--floating_range=10.42.0.32/27

--network_size=32

--flat_network_dhcp_start=192.168.22.33

--flat_injected=False

--force_dhcp_release

--iscsi_helper=tgtadm

--connection_type=libvirt

--root_helper=sudo nova-rootwrap

#--verbose

--verbose=False

3:配置/etc/nova/api-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 =hastexo

4:停止和重启nova相关服务

for a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done

5:同步数据库

以前我运行同步数据库,如果正确, 当nova.conf

–verbose=False

是没有任何的输出,否则有一堆是输出。

nova-manage db sync

创建网络

nova-manage network create private --fixed_range_v4=192.168.22.32/27 --num_networks=1 --bridge=br100 --bridge_interface=eth1 --network_size=32

设定floating IP

nova-manage floating create --ip_range=222.24.24.32/27

设置权限

chown -R nova:nova /etc/nova

再重启相关服务

for a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done

6:检查nova服务

root@openstack:~# nova image-list
+--------------------------------------+-----------------------------+--------+--------+
| ID | Name | Status | Server |
+--------------------------------------+-----------------------------+--------+--------+
| cbcc3785-dfe6-4100-9f7c-04be4d8d70bb | Ubuntu 12.04 cloudimg amd64 | ACTIVE | |
+--------------------------------------+-----------------------------+--------+--------+

六:创建第一个VM

这是用命令行创建vm,这个步骤可以跳过。我没做。不影响后面的安装。

1: 创建密钥

# ssh-keygen

一路回车,就可以了

2:上传密钥到数据库

 nova keypair-add --pub_key .ssh/id_rsa.pub key1

这个时候,就可以查看到上传的key

root@openstack:~# nova keypair-list
+------+-------------------------------------------------+
| Name | Fingerprint |
+------+-------------------------------------------------+
| key1 | aa:79:08:4a:dc:c7:2b:98:eb:41:cb:7d:cf:e3:62:61 |
+------+-------------------------------------------------+

4:开始创建虚拟机

打开防火墙

nova secgroup-add-rule default tcp 1 65535 0.0.0.0/0

nova secgroup-add-rule default udp 1 65535 0.0.0.0/0

nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0

root@openstack:~# nova image-list
+————————————–+—————————–+——–+——–+
| ID | Name | Status | Server |
+————————————–+—————————–+——–+——–+
| cbcc3785-dfe6-4100-9f7c-04be4d8d70bb | Ubuntu 12.04 cloudimg amd64 | ACTIVE | |
+————————————–+—————————–+——–+——–+

创建虚拟机:root@openstack:~# nova boot --flavor 1 --image cbcc3785-dfe6-4100-9f7c-04be4d8d70bb --key_name key1 superfrobnicator

查看一下创建的虚拟机

nova show superfrobnicator

这个时候,就可以直接ssh到虚拟机上。

ssh -i .ssh/id_rsa ubuntu@192.168.22.35

这样就可以登录服务器。

七:安装和配置Dashbaord

1:安装dashbaord

apt-get install libapache2-mod-wsgi openstack-dashboard

这个时候,你就可以登录dashboard

http://222.24.24.174

user:admin

pass:hastexo

然后你就可以方便的使用它来管理镜像和虚拟机。

发表评论

电子邮件地址不会被公开。 必填项已用*标注