zl程序教程

您现在的位置是:首页 >  其他

当前栏目

《OpenStack实战指南》—— 2.1 在Ubuntu上使用二进制包安装

安装Ubuntu二进制 指南 实战 2.1 Openstack 使用
2023-09-11 14:19:09 时间

本节书摘来自华章出版社《OpenStack实战指南》一 书中的第2章,第2.1节,作者:黄 凯 毛伟杰 顾骏杰 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.1 在Ubuntu上使用二进制包安装

笔者写本书的时候,OpenStack已经发展到Havana版本,几大主流的Linux发行版本都会将OpenStack的源代码做成各自平台的二进制安装包,以供用户使用。随着OpenStack使用的人越来越多,发行版本对Linux的支持力度也越来越大,就目前来看,Ubuntu(Debian)、RedHat、OpenSUSE都有相应的包和开发定制的安装程序。当然,各个Linux平台上的包制作发布的时间各有快慢,同时支持的版本更新也有快有慢。Ubuntu是更新最快的发行版本之一。RedHat也越来越重视OpenStack,更新包的速度也比以前快很多。这里先以Ubuntu作为底层的操作系统,因为Ubuntu从OpenStack的Cactus版本开始就将其作为自身一个云计算的软件,同时,社区对OpenStack的支持很好,网络上很多文档都是以Ubuntu为操作系统进行部署安装的,并且OpenStack的开发人员是在Ubuntu上进行OpenStack的开发的,就目前情况来看,其支持度最好。
本节将会介绍如何在Ubuntu 12.04 LTS上安装Keystone、Glance、Nova、Neutron、Cinder和Horizon这几个组件,其中使用4台服务器,分别作为controller、network、compute、volume节点。这4个节点的名字只是按照它们需要完成的任务来命名的,并不是说它们有特定的名字。

2.1.1 控制节点的安装

在controller节点上计划部署如下组件:
RabbitMQ
MySQL
Keystone
Glance
Neutron
Nova中除去nova-compute的其他组件
Cinder中除去cinder-volume的其他组件
Horizon
下面详细介绍一下各个组件。
RabbitMQ:在OpenStack中,各个服务之间是通过消息来交互的。因为OpenStack使用AMQP(高级消息队列协议)作为其消息传递的技术,所以RabbitMQ、Qpid、ZeroMQ等支持AMQP的软件都是被OpenStack所支持的。这里会使用RabbitMQ,因为它是第一个被OpenStack使用的消息传递的软件。OpenStack通过AMQP实现RPC的服务,来保证不同组件之间的通信,RabbitMQ是controller中一个非常关键的服务。RabbitMQ结构图如图2-1所示。
screenshot

MySQL:OpenStack所使用的数据库。包括Nova、Glance、Cinder等在内的组件都会建立自己的数据库,保存一些必要的数据。
Keystone:OpenStack的用户认证组件。它的功能主要是建立管理项目的用户和各种服务端口,以及进行用户的身份认证。要使用OpenStack的任意API,第一步就必须通过Keystone的验证。
Glance:用来存放管理虚拟机镜像和快照的服务,这也是一个最小架构中必须有的服务。
Neutron:用来提供虚拟机网络通信的组件。
Nova(除去nova-compute的其他组件):这里不包括nova-compute,因为Controller节点不负责运行虚拟机。Nova是个至关重要的组件,也是个相对庞大的组件,其中有很多服务,它是进行生成虚拟机工作的主要服务。
Cinder(除去Cinder-volume的其他组件):用来创建、删除及管理volume(虚拟磁盘卷),以及给volume做快照等服务的组件。
Horizon:OpenStack的Web管理页面,使用Django框架开发。Web管理页面包含了日常使用的大部分功能,提供给用户一个最直观的展现方式。很多简单的二次开发工作都是从Horizon开始的。
1.?系统环境准备
在安装部署OpenStack之前,首先需要做一些安装额外软件和配置网络等准备,主要包括以下几个部分:
操作系统为Ubuntu 12.04 LTS,最小化安装即可。在安装系统的时候,安装openssh-server,分区尽量能有30GB空间,用来完成这个测试环境。
网络连接和IP设置。需要两个以太网口,分配两个独立的网络。
添加OpenStack Havana版本的软件包源到系统中,并且更新系统。
安装NTP服务。
MySQL,安装MySQL数据库和Python的MySQL库。
RabbitMQ,安装Rabbitmq-server作为OpenStack的AMQP。
(1)网络IP配置
按照架构的设计,controller需要两个网口,连接两个网段。
eth0所在的网段是一个用户可访问的网段,在本章中,把这个网络命名为network-1,将会通过Web访问这个eth0所使用的IP来进行登录Web的操作。举例来说,如果笔者现在的PC配置的IP是10.10.101.10,22位的掩码,那么笔者的controller的eth0可以配置为10.10.101.10/22这个网段中任何没有使用的IP地址。
eth1所在的网段是一个私有的管理网段,在本章中,把这个网络命名为network-2。在实际环境中,所有的节点,无论是controller,还是计算节点,网络节点都需要有一个网口连接这个网段,所有的数据库连接,以及RabbitMQ的通信使用的都是这个网口。如果用SSH登录来进行修改配置等工作,也应接入这个网段进行操作。如果需要监控OpenStack环境中的服务器和虚拟机,也建议通过接入这个网段进行。这个网段不需要有能访问外部网络的功能。在一个简单的模型中,只要把这些网口接入到一台交换机上即可,示例如下所示:


 # cat /etc/network/interfaces

 # network-1 Internet

 auto eth0

 iface eth0 inet static

address 10.10.101.10

netmask 255.255.252.0

network 10.10.100.0

broadcast 10.10.103.255

gateway 10.10.100.1

dns-nameservers 8.8.8.8

 # network-2 Management

 auto eth1

 iface eth1 inet static

address 10.80.80.10

netmask 255.255.255.0

以上是笔者环境中的网络配置文件,读者可以根据自己环境的实际情况进行修改,然后重启服务器网络。命令如下,提示符#的命令操作表示是在root用户环境下进行的操作。

# /etc/init.d/networking restart

(2)添加Havana的源
Ubuntu 12.04默认的OpenStack的版本是Essex版本,如果不安装其他版本的源,那么默认命令安装的都是Essex版本的软件包,这点需要用户注意。此处,要加入OpenStack软件包的Havana的源,然后更新一下系统的软件包信息和已安装的软件。命令如下:

# apt-get install –y python-software-properties

# add-apt-repository cloud-archive:avana

加入新的源后会在/etc/apt/sources.list.d/目录下多出一个Havana源的文件,如下所示:

# apt-get update

# apt-get upgrade –y

# apt-get dist-upgrade –y

更新完系统后可以重启,也可以等安装完OpenStack后再重启。
(3)安装NTP服务
在整个OpenStack集群中,规模可以从几个节点到几十个节点,甚至几百个,为了保证这些集群中的节点互相通信正常,需要使各个节点的时间一致,误差不能太大,因此需要一台NTP服务器来提供时间同步,在这个测试环境中,选择在控制节点上安装NTP服务。命令如下:

apt-get install –y ntp

(4)安装MySQL数据库
OpenStack的主要组件都需要数据库的支持。OpenStack支持MySQL、PostgreSQL、SQLite。在这个测试环境中,选择MySQL作为数据库。控制端安装MySQL的Server,节点通过Python的MySQL客户端模块连接到MySQL Server。命令如下:

# apt-get install –y mysql-server python-mysqldb

安装MySQL的过程中,会提示创建MySQL的root密码。
默认MySQL只监听127.0.0.1,而在实际的生产环境中,出于安全考虑,数据库通信经过的是管理网段,只需让MySQL监听管理网的IP。在这个安装实例中,可以将管理网IP设置为10.80.80.10。重启MySQL使配置生效。代码如下:

# sed –I"s/127.0.0.1/10.80.80.10/" /etc/mysql/my.cnf

# service mysql restart

(5)安装Messaging服务
OpenStack组件之间的通信需要通过支持AMQP的Messaging服务软件。OpenStack支持的有RabbitMQ、Qpid和ZeroMQ。这里安装RabbitMQ。命令如下:

# apt-get install -y rabbitmq-server

安装RabbitMQ服务软件时,RabbitMQ默认用户guest的密码是guest,出于安全考虑,用户可以在实际环境中更改密码。如果用户的RabbitMQ启动失败,那么可能是由于/etc/hosts中127.0.0.1所对应的主机名和使用命令hostname后的结果不一致,此时可以尝试在/etc/hosts的localhost前面把hostname加入,然后再启动RabbitMQ。修改guest密码的命令是:

# rabbitmqctl change_password guest NEW_PASSWORD

至此,前置工作已经完成,下面可以开始安装OpenStack了。
2.?安装部署Keystone
把Keystone作为安装OpenStack的第一步,因为它是整个OpenStack的认证系统,就好比屋子的一扇门,只有通过了这扇门,才能进行后面的操作。另外,Keystone负责OpenStack的用户管理,只有创建了用户,才能以这个用户的身份进入这扇门。
安装配置Keystone的过程主要分为下面几步:
安装软件包和修改配置文件。
创建Keystone的数据库,并建立Keystone的表结构。
启动服务,确认服务正常运行。验证Keystone可以使用。
创建Keystone的管理员用户。
定义Keystone使用的Services和API Endpoints。
以创建的用户来使用Keystone客户端命令行。
(1)安装和配置Keystone
直接安装Keystone一个包即可,系统同时会自动安装Python-keystoneclient的客户端包,其命令如下:

# apt-get install -y keystone

Keystone的配置文件放在/etc/keystone目录下,要修改的主要是keystone.conf这个文件。主要修改以下几个参数:

# vi /etc/keystone/keystone.conf

admin_token = openstack

debug = True

verbose = True

connection = mysql://keystoneuser:openstack@localhost/keystone

admin_token:这个选项至关重要,可以将其比喻成获取Keystone管理权限的“钥匙”。在这里可以设置一个复杂的字符串,因为太简单的字符串容易被破解。由于是测试环境,笔者就用openstack这个字符串作为admin的token。此时,因为在Keystone中还未建立任何用户,所以这个token和用户无关,但是这个token在生产环境中需要足够复杂且绝对保密。
debug与verbose:这两个选项均设置为True,用于测试时查看详细的输出信息,而输出信息会保存在log_dir和log_file定义的目录文件中。
connection:这个选项定义Keystone使用的数据库的URL。这里用了MySQL的keystoneuser用户,密码是openstack,数据库地址是localhost,也就是本机,数据库名是keystone。注意,目前我们还没有建立这个数据库和数据库用户。
在这个测试环境中,保持配置文件中其他选项不变。
(2)Keystone的数据库操作
需要在MySQL中建立一个Keystone的数据库,再创建一个用户,赋予其对keystone数据库的操作权限,代码如下。注意,建立的数据库名、用户名及密码要和上面keystone.conf配置文件中的connection选项一致。

# mysql -uroot -p -e "CREATE DATABASE keystone;"

# mysql -uroot -p -e "GRANT ALL PRIVILEGES ON keystone.* TOkeystoneuser@

 localhostIDENTIFIED BY openstack;"

建立好的数据库是空的,需要初始化Keystone数据库的表结构。Keystone提供了一个很方便的创建结构的命令:

# keystone-manage db_sync

运行成功之后,可以进入MySQL查看Keystone这个数据库的表结构和字段。
(3)确认Keystone服务正常运行
配置文件修改后需要重启服务:

# service keystone restart

如何确认Keystone服务正常启动?根据笔者的经验,可以从几个方面入手,这个也是后面经常会使用的方法。
使用命令“service keystone status”查看keystone进程是否为running状态。
查看log文件。log文件被定义在keytone.conf中,默认是/var/log/keystone/keystone.log,查看是否有出错日志。如果设置了debug和verbose为True,那么信息会很详细,有利于排错。
调用命令“keystone client”。其实前两步是查看服务是否正常启动,真正确认还需要第三步,即排错。服务启动了并不代表Keystone能如用户所愿地进行工作,有时配置选项设置成不同的参数,服务也能正常运行,但是使用Keystone的时候会出错,因此,运行一个实际的命令来验证Keystone是否能正常工作。运行命令前首先要输入token和Keystone的endpoint:

# export OS_SERVICE_TOKEN=openstack

# export OS_SERVICE_ENDPOINT=http://127.0.0.1:35357/v2.0/

# keystone user-list

前面两行是设定token和endpoint的环境变量。可以把它放入一个文件里,然后每次使用OpenStack之前只要执行“source这个文件”即可。还记得前面在Keystone配置文件中的一个选项admin_token吗?这里的第一个token使的就是当时设定的那个值。第三行命令是测试Keystone是否能正常运行,需要列出Keystone中的用户。输出是一个空行?不用担心,这是正常运行的表现,至少没有报错信息。运行命令的时候,建议结合日志的方法,再打开一个窗口使用命令tail日志文件,查看是否有报错情况。因为到目前为止还没有建立过用户,所以肯定没有用户使用的使用Keystone服务的日志。
(4)创建第一个Keystone用户
接下来的部分可能有点烦琐和难以理解,但笔者不打算在这里详细讲解每条命令的意思,也不会说明为什么要这样做。这些原理性的内容将在第5章详细讲解。这里的任务是快速地把基本环境搭起来,如果读者对这部分的内容产生疑惑,可以先照着步骤去做,相信等有了一个完整可用的体系后,在使用中会慢慢理解其中的含义。
这里将建立一个用户、一个tenant和一个role,它们之间的关系是用户属于tenant,用户在tenant中可以有不同的角色。记住,操作之前一定要设置token和endpoint这两个环境变量。
首先,创建一个具有管理权限的tenant,称为admin,其代码如下:

# keystone tenant-create --name=admin

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| description | |

| enabled | True |

| id | 08cbb73f6689477eb42d7be9a901e55c |

| name | admin |

+-------------+----------------------------------+

然后,创建一个用户,命名为admin,密码设置为openstack,其代码如下:

# keystone user-create --name=admin --pass="openstack"

+----------+----------------------------------+

| Property | Value |

+----------+----------------------------------+

| email | |

| enabled | True |

| id | 3372c9032dd24ee9b2dcefcdbba13f01 |

| name | admin |

+----------+----------------------------------+

接着,创建一个称为admin的角色,其代码如下:

# keystone role-create --name=admin

+----------+----------------------------------+

| Property | Value |

+----------+----------------------------------+

| id | 59aa2c3dcbf542d1a84e6703eb45d8b1 |

| name | admin |

+----------+----------------------------------+

最后,把前面创建的tenant、用户和role组合起来,在admin的tenant中分配admin的角色给用户admin,命令如下:

# keystone user-role-add --user admin --role admin --tenant admin

(5)定义Services和API Endpoints
为了使用Keystone来认证用户使用的OpenStack中的其他组件,需要在Keystone中创建组件的服务和相应的API Endpoints,组件服务的API Endpoints是一组URL加端口号,用来提供组件服务的API接口。
这里需要创建一个Keystone的服务和Keystone的API Endpoints,其代码如下:

# keystone service-create --name keystone --type identity --description

 OpenStack Identity

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| description | OpenStack Identity |

| id | 6660f592f4884e7ca18d498e7aa130a1 |

| name | keystone |

| type | identity |

+-------------+----------------------------------+

# keystone endpoint-create --service-id 6660f592f4884e7ca18d498e7aa130a1 --publicurl 

http://10.10.101.10:5000/v2.0 --adminurl 

http://10.80.80.10:35357/v2.0 --internalurl 

http://10.80.80.10:5000/v2.0

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| adminurl | http://10.80.80.10:35357/v2.0 |

| id | 2dee1b06cbda4d8095c344ab3671d0ce |

| internalurl | http://10.80.80.10:5000/v2.0 |

| publicurl | http://10.10.101.10:5000/v2.0 |

| region | regionOne |

| service_id | 6660f592f4884e7ca18d498e7aa130a1 |

+-------------+----------------------------------+

endpoint-create命令中的service id是service-create命令得到的ID号。publicurl里面的IP使用对外是可以访问的。adminurl和internalurl使用内部管理的IP,当然这个也可以视实际情况而定。
(6)使用Keystone命令行客户端
使用命令行客户端需要通过认证,有以下两种认证的方式。
使用keystone.conf配置文件中的token认证,设置以下两个环境变量:

# export OS_SERVICE_TOKEN=openstack

# export OS_SERVICE_ENDPOINT=http://127.0.0.1:35357/v2.0/

使用在Keystone中创建的用户名及密码进行认证,设置以下环境变量:

export OS_TENANT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=openstack

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

其中填入需要认证用户的tenant、用户名和密码,最后一个是认证的URL,仔细观察和Keystone的endpoint中的publicurl的关系。
第一种方式通过设置OS_SERVICE_TOKEN和OS_SERVICE_ENDPOINT来认证,适用于Keystone中还没有管理员权限的用户的情况。现在我们有了一个管理员用户,就应该通过用户登录,而不是使用token。需要取消OS_SERVICE_TOKEN和OS_SERVICE_ENDPOINT这两个变量,然后再导入用户的认证。如果同时设置了两种方式,那么系统会有一个忽略用户认证的警告,仍旧使用token的认证。命令如下:

# unset OS_SERVICE_TOKEN

# unset OS_SERVICE_ENDPOINT

可以把认证方式的变量写在一个文件中,这里命令为openstackrc,在以后每次使用的时候,导入以下文件即可。

# source openstackrc

# keystone user-list

+----------------------------------+-------+---------+-------+

| id | name | enabled | email |

+----------------------------------+-------+---------+-------+

| 3372c9032dd24ee9b2dcefcdbba13f01 | admin | True | |

+----------------------------------+-------+---------+-------+

3.?安装Glance镜像组件
Glance组件完成镜像模板snapshot的存储工作。Glance主要包括了glance-api和glane-registry两个服务,其安装和配置都比较简单,主要分为以下几步:
安装软件包,编辑配置文件。
创建Glance的数据库。
在Keystone中,创建Glance的用户、服务和Endpoint。
初始化Glance数据库,启动服务,确认服务正常运行。
在Glance中添加虚拟机镜像。
(1)安装软件包,编辑配置文件
安装Glance服务时,将把glance-api、glance-registry、python-glanceclient都安装上。安装命令如下:

# apt-get install -y glance

Glance的配置默认文件在/etc/glance下,需要修改如下内容。
glance-api.conf的修改如下:

[DEFAULT]

verbose = True

debug = True

sql_connection = mysql://glanceuser:openstack@localhost/glance

[keystone_authtoken]

auth_host = 127.0.0.1

auth_port = 35357

auth_protocol = http

admin_tenant_name = service

admin_user = glance

admin_password = openstack

[paste_deploy]

flavor=keystone

glance-registry.conf的修改如下:

[DEFAULT]

verbose = True

debug = True

sql_connection = mysql://glanceuser:openstack@localhost/glance

[keystone_authtoken]

auth_host = 127.0.0.1

auth_port = 35357

auth_protocol = http

admin_tenant_name = service

admin_user = glance

admin_password = openstack

[paste_deploy]

flavor=keystone

(2)创建Glance数据库
根据上面配置文件中设定的sql_connection,在数据库中创建用户名为glanceuser,密码为openstack。创建数据库glance,赋予glanceuser对数据库glance的所有权限,其代码如下:

 # mysql -uroot -p -e "CREATE DATABASE glance;"

# mysql -uroot -p -e "GRANT ALL PRIVILEGES ON glance.* TO 

 glanceuser@localhostIDENTIFIED BY openstack;"

(3)在Keystone中,创建Glance的用户、服务和Endpoint
在这个测试安装中,Glance需要通过Keystone来进行用户的身份认证。我们已经在前面的glance-api和glance-registry配置文件中设置了认证的用户等,现在必须在Keystone中创建用户glance,加入service这个tenant,赋予admin的角色,其代码如下:

# keystone tenant-create --name=service

# keystone user-create --name=glance --pass=openstack

# keystone user-role-add --user glance --role admin --tenant service

在Keystone通过用户验证后,因为需要知道Glance的服务和Endpoint API,所以必须在Keystone创建,其代码如下:

# keystone service-create --name glance --type image --descriptionOpenStack

 Image Service 

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| description | OpenStack Image Service |

| id | 7bedcd5298d5404bbc82219f61372c1d |

| name | glance |

| type | image |

+-------------+----------------------------------+

# keystone endpoint-create --service-id

 7bedcd5298d5404bbc82219f61372c1d –publicurl

 http://10.10.101.10:9292--adminurl

 http://10.80.80.10:9292/ --internalurl 

 http://10.80.80.10:9292/

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| adminurl | http://10.80.80.10:9292/ |

| id | b44b36a8c8c5406887f3d0a6d819b57d |

| internalurl | http://10.80.80.10:9292/ |

| publicurl | http://10.10.101.10:9292 |

| region | regionOne |

| service_id | 7bedcd5298d5404bbc82219f61372c1d |

+-------------+----------------------------------+

两条命令的service id必须一致。
(4)初始化Glance数据库,启动服务,确认服务正常运行
使用glance-manage命令,初始化glance数据库,其命令如下:

# glance-manage db_sync

重启服务,查看/var/log/glance目录下的日志文件,确保启动后没有出错信息。也可以在glance-api.conf和glance-registry.conf中设置debug和verbose为True,来得到更多的日志信息。重启代码如下:

# service glance-api restart

# service glance-registry restart

最后,确认一下服务是否运行,其代码如下:

# service glance-api status

# service glance-registry status

# glance image-list

(5)在Glance中添加虚拟机镜像
到此为止,Glance的环境已经搭建好,但是Glance中还没有可用的镜像,只是可以用来启动虚拟机的模板。模板可以自己创建,具体创建的方法将会在第6章详细介绍。在这个测试安装中,为了方便,使用网络上一个精简的可启动的Linux系统作为模板。首先下载这个小镜像,其代码如下:

# wget http://download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-disk.img

使用Glance命令行客户端把镜像添加到Glance中。Glance会在数据库中记录,并把文件复制到指定的目录,其代码如下:

# glance image-create --name myFirstImage --is-public true --container-format bare

 --disk-format qcow2 --file cirros-0.3.1-x86_64-disk.img

再次运行“glance image-list”命令查看已上传的镜像,其代码如下:

# glance image-list

+--------------------------------------+--------------+-------------+------------------+----------+--------+

| ID | Name | Disk Format | Container Format | Size | Status |

+--------------------------------------+--------------+-------------+------------------+----------+--------+

| d56d2ae1-2f8e-4801-ac06-b9e0ce7af6da | myFirstImage | qcow2 | bare | 13147648 | active |

+--------------------------------------+--------------+-------------+------------------+----------+--------+

4.?安装Neutron网络组件
Neutron在整个OpenStack中负责网络部分的功能,其实Neutron仅仅只有管理功能,实际的网络方面的实现依靠的是更加底层的网络技术,譬如Linux网桥、Open vSwitch和Nicira等,在Neutron中,这些网络技术以plugin的形式使用。因此,在各个节点上,需要安装Neutron的不同服务,才能形成一个真正的网络组件。
在Grizzly版本发布以后,网络组件改名为Neutron,以前叫做Quantum,因此,当看到有的文档或者安装过程提到Quantum的时候,其实指的就是Neutron。
在控制节点上,需要主要进行以下几个步骤:
安装neutron-server服务,修改配置文件。
在Keystone中创建用户、服务和Endpoint。
在MySQL中创建数据库和用户。
(1)安装软件包,修改配置文件
Neutron的软件包按照功能可以划分为多个,在控制节点,只需要安装neutron-server的服务。同时,依赖会安装neutron-plugin-openvswitch。其代码如下:

# apt-get install -y neutron-server

修改配置文件,主要是设定Keystone认证和Neutron数据库,其代码如下:

# vi /etc/neutron/neutron.conf

[keystone_authtoken]

auth_host = 127.0.0.1

auth_port = 35357

auth_protocol = http

admin_tenant_name = service

admin_user = neutron

admin_password = openstack

signing_dir = $state_path/keystone-signing

[database]

connection = mysql://neutronuser:openstack@localhost/neutron

[DEFAULT]

# 如果用户设置了RabbitMQ的默认guest密码,那么必须去掉这一行的注释,写入自己设定的密码

rabbit_password = guest

ovs_neutron_plugin.ini配置文件代码如下:

# vi /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini

[OVS]

tenant_network_type = gre

enable_tunneling = True

tunnel_type = gre

tunnel_id_ranges = 1:1000

[securitygroup]

firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver

[database]

connection = mysql://neutronuser:openstack@10.80.80.10/neutron

(2)创建用户、服务和Endpoint
在Keystone中创建用户、服务和Endpoint,其代码如下:

# keystone user-create --name=neutron --pass=openstack

# keystone user-role-add --user neutron --role admin --tenant service

# keystone service-create --name neutron --type network --description 

 OpenStack Networking service

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| description | OpenStack Networking service |

| id | 7dc990a812874042bc96a1ca983ede1a |

| name | neutron |

| type | network |

+-------------+----------------------------------+

# keystone endpoint-create --service-id 7dc990a812874042bc96a1ca983ede1a --publicurl 

 http://10.10.101.10:9696/ --adminurl 

 http://10.80.80.10:9696/ --internalurl 

 http://10.80.80.10:9696/

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| adminurl | http://10.80.80.10:9696/ |

| id | 1b67e73564fc4f6087fd90aed723d8a4 |

| internalurl | http://10.80.80.10:9696/ |

| publicurl | http://10.10.101.10:9696/ |

| region | regionOne |

| service_id | 7dc990a812874042bc96a1ca983ede1a |

+-------------+----------------------------------+

(3)创建Neutron数据库和用户
因为Neutron的数据库会被其他节点连接,所以必须赋予Neutron数据库用户相应的权限,使neutronuser不但能从本机连接,还要能从节点机器上连接控制服务器上的数据库,其代码如下:

# mysql -uroot -p -e "CREATE DATABASE neutron;"

# mysql -uroot -p -e "GRANT ALL PRIVILEGES ON neutron.* TO 

 neutronuser@%IDENTIFIED BYopenstack;"

# mysql -uroot -p -e "GRANT ALL PRIVILEGES ON neutron.* TOneutronuser@

 localhostIDENTIFIED BYopenstack;"

5.?安装Nova组件
Nova项目中虽然包含了很多组件,但是要在控制服务器上安装除去nova-compute的其他一切Nova组件。其过程主要分为下面几步:
安装Nova软件包,设置Nova配置文件。
创建数据库,初始化Nova数据库。
在Keystone中创建Nova用户和Endpoint。
1)安装Nova软件包,并配置相应文件,命令如下:

# apt-get install -y nova-api nova-cert novnc nova-consoleauth nova-scheduler 

 nova-novncproxy nova-doc nova-conductor

Nova的配置文件放在/etc/nova目录下,这次安装中需要修改的是api-paste.ini和nova.conf这两个文件。
api-paste.ini中要修改的是认证部分,其代码如下:

# vi /etc/nova/api-paste.ini

[filter:authtoken]

paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory

auth_host = 127.0.0.1

auth_port = 35357

auth_protocol = http

admin_tenant_name = service

admin_user = nova

admin_password = openstack

signing_dir = /var/lib/nova/keystone-signing

auth_version = v2.0

Nova几乎全部的配置都是写在nova.conf中的,其中选项参数很多,这里,笔者将列出一份测试环境安装使用的nova.conf配置文件以供参考。

 # vi /etc/nova/nova.conf

[DEFAULT]

logdir=/var/log/nova

state_path=/var/lib/nova

lock_path=/run/lock/nova

verbose=True

debug=True

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

compute_scheduler_driver=nova.scheduler.simple.SimpleScheduler

rabbit_host=10.80.80.10

rabbit_password=guest

nova_url=http://10.80.80.10:8774/v1.1/

sql_connection=mysql://novauser:openstack@10.80.80.10/nova

root_helper=sudo nova-rootwrap /etc/nova/rootwrap.conf

enabled_apis=ec2,osapi_compute,metadata

# Auth

use_deprecated_auth=false

auth_strategy=keystone

# Imaging service

glance_api_servers=10.80.80.10:9292

image_service=nova.image.glance.GlanceImageService

# Vnc configuration

novnc_enabled=true

novncproxy_base_url=http://10.10.101.10:6080/vnc_auto.html

novncproxy_port=6080

vncserver_proxyclient_address=10.80.80.10

vncserver_listen=10.80.80.10

# Network settings

network_api_ >

2)创建并初始化Nova数据库,命令如下:

# mysql -uroot -p -e "CREATE DATABASE nova;"

因为Nova数据库也需要其他节点连接,所以必须赋予从localhost和其他节点连接的权限,代码如下:

# mysql -uroot -p -e "GRANT ALL PRIVILEGES ON nova.* TO novauser@% IDENTIFIED BY

 openstack;"

# mysql -uroot -p -e "GRANT ALL PRIVILEGES ON nova.* TO novauser@localhost

 IDENTIFIED BYopenstack;"

初始化Nova数据库的表结构:

# nova-manage db sync

修改配置文件和初始化数据库后,需要重启Nova所有安装的服务,其代码如下:

# cd /etc/init.d/; for i in $( ls nova-* ); do sudo service $i restart; done

用如下命令查看Nova服务的状态,:-)表示服务运行,XXX表示服务停止。也可以查看/var/log/nova下的各个日志文件是否有出错日志。如果有出错日志和XXX显示,那么必须排查错误。错误很可能出现在nova.conf配置文件上。在进行下一步前,必须确保服务正常运行,其代码如下:

# nova-manage service list

3)在Keystone中创建Nova用户和Endpoint,示例如下:

# keystone user-create --name=nova --pass=openstack

# keystone user-role-add --user nova --role admin --tenant service

# keystone service-create --name nova --type compute --descriptionOpenStack 

 Compute Service

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| description | OpenStack Compute Service |

| id | bc4873dd598a4f23a2a61b225914efe4 |

| name | nova |

| type | compute |

+-------------+----------------------------------+

# keystone endpoint-create --service-id bc4873dd598a4f23a2a61b225914efe4 –publicurl

 http://10.10.101.10:8774/v2/$(tenant_id)s --adminurl 

 http://10.80.80.10:8774/v2/$(tenant_id)s --internalurl 

 http://10.80.80.10:8774/v2/$(tenant_id)s

+-------------+-------------------------------------------+

| Property | Value |

+-------------+-------------------------------------------+

| adminurl | http://10.80.80.10:8774/v2/$(tenant_id)s |

| id | e15110d5150247ef88f126ad2ea445ed |

| internalurl | http://10.80.80.10:8774/v2/$(tenant_id)s |

| publicurl | http://10.10.101.10:8774/v2/$(tenant_id)s |

| region | regionOne |

| service_id | bc4873dd598a4f23a2a61b225914efe4 |

+-------------+-------------------------------------------+

运行Nova的客户端命令,列出当前可用的镜像,测试是否能正常运行,其代码如下:

# nova image-list

+--------------------------------------+--------------+--------+--------+

| ID | Name | Status | Server |

+--------------------------------------+--------------+--------+--------+

| aae5f478-a8d4-4f56-8fb6-03c8e849f009 | myFirstImage | ACTIVE | |

+--------------------------------------+--------------+--------+--------+

6.?安装Cinder
Cinder有三个组件服务:cinder-api、cinder-scheduler、cinder-volume。要在控制节点上安装cinder-api和cinder-scheduler,其中cinder-api负责接收其他组件或命令对cinder-volume的请求,而cinder-scheduler则是Cinder的调度程序,调度使用哪个volume。
(1)安装和配置
命令如下:

# apt-get install -y cinder-api cinder-scheduler

配置Keystone认证文件,其代码如下:

# vi /etc/cinder/api-paste.ini

[filter:authtoken]

paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory

auth_host = 127.0.0.1

auth_port = 35357

auth_protocol = http

admin_tenant_name = service

admin_user = cinder

admin_password = openstack

signing_dir = /var/lib/cinder/keystone-signing

# vi /etc/cinder/cinder.conf

[DEFAULT]

rootwrap_config = /etc/cinder/rootwrap.conf

api_paste_confg = /etc/cinder/api-paste.ini

iscsi_helper = tgtadm

volume_name_template = volume-%s

volume_group = cinder-volumes

verbose = True

auth_strategy = keystone

state_path = /var/lib/cinder

lock_path = /var/lock/cinder

volumes_dir = /var/lib/cinder/volumes

rabbit_password = guest

[database]

connection = mysql://cinderuser:openstack@localhost/cinder

(2)创建数据库和Keystone用户
创建和cinder.conf中connection变量一致的数据库用户名及密码,其代码如下:

# mysql -uroot -p -e "CREATE DATABASE cinder;"

# mysql -uroot -p -e "GRANT ALL PRIVILEGES ON cinder.* TO cinderuser@localhost

 IDENTIFIED BY openstack;"

# mysql -uroot -p -e "GRANT ALL PRIVILEGES ON cinder.* TO cinderuser@%

 IDENTIFIED BY openstack;"

初始化数据库cinder表结构:

# cinder-manage db sync

在Keystone中添加cinder用户和服务的Endpoint,其代码如下:

# keystone user-create --name=cinder --pass=openstack

# keystone user-role-add --user cinder --role admin --tenant service

# keystone service-create --name=cinder --type=volume --description="Cinder 

 Volume Service"

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| description | Cinder Volume Service |

| id | fd43556d811a4822a615a75928d5969d |

| name | cinder |

| type | volume |

+-------------+----------------------------------+

# keystone endpoint-create --service-id=fd43556d811a4822a615a75928d5969d 

 --publicurl=http://10.80.80.10:8776/v1/%\(tenant_id\)s --internalurl=

 http://10.80.80.10:8776/v1/%\(tenant_id\)s --adminurl=

 http://10.80.80.10:8776/v1/%\(tenant_id\)s

重启Cinder服务,其代码如下:

# service cinder-api restart

# service cinder-scheduler restart

可以使用命令查看Cinder服务的状态,其代码如下:

# cinder-manage service list

Binary Host Zone Status

 State Updated At

cinder-scheduler controller nova enabled 

 :-) 2013-11-25 13:16:09

7.?安装Horizon
Horizon是OpenStack的一个Dashboard,也就是以网页形式面向用户的一个界面。通过Horizon,用户可以很方便地使用OpenStack,而不必使用烦琐的命令行。安装OpenStack的Dashboard的过程很简单,其命令如下:

# apt-get install -y openstack-dashboard memcached

安装好以后,就可以使用Web浏览器了,这里建议使用Chrome访问10.80.80.10/horizon。此处暂时可以使用用户名admin和密码OpenStack进行登录。这个界面是Ubuntu包装过的,如果想要用Horizon原来的界面,可以去除Ubuntu的界面,代码如下:

# dpkg --purge openstack-dashboard-ubuntu-theme

# service apache2 restart; service memcached restart

至此,可以打开Web浏览器,在地址栏里输入10.80.80.10/horizon,其中IP地址需更换成用户实际环境中的。此时,会看到OpenStack登录界面,使用用户名admin和密码OpenStack进行登录,如图2-2所示。
screenshot

在Keystone中创建Member角色,因为Horizon中会用到这个角色,其代码如下:

# keystone role-create --name Member


Ubuntu系统上All-in-one部署OpenStack 虚拟机软件:VMware Workstaion12 操作系统:Ubuntu14.04 1、修改Ubuntu14.04的apt源为国内的阿里源: cp /etc/apt/sources.list /etc/apt/sources.